Android的monkey测试、压力测试
money可以进行自动化压力测试,他会随机给手机发送指令(包括所有触屏操作,按键(电源键、音量键)操作)。
不说多的了,直接来。
其实也很简单,首先要保证手机是连接电脑了的。
第一步 win+r 打开cmd界面 输入adb shell
第二部 输入 monkey -p com.uyac.elegantlife.tt -v 500 这样就可以了 你会发现有趣的事情发生在你手机上。
注意:adb shell 可能进入不成功,多试几次。
-p 后面接包名 -v 后面接你要随机的次数
次数尽量在500次以上,速度很快,次数低了可能看的不那么明显。
再来看下monkey的帮助信息,
来几个进阶的
打印详细的输出日志
-v
因为monkey会执行较长时间 那怎么停止monkey呢?
1.打开一个新的命令窗口。
2.输入 adb shell 后,再输入 ps | grep monkey
3.找到pid后(这里是14570),kill 掉pid. 这样就停止掉monkey了。
一、常见用法:
场景1:对 包名为com.noahedu.intelligentguidestudy的应用做15000000次测试,时间间隔为300毫秒(打印到终端)。
adb shell monkey -s 201902061031 -p com.noahedu.intelligentguidestudy --throttle 300 --pct-syskeys 0 --pct-anyevent 0 -v 15000000
场景2:日志保持到sdcard,方便保存信息和查看。
adb shell "monkey -s 201810110022 -p com.noahedu.intelligentguidestudy --throttle 300 --pct-syskeys 0 --pct-anyevent 0 -v -v -v 5000000 1> /sdcard/lll_mk_10_2801.txt 2>/sdcard/lll_err_190523.txt"
场景3:整机monkey
adb shell monkey -s 201902061031 --throttle 300 --pct-syskeys 0 --pct-anyevent 0 -v 15000000
场景4:多应用同时做monkey
adb shell "monkey -s 201810061010 -p com.noahedu.magichanzicollege -p com.noahedu.magichanzicard --throttle 100 --pct-syskeys 0 --pct-anyevent 0 -v -v -v 15000000 1> /sdcard/magichanzicollege_mk_12_261.txt 2>/sdcard/magichanzicollege_err_12_262.txt"
场景5:忽略错误(正常出现crashmonkey会终止,忽略后还会继续monkey,检测内存泄漏性能等问题)
adb shell monkey -s 201810091001 -p com.ysyx.launcher --throttle 10 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 5000000 > D:\MonkeyTest\launcher\tv_laucher_V1.0.9_20181009_1.txt
场景6:加入--pct-syskeys 0 --pct-anyevent 0 (防止monkey的时候按音量键,把办公室变成菜市场
)
adb shell monkey -s 201810061031 -p com.noahedu.teachingvideo --throttle 300 --pct-syskeys 0 --pct-anyevent 0 -v -v -v 15000000 > D:\analysis\tv_tea_V1.0.9_20190522_1.txt
二、参数解析:
* throttle 间隔多少毫秒再次点击
* ignore-crashes 忽略crash,当发生应用奔溃时继续monkey测试
* ignore-timeouts忽略超时
* ignore-security-exceptions忽略安全异常
* monitor-native-crashes跟踪本地方法的崩溃问题,so库中的问题
* -p指定测试的应用包名
* -v -v -v 详细信息
* 1000 点击的次数
* 1> 将monkey测试的普通的报告重定向(输出到D盘)到D盘normal.txt
* 2> 将奔溃日志重定向到D盘error.txt
* 注意: 1> 2>为固定写法,切勿修改,标准流与错误流分开保存
三 、停止monkey:( grep是linux下的命令,windows用findstr)
adb shell ps | findstr monkey
adb shell kill 6842
四、测试结果分析:
Monkey测试的log分析,我们可以通过几个关键词来判断测试是否通过。
1)Monkey finished
打开LOG,查看log的最下端,是否有类似以下字段:
## Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)
// Monkey finished
这个字段表明本次的Monkey没有异常,测试通过。
2)CRASH
同样,在得到LOG后,搜索”CRASH”字段,如果搜索到有结果,则表明有进程出现问题,测试不通过。
// CRASH: com.onekchi.downloadmanager (pid 12919)
3)ANR
在Log中搜素该字段,如果有搜索有结果,则表示测试过程中,测试对象出现了无响应的现象,因此测试不通过。--throttle <毫秒>值建议为500
4)无法搜索到上述信息
出现这种情况,一般都是外界原因而非程序本身原因。比如电脑异常测试中断,需要重新测试。
(1)、ANR问题(程序无响应):在日志中搜索“ANR"(application no response)
(2)、闪退问题:在日志中搜索"crash"
(3)、异常:搜索"exception"
(4)、强制退出:搜索"force closed"
如何避免monkey压力测试自动关闭WiFi
办法1:将手机root后,使用下述命令先关闭WiFi,再打开WiFi; 最后再开始执行monkey测试命令
adb shell svc wifi disable
adb shell svc wifi enable
使用上述命令后,暂未发现monkey会再次自动关闭WiFi的现象
办法2:monkey测试时,用命令控制,Monkey测试的比例,将 --pct-touch 比例设置为100%,就会自动禁止掉滑动操作(如果要测试的应用没有滑动操作),就不会拉出状态栏,关闭WiFi等。
参考:
Android自动化压力测试图解教程——Monkey工具_android民工-CSDN博客_安卓压力测试工具
Android 程序员必须掌握的三种自动化测试方法 - 希尔瓦娜斯女神 - 博客园
https://developer.android.com/topic/libraries/testing-support-library/index.html?hl=zh-CN