noahedu:Android的monkey测试、自动化压力测试 2024-04-04 03:26:42 0 0 Android的monkey测试、压力测试 money可以进行自动化压力测试,他会随机给手机发送指令(包括所有触屏操作,按键(电源键、音量键)操作)。 不说多的了,直接来。 其实也很简单,首先要保证手机是连接电脑了的。 来几个进阶的 打印详细的输出日志 -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 APP压力稳定性测试之Monkey入门 - 吃个鱼丸 - 博客园 事件数目较大,执行过程中如何停止Monkey测试_u010056063的博客-CSDN博客 收藏(0)