• App压力稳定性测试之Monkey


    一、Monkey简介

    Android系统自带monkey程序,模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

    Monkey的使用是在产品稳定了,没有特别多的Bug时候。用monkey去测试待测应用的稳定性、健壮性(是否会发生闪退、崩溃),手机出厂前的整机测试。Monkey犹如其猴子的译名,就是杂乱无章的乱点,通过指定执行点击次数,不断的点击安卓系统,或者指定的App,给系统产生压力。

    注意:在使用Monkey之前,需要利用adb将PC端与安卓设备连接。

    二、monkey常见命令

    1.1、调出说明手册

    命令:adb shell monkey –help或者-h

    这个命令可以查看monkey使用的说明,如下:

     

    1.2、monkey基本命令格式:adb shell monkey {+命令参数} [执行事件次数]   

    例如:adb shell monkey -v 100

    命令参数例如:-p,-v,-c   事件:一个点击、一个回退,等就是一个事件

    1.3、命令参数

    注意:所有的参数都需要放在monkey和设置的事件次数之间,参数的顺序可以调整;若带了-p ,-p最好放在monkey之后。

    例:adb shell monkey -p <包名> --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v -s 300 500

    1.3.1、打印日志等级

    -v: 用于指定反馈信息级别(信息级别就是日志的详细程度)。

    总共分3个级别;

    一级:-v                //默认级别,仅提供启动、测试完成和最终结果等少量信息

    二级:-v –v          //提供较为详细的日志,包括每个发送到Activity的事件信息

    三级:-v -v -v      //提供最详细的日志,包括了测试中选中/未选中的Activity信息

    例如:adb shell monkey -v -v -v 100

    1.3.2、指定测试App

    -p <App包名> :增加App的包名时,可以只针对该App进行压力测试;

    包名可同时添加多个,同时对多个App测试;

    不加"-p <App包名>"时,则对安卓系统进行测试。

    例:1)对一个App测试

    adb shell monkey -p com.tecent mobileqq -v -v -v 300

    2)对两个App进行测试

    adb shell monkey -p com.lemon.lemon -p com.tecent mobileqq -v -v -v 300

    1.3.3、seed值

    -s  用于指定随机数生成器的seed值;

    如果前后两次使用monkey时seed值相同,测两次monkey测试所产生的事件序列也相同。用于问题重现;

    seed值相当于执行顺序,可以是300、400等。但是遇到问题,需要再次使用monkey复现问题时,seed必须相同。可以直接运行上一次的命令。

    格式:adb shell monkey -p <包名> -v -v -v -s <seed值> [执行事件次数]

    例:adb shell monkey -p com.tecent mobileqq -v -v -v -s 400 1000

    【400:seed的值,1000:执行事件次数】  【复现同一问题时,将此命令重新输一遍】

    1.3.4、操作时延

    --throttle <毫秒> 用于指定用户操作(即事件)间的时延,单位是毫秒。

    例如:时延为1秒,在执行点击事件后等1秒在进行回退事件。

    格式:adb shell monkey -v -v -v -p <包名> -s <seed值> --throttle 1000 [执行事件次数]

    例:adb shell monkey -v -v -v -p com.tecent mobileqq -s 300 --throttle 1000 500      【--throttle 1000指时间间隔为一秒】

    1.3.5、忽略超时和崩溃

    monkey测试的过程中遇到crash(崩溃)或者timeout(超时)的情况时,会停止测试。如果想在遇到crash或者timeout时继续运行指令,需要加--ignore-crashes --ignore-timeouts将crash和timeout忽略掉。

    格式:adb shell monkey -p <包名> --throttle 1000 --ignore-crashes --ignore-timeouts -v -v -v -s 300 500

    三、日志导出

    Monkey执行过程中产生异常时,需要把日志导出,将异常信息找出。

    1、直接将日志打印至PC端

    命令:adb shell monkey -p <包名> -v -v -v [执行事件次数] > <PC端存放目录>

    可以在执行monkey过程中,直接将日志存放至PC端。

    例:adb shell monkey -p <包名> -v -v -v 200 D:log.txt

    2、执行完monkey之后导出日志

    命令:adb logcat –v time > D: log.txt  拉取的日志自带时间

    3、日志定位

    当日志生成后,我们需要进入日志当中查看是否有APP崩溃记录或者无响应记录。

    查找关键字:

    A、崩溃记录查找”CRASH”;

    B、无响应记录查找”ANR”;

    C、内存泄露问题搜索"GC"(需进一步分析);

    D、异常问题搜索“Exception”;

     

  • 相关阅读:
    第九周学习进度总结
    SLR(1)语法分析(JAVA实现)
    算符优先分析
    第八周学习进度总结
    Android 自学之相对布局 RelativeLayout
    Android 自学之表格布局 TableLayout
    Android 自学之线性布局 LinearLayout
    Android 自学之帧布局 FrameLayout
    机器学习进度05(FaceBook案例)
    机器学习进度04(转换器、预估器、K-近邻算法、模式选择与调优)
  • 原文地址:https://www.cnblogs.com/zdx20/p/12630971.html
Copyright © 2020-2023  润新知