Android测试工具之monkey小结
一.Monkey
1.monkey简介
这个工具是最简单的,主要用来做app压力测试,所谓压力测试就是乱点以模拟各种各样奇怪的操作看app能不能抗的住。或者可以帮助找出app的一些隐藏极深的bug。非常简单且作用也非常有限,通常通过跑monkey后打印出来的日志分析来发现问题。
2.monkey最常用命令
2.1、
$ adb shell monkey -p com.jollycorp.jollychic -v 1000
应用模拟用户随机操作,无延迟点击1000次。
其中参数-p用来指定参数,指定一个或多个包;参数-v 设置日志级别(默认一个-v),如需更详细的日志可以加多个-v,最多3个,如monkey -p com.jollycorp.jollychic -v -v -v 1000 \\3个-v,输出最详细的日志。
2.2、
adb shell monkey -p com.jollycorp.jollychic --throttle 500 100 > F:\monkeylog\monkey.txt
其中参数--throttle指定随机事件间的时间间隔,单位是毫秒,一般用500;最终把操作后的日志输出到电脑上的F:\monkeylog\monkey.txt。
2.3、
Monkey 测试1:adb shell monkey -p com.jollycorp.jollychic -s 10 100
Monkey 测试2:adb shell monkey -p com.jollycorp.jollychic -s 10 100
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。如上面的Monkey测试1和2,两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。注意:seed值一般设为小于1000。
2.4、
adb shell monkey -p com.jollycorp.jollychic -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > F:\monkeylog\monkey_10000.txt
--ignore-crashes忽略崩溃,继续测试,若不做此限制,monkey测试出现崩溃时会自动停止测试;
同理,在中间插入控制命令如下:
--ignore-timeouts 忽略连接超时
--ignore-security-exceptions忽略在应用程序发生许可证错误(认证或证书异常),
--kill-process-after-error在应用程序出现错误后,将会通知系统停止发生错误的进程
--monitor-native-crashes监视并报告Android系统中本地代码的崩溃事件,如果设置”--kill-process-after-error”参数,系统将停止运行该进程
--ignore-native-carshes忽略本地代码导致的崩溃
2.5、
adb shell monkey -p com.jollycorp.jollychic -s 500 --throttle 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 10000 > F:\monkeylog\monkey_10000.txt
一次可行的monkey测试实例,具体作用供分析研究。
3.monkey日志简介
3.1、Monkey finished
打开LOG,查看log的最下端,是否有类似以下字段:
## Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished
这个字段表明本次的Monkey没有异常,测试通过。
3.2、CRASH
同样,在得到LOG后,搜索”CRASH”字段,如果搜索到有结果,则表明有进程出现问题,测试不通过。
// CRASH: com.onekchi.downloadmanager (pid 12919)
3.3、ANR
在Log中搜素该字段,如果有搜索有结果,则表示测试过程中,测试对象出现了无响应的现象,因此测试不通过。--throttle <毫秒>值建议为500
3.4、无法搜索到上述信息
出现这种情况,一般都是外界原因而非程序本身原因。比如电脑异常测试中断,需要重新测试。
参考文档:
http://developer.android.com/intl/zh-cn/tools/help/monkey.html
http://blog.csdn.net/cxq234843654/article/details/47153345