Monkey 测试使用大量随机操作对 App 进行压力测试。
本文基于 openSuse + Lenovo A5500 为例,介绍如何进行 Monkey 测试。
准备
- 首先你要有一部 Android 手机;
- 然后你要有一台电脑,强烈推荐使用 GNU/Linux ;
- 安装待测 App F-Droid ,它是一款开源软件,用来下载和更新开源软件。
- 启用手机的开发者模式并连接至电脑。
- 获取待测 App 的包名
-
adb shell pm list packages
命令可获取所有已安装的 App 的包名。 - F-Droid 的包名为
org.fdroid.fdroid
-
执行
adb shell #在本机执行
monkey -p org.fdroid.fdroid -v 50 #在手机 shell 中执行,对F-Droid做50次操作
要想取得好的效果,需要对 monkey 命令的参数进行细致的调整,给出一例:
monkey -p org.fdroid.fdroid --monitor-native-crashes --pct-touch 80 --pct-motion 15 --pct-nav 5 -s 900 -v --throttle 200 5000
执行后发现的一处ANR:
// NOT RESPONDING: org.fdroid.fdroid (pid 17726)
ANR in org.fdroid.fdroid (org.fdroid.fdroid/.AppDetails), time=18200186
Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 7. Wait queue head age: 8622.1ms.)
更多使用方式可以使用monkey –help
了解。
补:中断测试
从本机发起的 Monkey 测试,即使命令中断,手机端还是会执行。
adb shell
连入手机后ps |grep monkey
查看进程号杀死即可。
问题
- 测试时会下滑拉出状态栏,导致关闭网络。
- 测试时出现手机假变砖,进入
adb shell
后执行reboot
后恢复,测试有风险,入行需谨慎,请仅在使用公司手机时大胆尝试≖‿≖✧。