软件测试教程:monkey压力测试

一、Monkey压力测试的原理1. adb shell monkey的运行机制
实际上是执行手机中/system/bin/monkey这个脚本;
2. Monkey事件注入机制Monkey注入系统事件是通过 framework 层的 hidenApi (如:activemanager,inputmanager,windowmanager) 获取系统服务 。
Monkey中有11种事件 , 这些事件在MonkeyEventSource中对事件之间的比例进行设置 。
Monkey事件根据类型比例生成事件队列 , 循环查找事件 。
a.触摸事件(inputmanager):包括屏幕以及物理键的触摸 , 滑动 , 点击事件
b.Activity事件(activemanager):是指我们调用Android系统组件的事件 。
c.Window事件(windowmanager):是指操作Window的事件 , 例如转屏
3.Monkey核心类
a. Monkey.JAVA, 程序的入口 , 根据参数选择合适的MonkeyEventSource , 并适时触发MonkeyEvent;
b. MonkeyEventSource.java,MonkeyEvent的工厂 , 是一个接口;
c. MonkeyEvent.java , 各种事件的具体实现 。
二、查找手机上的安装包包名1.adb shell pm list package 查看手机上所有的安装包
2.adb shell pm list package -3 查看第三方安装包

软件测试教程:monkey压力测试

文章插图
 
3.adb shell pm list packages -s 查看系统的包
4.adb shell pm list packages -e “要搜索的内容” 查看启动包中搜索的包
软件测试教程:monkey压力测试

文章插图
 
5.adb shell dumpsys window | findstr mCurrentFocus 后面的是当前启动的acivity):获取当前打开的App包名(前面的为包名 , 斜杠
软件测试教程:monkey压力测试

文章插图
 
三、Monkey 命令基本参数的介绍注意:所有的参数都需要放在monkey和设置的次数之间 , 参数的顺序可以调整;若带了-p  , -p必须放在monkey之后 , 参数必须在-p和count之间:
【软件测试教程:monkey压力测试】adb shell monkey -p 包名 --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v –s 1540475754297 100
1.-p  , 此命令用于指定包 , 若不指定则在整个系统中执行
a.指定一个包执行10次:adb shell monkey -p包名 10 , 如下出现事件执行次数和所耗时间 , 则算是执行成功;
软件测试教程:monkey压力测试

文章插图
 
b.指定多个包执行10次:adb shell monkey -p 包名–p包名10 , 
软件测试教程:monkey压力测试

文章插图
 
2.-v  , 用于反馈日志的详细程度级别
Level 0:adb shell monkey -p 包名 -v 10// 默认级别 , 仅提供启动、测试完成和最终结果等少量信息
Level 1:adb shell monkey -p包名 -v-v 10// 提供较为详细的日志 , 包括每个发送到Activity的事件信息
Level 2:adb shell monkey -p包名 -v-v-v 10 // 提供最详细的日志 , 包括了测试中选中/未选中的Activity信息
3.-s  , 用于指定伪随机数生成器的seed值
命令:adb shell monkey -p 包名 –s seed值 执行次数
如果seed值相同 , 则两次Monkey测试所产生的事件序列也相同的 , 示例:
测试1:adb shell monkey -pcom.kugou.android –s 1540475754297 100
测试2:adb shell monkey -pcom.kugou.android –s 1540475754297 100
4.--throttle  , 用于指定用户事件的操作间隔时延 , 单位是毫秒如果不指定这个参数 , monkey会尽可能快的生成和发送消息
命令:adb shell monkey -p包名 --throttle 3000 100
5.--ignore-timeouts  , 忽略超时错误
6.--ignore-crashes  , 忽略crash
7.--ignore-security-exceptions 忽略许可错误
8.--monitor-native-crashes , 用于指定是否监视并报告应用程序发生崩溃的本地代码
9.--pct-touch  , 触摸事件
命令:adb shell monkey -p 包名 -v -v -v --pct-touch 100 20 //执行20次100%都为触摸事件这里触摸事件为100% , 则没有其他事件
软件测试教程:monkey压力测试

文章插图
 
10.指定日志存放目录:
a、存放在电脑上(如下指定为D目录下命名为AAlog.txt , 为了方便查找 , 然后就去电脑上该目录下查找 , 当设置路径后 , 日志将不会在命令行窗口上显示出来)


推荐阅读