09- monkey命令详解
安装模拟器
如果你没有手机可以安装个模拟器,如果有手机了,忽略此步骤。
1.下载模拟器:http://www.xyaz.cn/
2.安装:直接默认安装。
3.打开安卓模拟器,设置-关于手机-点击版本号-进入开发者模式,勾选USB调试。
4.打开cmd窗口,进入模拟器安装目录,执行cmd命令:adb connect 127.0.0.1:62001
参考:https://www.cnblogs.com/xinjing-jingxin/p/9326837.html
Monkey是什么?
monkey是Android中附带的一个工具。可以运行在模拟器或者实际设备中。
它像系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等)实现对正在开发的应用程序进行压力测试。
monkey测试的目的是什么?
1.进行压力测试
2.然后开发人员结合monkey打印的日志和系统打印的日志,发现测试中出现的问题。
monkey测试的特点
monkey测试,所有的事件都是随机产生的,不带任何主观性。
monkey的组成:
1.基本配置选项,如设置尝试的事件数量。
2.运行约束选项,如设置值对单独的一个包进行测试
3.事件类型和频率
4.调试选项。
压力测试要从两个点开始:
1.CRASH:奔溃,闪退。
2.ANR:无响应
monkey的工作原理
monkey运行的时候,他生成伪随机事件流,并把他们发给系统。同时,monkey还对测试中的系统进行监控,并进行特殊处理(比如:自动停止)
如果应用程序崩溃或接收到任何失控异常,monkey将停止并报错。
如果应用程序产生了应用程序不响应(application not responding)的错误,monkey将会停止并报错。
按照选定不同级别的反馈信息,在monkey中还可以看到其执行过程报告和生成的事件。
monkey命令运行
开始》运行》cmd
USB连接手机,输入adb shell monkey命令 :就会列出monkey命令参数
adb shell monkey 20 :随机执行20次
adb shell monkey -p 程序包 -v 测试次数(其中程序包可以通过pm list packages显示所有的程序包)
例子:adb shell monkey -p com.taobao.taoboa -v 100 :对淘宝这个程序包进行100次的monkey测试。
日志的获取:
为了方便分析问题,也可以将日志信息重定向到文件中。
monkey -p 包名 -v 2000 >D1.Ttxt
monkey命令行参数-P
指定多个包:
monkey -p 包名1 -p包名2
不指定包:monkey 100
说明:monkey随机启动APP并发100个随机事件。
monkey命令行参数 -v
参数:-v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分三个级别,对应如下:
日志级别 level 0
示例:monkey -p 包名 -v 100
说明:缺省值,仅提供启动提示,测试完成和最终结果等少量信息。
日志级别 level 2
示例:monkey -p 包名 -v -v 100
说明:提供较为详细的日志,包括每个发送到Activity的事件信息。
日志级别:level 2
示例:monkey -p 包名 -v -v -v 100
说明:最详细的日志,包括测试中选中/来选中的Activity信息。
monkey命令行参数 -S
参数:-s
用于指定伪随机数生成器的seed值,如果seed相同,则两次monkey测试所产生的事件序列也是相同的。
monkey -p 包名 -s 10 100
monkey -p 包名 -s 10 100
两个测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成一系列操作,即一个序列)是一样的。操作序列虽然是随机生成,但是我们指定了相同的seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列到伪随机的。
monkey命令行参数 --throttle
参数:--throttle<毫秒>
用于指定用户操作(即事件)的时间延迟,单位是毫秒。
实例:
monkey -p 包名 --throttle 3000 100
向此应用发送100次伪随机事件,每次事件间隔3s。
monkey命令行参数 -ignore
参数: --ignore - crashes
用于指定当应用程序崩溃时(force&close错误),monkey是否停止运行。如果使用此参数,即使应用程序崩溃,monkey依然会发送事件,知道事件计数完成。
示例:
monkey 包名 -ignore -crashes 1000
测试过程中即使程序崩溃,monke依然会继续发送事件直到事件数目达到1000为止。
monkey命令行参数 -timeout
参数: --ignore -timeout
用于指定当应用程序发生ANR(application no responding)错误时,monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,monkey依然会发送事件,直到事件计算完成。
monkey测试结果分析步骤
重要命令:
crash:奔溃
ANR:无响应
[--ignore-crashes] [--ignore-timeouts]
100次:60次停止 。。。
操作上忽略,日志记录+系统日志:全部
[-s SEED] : 序列值
adb shell monkey -p com.taobao.taobao -s 450 -v
[-v [-v] ...]: 日志级别:一个 -v是一个级别 最多三个-v
throttle:打印文档的速率 throttle 3000 (单位是毫秒)
adb shell monkey -p com.taobao.taobao -s 450 -v --throttle 3000
日志的获取
monkey- p cn.com.pyc -v 20000>d:1.txt
monkey测试结果分析步骤
1.monkey结束以后,要查看是否遇到异常结束,如果log结束出现monkey aborted due to erro异常。
2.复现时,使用之前执行的monkey命令在执行一遍,注意seed值要一样。