本文章转载于搜狗测试
上一篇已经向大家介绍了什么是monkey以及monkey运行环境的搭建,本文主要向大家介绍一下monkey命令的参数以及实例解析一个可以循环进行压力测试并且记录崩溃信息的monkey脚本。
一、Monkey命令参数
Monkey常用命令参数如下:
参数:
-v :用于指定反馈信息级别(信息级别就是日志的详细程度),可以在命令行中出现多次,每一个-v选项都会增加monkey向命令行打印输出的详细级别。总共分3个级别:命令行中出现一个-v表示仅提供启动提示、测试完成和最终结果等少量信息;命令行中出现两个-v表示提供较为详细的日志,包括每个发送到Activity的事件信息;命令行中出现三个-v表示最详细的日志,包括了测试中选中/未选中的Activity信息
-s :用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件也相同。
--throttle <毫秒>:用于指定事件之间的时延,单位是毫秒
--pct-touch<百分比>:设置触摸事件的百分比
--pct-motion<百分比>:设置滑动事件的百分比
--pct-trackball<百分比>:设置跟踪事件的百分比
--pct-nav<百分比>:调整“基本”导航事件的百分比(导航事件是来自方向输入设备的up/down/left/right组成)
--pct-majornav<百分比>:设置“主要”导航事件的生成比例。指能导致UI产生回馈的事件,ps:单击方向键中的中间键,back键,菜单键。
--pct--appswitch<百分比> :设置启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
--pct-anyevent<百分比> :设置系统按键消息的比例,系统中保留的按键消息,如:首页(home)、后退(back)、拨号、挂断、音量控制键
约束条件:
-p<允许的包名列表> :用于约束限制,用此参数指定一个或多个应用程序的包名
调试信息:
--hprof :设置此项,将在monkey事件序列之前和之后立即生成profilling报告,既性能报告。
--ignore-crashes :当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
--kill-process-after-error :这个选项可以通知系统当应用发生错误时杀掉进程。
-monitor-native-crashes :监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行。
--wait-dbg :启动monkey后,先中断其运行,等待调试器附加上来。
二、搜狗手机浏览器Monkey测试脚本举例
搜狗手机浏览器会经常使用到monkey脚本进行应用的压力测试,执行批处理文件后会将崩溃log统计在特定的目录下,第二天上班时测试人员将崩溃log进行分析并报bug给开发。生成批处理执行文件的python脚本源码地址:https://github.com/sogouauto/sogouqa/blob/master/Python/monkey%20cmd.py
运行上述Python脚本后的操作步骤如下:
1.首先需要pc端已安装python环境。
2. 手机连接电脑,运行python脚本。
3.脚本会检测到当前PC 链接了几台手机,如果只连接了一台就不需要选择设备,输入你要生成的批处理文件名。如下图:
4. 此时在和python脚本同目录下会生成”文件名.cmd”的批处理文件。
5. 运行批处理文件,开始monkey自动化稳定性测试。
6. monkey执行过程中的log信息会记录在D盘的根目录下并随机生成数字形式的文件名。
生成的monkey批处理脚本内容如下:
1、:loop
2、adb -s 4df1f87d5cfc5fbb shell monkey -p sogou.mobile.explorer --monitor-native-crashes --pct-touch 80 --pct-motion 15 --pct-nav 5 -s %random% -v --throttle 500 320000
>d:\1\%random%.log
3、@ping -n 15 127.1 >nul
4、adb -s 4df1f87d5cfc5fbb reboot
5、@ping -n 120 127.1 >nul
6、@goto loop
生成的批处理脚本说明:
1、设置循环标记
2、根据手机设备号选择对应的手机运行monkey脚本,此命令为monkey的操作命令,具体含义如下:
-p sogou.mobile.explorer:执行sogou.mobile.explorer程序包,在这里可以更 改要测试的应用程序包名。
--monitor-native-crashes:监控崩溃事件
--pct-touch 80 --pct-motion 15 --pct-nav 5:触屏事件占80%,动作事件占15% ,导航事件占5%。
-s %random%:如果-s后面的值相同,那么再次运行monkey时会生成相同的时间 序列,加上%random%,(%random%既生成一个0-32767之间的任一一个数,是为了避免进行重复的操作动作。
--throttle 500 320000: --throttle插入固定的延迟,通过这个参数用来减缓monkey的执行速度。
>d:\%random%.log:崩溃log的保存路径。
3、@ping -n 15 127.1 >nul:设置脚本运行的延迟时间
4、adb -s 4df1f87d5cfc5fbb reboot:重启设备
5、@ping -n 120 127.1 >nul:设置脚本运行的延迟时间
6、@goto loop:执行循环操作
上述批处理文件可以执行设定好的adb shell monkey命令,按照随机生成的事件序列进行压力测试,并将运行过程中遇到的崩溃信息记录到指定的文件夹中,崩溃后将重启设备,重新执行monkey命令;大家可以在生成的批处理文件中根据个人需求更改应用程序包名、log保存路径等,运行保存后的批处理文件就可以长时间的对应用程序进行稳定性测试了。