安卓App压力测试 - Monkey的使用

Monkey是安卓开发工具包SDK自带的一个命令行工具,可用于安卓App的压力测试,其原理是通过命令行向手机发送随机事件的指令,随机事件包括点击,划屏和输入等操作,这些操作都是随机不可控的,可控的是需要操作的App,每次操作间隔的时间以及随机事件的次数等。

Monkey的使用步骤是:

  1. 安卓手机装好待测App,跟电脑连接,或者从SDK中打开安卓模拟器
  2. 打开命令行,输入adb start-server开启adb服务
  3. 输入adb devices测试手机连接是否正常 
    这里写图片描述
  4. 输入adb shell进入手机shell界面 
    这里写图片描述
  5. monkey -p {App包名} {次数} 
    第5步就是调用monkey命令对安卓App进行压力测试。 
    例如:monkey -p com.tencent.mobileqq 100 
    即对包名为com.tencent.mobileqq的App发送100次随机事件的命令,发送完成后手机会自动运行该App并进行一系列随机操作。 
    这里写图片描述

Monkey命令的扩展: 
monkey命令还可以带其它参数,如–throttle 150,这个参数表示每个随机事件之间的间隔时间为150毫秒。 
monkey -p com.tencent.mobileqq –throttle 150 100 
表示一百个随机事件,每个事件间隔时间150毫秒

还可以设置输出的log的级别,使用参数 -v 10,如果没有调用这个参数,默认是-v 0,也就是说除了启动App,提示测试完成和最终结果,没有其它详细信息了,这里不利于App崩溃原因的追踪。数值越大,log也就越详细。 
monkey -p com.tencent.mobileqq -v 10 100

如果想把运行的log保存到本地,可以不需要进入到shell界面中,直接用adb命令连起来写,例如: 
adb shell monkey -p com.tencent.mobileqq 100 > c:\monkey\test.txt 
这里写图片描述

查看该路径下面的文件 
这里写图片描述

查看txt文本文件 
这里写图片描述

一般来说,我们可以一次发送5万次随机事件的请求,每个请求之间间隔150毫秒,完成这个测试大概需要40分钟左右,完成以后就可以在设置的本地路径下面找到报告的文本文件,若出现App崩溃的问题,会有详细的log记录。 
这里写图片描述 
这里表示腾讯QQ在执行第9061次时间的时候发生了崩溃,我们只需要向App开发组提供这份log就可以去跟踪崩溃的原因了。

综上,我们做安卓压力测试的一个完整命令是 
adb shell monkey -p com.tencent.mobileqq -v 10 –throttle 150 50000 > c:\monkey\test.txt

另外有一个小彩蛋,在执行这个命令的时候,由于安卓手机可以下来打开通知栏,因手机的不同,播放音乐也会在通知栏里面,很可能会点到播放音乐,所以采用真机测试的时候,将手机调为振动或者无声吧,如果想制作气氛并且把放歌的责任推卸到monkey身上,请无视上面的建议。  还有其它的参数,比如设置点击屏幕,home键,back键,音量键,划屏和输入这些操作的比例,也可以实现,因为使用不太多,这里就不详细介绍了。