美文网首页
monkey测试步骤

monkey测试步骤

作者: gz_tester | 来源:发表于2019-07-23 11:42 被阅读0次

    1. 保持手机和电脑连接状态

    • 连接手机和电脑
    • 打开手机开发者模式
    • 电脑终端访问:adb devices 检查是否连接成功,出现设备编号代表连接成功
      image.png

    2. 获取需要测试的包名

    • 手机端打开需要测试的APP
    • 电脑终端访问:adb shell dumpsys window |grep mCurrent,获取包名
    image.png

    3. 根据命令执行脚本,并输出报告

    • --throttle: 作用:在事件之间插入固定的时间(毫秒)延迟,你可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。
      注:常用参数,一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件,所以此处一般设置为300毫秒。

    • --pct-touch:作用:调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)
      注:常用参数,此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。

    • --pct-motion:调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)。
      注:常用参数,需注意的是移动事件是直线滑动,下面的trackball移动包含曲线移动。

    • --throttle(毫秒)事件之间插入的固定延迟。通过这个选项可以减缓Monkey的执行速度。如果不指定,Monkey将尽可能快的产生并执行事件。

    • -s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

    • --ignore-crashes 忽略程序崩溃。设置此选项后,Monkey会执行完所有的事件,不会因crash而停止。

    • --ignore-timeouts 忽略程序无响应。设置此选项后,Monkey会执行完所有的事件,不会因ANR而停止。

    • --ignore-security-exceptions 忽略证书或认证异常。设置此选项后,Monkey会执行完所有的事件,不会因认证或证书异常而停止。

    • --ignore-native-crashes 监视系统中本地代码发生的崩溃

    • --monitor-native-crashes 忽略本地代码导致的崩溃。设置忽略后,Monkey将执行完所有的事件,不会因此停止。

    • -v -v –v 提供最详细的设置信息

    • 参考命令

    # 运行指定包,并输出报告
    adb shell monkey  -p com.zhihu.android -v 100 > /Users/monkey/zhihu1.log
    
    # 运行指定包,固定延迟300ms,触摸事件的百分比设置为50%,motion事件百分比设置为50%,输出两级报告到指定位置
    adb shell monkey  -p com.zhihu.android --throttle 300 --pct-touch 50 --pct-motion 50 -v -v 1000 > /Users/monkey/zhihu2.log
    
    # 运行指定包,设置相关事件信息,并忽略相关异常信息,输出测试报告
    adb shell monkey -s 0001  -p com.sd.tongzhuo --throttle 250 --pct-touch 55 --pct-rotation 30 --pct-motion 15 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes --kill-process-after-error -v -v -v 10000 > /Users/monkey/0723_monkey_xiaomi_01.log
    
    

    4. 检测adb logcat,并输出logcat报告

    • 一般来说我们需要打印两份报告,一份monkey报告,一份logcat报告
      adb logcat作用:把设备上的操作实时打印出来,比如app崩溃/异常,显示崩溃的原因,如空指针、参数错误、下标越界等。
    • 打开新窗口,执行:adb logcat > ~/Sunlands/monkey/0723_logcat_xiaomi_01.log
    • 执行monkey命令,同样保存日志
    • 待monkey结束后,ctrl+c中断log抓取

    5. 日志分析

    monkey日志报告

    1. monkey执行时未加--ignore-crashes --ignore-crashes参数,就先浏览日志中Events injected: 值,查看当前已执行的次数,就知道有无bug
    2. 程序无响应的问题:在日志中搜索 “ANR”
    3. 崩溃问题:在日志中搜索 “CRASH”
    4. 其他问题:在日志中搜索”Exception”

    logcat日志报告

    在logcat.log中搜索关键词GC,如果有下面四个中的一个,就可能存在内存泄露。
    1. GC_FOR_ALLOC, 因为在分配内存时内存丌够引发的
    2. GC_EXPLICIT, 表明GC被显式请求触发的,如System.gc调用
    3. GC_CONCURRENT, 表明GC在内存使用率达到一定的警戒值时,自动触发。
    4. GC_BEFORE_OOM, 表明在虚拟机抛出内存丌够异常OOM之前,执行最后一次回收内存垃圾
    如果是ANR问题

    搜索“ANR ”关键词(ANR后加个空格,屏蔽掉anr.log文件的无效信息) 。 快速定位到关键事件信息 。

    如果是ForceClosed 和其它异常退出信息

    搜索"Fatal" 关键词, 快速定位到关键事件信息 。
    定位到关键事件信息后 , 如果信息不够明确的,再去搜索应用程序包的虚拟机信息 ,查看具体的进程和线程跟踪的日志,来定位到代码 。

    参考文章:
    monkey获取包名
    Monkey命令
    Monkey 测试日志讲解
    Java 常见异常种类

    相关文章

      网友评论

          本文标题:monkey测试步骤

          本文链接:https://www.haomeiwen.com/subject/hxtolctx.html