九、App稳定性测试--Monkey

目录

1.Monkey是什么?

2.Monkey组成

3.Monkey测试的目的

4.Moneky运行环境搭建

5.Monkey执行前准备命令:

6.工作中具体使用

7.Moneky结果分析

8.Monkey执行的前提条件:

9.Monkey的bug描述


1.Monkey是什么?

  • Monkey是Android中附带的一个工具,可以运行在模拟器里或实际设备中。
  • 他向系统发送伪随机的用户事件流(如键盘输入、触摸屏输入、手势输入等),实现对正在开发的应用陈旭进行压力测试,存放在手机的/system/framework/

2.Monkey组成

  1. 基本配置选项,如设置测试的事件数量
  2. 运行约束选项,如设置只对单独的一个包进行测试
  3. 事件类型和频率
  4. 调试选项

3.Monkey测试的目的

  1. 进行压力测试
  2. 然后开发人员结合monkey打印的日志和系统打印的日志,发现测试中出现的问题。
  3. 特点:Monkey测试,所有的事件都是随机产生的,不带任何主观性。

4.Moneky运行环境搭建

  1. 下载sdk安装包配置sdk的环境变量,具体请参考https://editor.csdn.net/md/?articleId=100120319
  2. 下载JDK,配置JDK环境变量,具体请参考:https://mp.csdn.net/postedit/104103560

5.Monkey执行前准备命令:

  1. 打开手机的开发者调试工具,用usb数据线链接你的手机;
    1. 通过USB将手机连接电脑。
    2. windows+r 输入cmd进入dos命令行;
    3. 输入adb devices ;
    4. 再输入 adb shell pm list packages    查看你的手机所有的安装包;输入 adb shell pm list packages -3 查看手机上所有的第三方安装包,尽量让测试机少安装第三方软件,这样可以尽快的找到想要的安装包名称;
  2. Monkey命令
    1. adb shell monkey 400:对手机上任意应用进行随机操作
    2. adb shell monkey -p com.songqin.sqoa 400:对松勤OA进行400次事件的monkey测试
    3. adb shell monkey -p com.songqin.sqoa -p com.songiqn.sqjy 400 :对松勤OA和松勤教育共执行400次monkey测试,数量随机分配
    4. 结果如图:
      1. Event percentages(事件百分比):

        0:触摸事件百分比,参数--pct-touch

        1:滑动事件百分比,参数--pct-motion

        2:缩放事件百分比,参数--pct-pinchzoom

        3:轨迹球事件百分比,参数--pct-trackball

        4:屏幕旋转事件百分比,参数--pct-rotation

        5:基本导航事件百分比,参数--pct-nav

        6:主要导航事件百分比,参数--pct-majornav

        7:系统事件百分比,参数--pct-syskeys

        8:Activity启动事件百分比,参数--pct-appswitch

        9:键盘翻转事件百分比,参数--pct-flip

        10:其他事件百分比,参数--pct-anyevent

    5. [--throttle MILLISEC]:事件最大延迟时间  单位是毫秒:用于模拟用户操作间隔时间

    6. count(执行测试次数)

    7. [-v [-v] ...]:表示日志的详细程度 ,最多-v -v -v,一般用两个.

    8. [-s SEED]:种子值,序列号,作用

      1. 开发可以通过相同的seed值进行复现和解决bug

      2.  测试:可以通过相同的seed对bug进行验证

      3. 原则:项目开始执行monkey测试的时候到monkey测试结束的时候seed保持一致    

      4.  相同的seed值表示操作的动作和顺序是一致的

    9. [--ignore-crashes] [--ignore-timeouts] [--ignore-security-exceptions]

      1. 如果使用了该参数:在测试过程中如果遇到了crash.anr等情况,monkey是继续执行,直到事件次数结束.必要的情况下,是结束app的进程,重新打开接着开始

      2. 如果不使用该参数:测试过程中发生crash,anr等情况,Monkey测试就会停止,保持在发生问题的界面

    10.  --kill-process-after-error:测试中发生问题后,停止Monkey测试,保持在发生问题的界面 (一般用不到)

    11. [--monitor-native-crashes] :监控本地的crash,抓取由于执行过程中引起的手机上其他任意应用发生问题的记录            [--ignore-native-crashes]:忽略本地crash

    12. [--pct-touch PERCENT] [--pct-motion PERCENT]
      [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
      [--pct-nav PERCENT] [--pct-majornav PERCENT]
      [--pct-appswitch PERCENT] [--pct-flip PERCENT]
      [--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
      [--pct-permission PERCENT]
      设定执行过程操作事件百分比,一般情况下为默认.
          

6.工作中具体使用

  1. 命令:adb shell monkey -p  包名 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes -s 360 -v -v --throttle 450 350000 >D:\log\monkeylog.txt  
  2. 重定向--用于保存

7.Moneky结果分析

  1. Monkey的日志分析
    1. Monkey错误图片:
    2. 正常的结果:// Monkey finished      elapsed time=25352ms 共耗费时间
    3. crash:  //CRASH 包名 
    4. ANR:
              //NOT RESPONDING:包名
              ANR in 包名
    5. 异常中断:没有上述三种关键字显示
    6. 其他异常:关机:温度过高--->temperature/电量过低-->batterylevel=0
                       重启:Reboot:monkey测试中发生了问题:monkey中断/不中断/logcat停止了,手机亮屏
                       tcdump:黑底蓝字--->app测试中几乎没有
  2. adb logcat日志的分析:
    1. 两个cmd,一个执行monkey命令,一个执行adb logcat
    2. 命令:adb logcat -v  time >D:\log\logcat.txt
    3. 不会自动停止,只能第二天上班手动停止( ctrl+c)
  3. 步骤
    1. 先查看monkey结果,如果Monkey结果正常,那么都不用看了
    2. 如果Monkey结果也有问题,根据关键字,在logcat中搜索,查到响应的位置
      1. CRASH:logcat中显示为:fatal exception
      2. ANR:logcta中显示为:ANR
    3. 复制关键信息前后两行,附在bug的描述中
    4. .logcat日志打包附在bug的附件中

8.Monkey执行的前提条件:

  1. 手机设置常亮,锁屏关闭
  2. 电量在90以上
  3. 其他设置要设置好,wifi,数据网络,进程该关闭就关闭
  4. app登录,数据创造,必要的情况,打开app一个页面
  5. 执行命令之后少等一会,如果在可见之内发现退出账号,可以尝试换一个seed值操作

9.Monkey的bug描述

  1. 标题:[monkey][crash/anr/关机]XX应用执行monkey是发生FATAL EXCEPTION: main
  2. 前提:Monkey前提
  3. 步骤:
    1.连接手机
    2.执行命令:命令
    3.查看结果
    4.关键字:
    06-17 23:53:54.162 E/AndroidRuntime( 3375): FATAL EXCEPTION: main
    06-17 23:53:54.162 E/AndroidRuntime( 3375): Process: edu.yjyx.student, PID: 3375
  4. 实际结果:执行Monekey 发生xxxx
    预期结果:执行monkey,没有异常发生
发布了51 篇原创文章 · 获赞 4 · 访问量 8310

猜你喜欢

转载自blog.csdn.net/qq_44891948/article/details/104115200