Monkey测试详解
- 格式:pdf
- 大小:190.63 KB
- 文档页数:3
Monkey测试详解
概念:monkey test,也有⼈叫做搞怪测试,⼀般指⽤毫⽆规律的指令或操作去测试被测系统,观察被测系统的稳定性和容错性。这种测试⽅式在
产品周期中的早期阶段会找到很多很好的bug,为⽤户节省不少的时间。
介绍:Monkey是Android系统⾃带⼀个命令⾏⼯具,可以运⾏在模拟器⾥或者真实设备中运⾏。monkey向系统发送伪随机的⽤户事件流,实现对
正在开发的应⽤程序进⾏压⼒测试。monkey包括很多选项,⼤致四⼤类:
1.基本配置选项,如设置尝试的事件数量。
2.运⾏约束选项,如设置只对单独的⼀个包进⾏测试。
3.事件类型和频率。
4.调试选项
Monkey 命令启动⽅式:
a. 可以通过PC机CMD窗⼝中执⾏: adb shell monkey {+命令参数}来进⾏Monkey测试
b. 在PC上adb shell 进⼊Android系统,通过执⾏monkey {+命令参数} 来进⾏Monkey 测试
c. 在Android机或者模拟器上直接执⾏monkey 命令,可以在Android机上安装Android终端模拟器
monkey命令特性:
不可能使⽤monkey来指定做⼀样测试,重复做很多次。因为monkey产⽣的是伪随机的事件流。但是我们可以通过添加命令选项将操作限制
在⼀定的范围内。
⼀、⾸先你要先搭建环境1.先下载jdk具体安装流程请参考:JDK教程
2.再下载sdk 具体安装流程请参考:SDK教程
⼆、在开发者选项⾥打开⼿机的usb调试,⽤usb数据线连接⼿机,允许电脑连接⼿机。
三、monkey前的准备命令1.windows+R 输⼊cmd进⼊dos命令⾏;
2.输⼊adb devices 下⾯出现类似下图的组合你就成功了;
3.输⼊ adb shell pm list packages查看⼿机所有的包名,输⼊ adb shell pm list packages -3 查看⼿机上所有的第三⽅包名。
四、参数介绍1.参数-p
⽤于约束限制,⽤此参数指定⼀个或多个package,指定包之后,monkey将只允许系统启动指定的APP,如果不指定包,monkey将允许启
动设备中所有APP。
不指定包:adb shell monkey 100
指定⼀个包:adb shell monkey -p com.tencent.news 100
指定多个包:adb shell monkey -p com.tencent.news 100 -p com.tencent.news 100*-p空格后⾯是软件包名;100表⽰测试事件次数。
2. 参数-v
⽤于指定反馈⽇志的详细程度,总共范围内3个级别
⽇志级别 level 0adb shell monkey -p com.tencent.news -v 100
说明:仅提供启动提⽰,测试完成和最终结果等少量信息
⽇志级别 level 1adb shell monkey -p com.tencent.news -v -v 100
说明:提供较为详细的⽇志,包括每个发送到Activity的事件信息
⽇志级别 level 2adb shell monkey -p com.tencent.news -v -v -v 100
说明:提供最详细的⽇志,包括测试中选中(未选中的)Activity的事件信息3. 参数-s
⽤于指定伪随机数⽣成器的send值,如果send相同则两次monkey测试所产⽣的事件序列也相同。Monkey测试 1
adb shell monkey -p com.tencent.news -s 10 100
Monkey 测试 2
adb shell monkey -p com.tencent.news -s 10 100
说明:两次测试的效果是相同的,因为模拟的⽤户操作序列(每次操作按照⼀定的先后顺序所组成的⼀系列操作,即⼀个序列)是⼀样的。
操作序列虽然是随机⽣成的,但是只要指定了相同的send值,就可以保证两次测试产⽣的随机操作序列是完全相同的,所以这个操作序列是
伪随机的。4. 参数–throttle
说明:⽤于指定两个事件之间⼀个固定延迟,可以减缓monkey的执⾏速度。如果不指定,monkey将不会被延迟,事件将尽可能快地⽣成和
发送消息。adb shell monkey --throttle 3000 -p com.tencent.news 100
向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。5. 参数–pct -{+事件类型}{+事件类型的百分⽐}
参数列表查看如下,参数后⾯紧接着是百分⽐ 0-100,百分⽐的总量不能⼤于100
(1)–pct-touch 触摸事件adb shell monkey --throttle 3000 --pct-touch 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定触摸的事件占⽐为50%
说明:触摸事件是指在屏幕某处按下并抬起的操作,就模拟⽇常⼿机使⽤中的点击操作。
(2)–pct-motion 滑动事件adb shell monkey --throttle 3000 --pct-motion 50 -p com.tencent.news 100
解释: 向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定滑动的事件占⽐为50%
说明:滑动事件是指在屏幕某处按下、随机移动、抬起的操作。类似于我们⽇常的滑动屏幕翻页的操作。⽇志显⽰与触摸事件相似。
(3)–pct-pinchzoom 缩放事件adb shell monkey --throttle 3000 --pct-pinchzoom 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定缩放的事件占⽐为50%
说明:缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起。就是平时我们使⽤时的放⼤缩⼩操作。
(4)–pct-trackball 轨迹事件adb shell monkey --throttle 3000 --pct-trackball 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定轨迹的事件占⽐为50%
说明:轨迹事件是由⼀个或多个随机的移动组成的,有时会伴随点击。早期的智能机带有轨迹球,这个时间就是轨迹球的操作。现在⼏乎没
有轨迹球了,但这个轨迹事件包含了曲线滑动事件,如果被测应⽤程序需要曲线滑动才需要设置该事件百分⽐。
(5)–pct-rotation 屏幕旋转事件adb shell monkey --throttle 3000 --pct-rotation 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定屏幕旋转的事件占⽐为50%
说明:这是⼀个隐藏事件,⽤于模拟⼿机的横竖屏切换。该事件由 rotation 事件组成, 其中 degree 表⽰选装⽅向, 顺时针旋转,0 表⽰旋转 90 度
1 表⽰ 180 度
2 表⽰旋转 270 度
3 表⽰旋转 360 度
(6)–pct-nav 基本导航事件adb shell monkey --throttle 3000 --pct-nav 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定基本导航的事件占⽐为50%
说明:基本导航事件是指点击⽅向输⼊设备的上、下、左、右按键的操作,现在⼿机上很少有这样的⽅向键了。因此该事件⽤得相对很少。
(7)–pct-majornav 主要导航事件adb shell monkey --throttle 3000 --pct-majornav 50 -p com.tencent.news 100
解释: 向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定主要导航的事件占⽐为50%
说明:主要导航事件是指点击“主要导航”按钮的操作。这些按键通常会导致 UI 界⾯的动作。如回退按键、菜单按键等。
(8)–pct-flip 键盘事件adb shell monkey --throttle 3000 --pct-flip 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定键盘的事件占⽐为50%
说明: 调整键盘事件主要是指⼀些与键盘相关的操作。如点击输⼊框、键盘弹起、点击输⼊框以外区域、键盘收回等
(9)–pct-appswitch 切换 Activity 事件adb shell monkey --throttle 3000 --pct-flip 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定切换Activity事件占⽐为50%
说明:切换 Activity 事件是指在⼿机上启动⼀个 Activity 的操作。 在随机的时间间隔中, Monkey 将执⾏⼀个 StartActivity ⽅法, 作为最⼤
限度上覆盖被测包中全部 Activity 的⼀种⽅法。(Activity 这个概念简单但不准确的理解可以认为就是页⾯的意思)如果该事件⽐例偏低,你
将会看到⼤部分时间的测试都停留在同⼀个页⾯上,因此适当设置该事件的⽐例是很有必要的。
(10)–pct-syskeys 系统按键事件adb shell monkey --throttle 3000 --pct-ssyskeys 50 -p com.tencent.news 100
解释: 向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定系统按键的事件占⽐为50%
说明:系统按键事件是指点击系统保留使⽤的按键操作,如点击 HOME键、返回键、⾳量调节键等。
(11)–pct-anyevent 其它类型事件adb shell monkey --throttle 3000 --pct-anyevent 50 -p com.tencent.news 100
解释:向腾讯新闻发送1000次随机事件,每次事件间隔为3秒。其中设定其他类型的事件占⽐为50%
说明:其它类型事件除了上⾯的事件以外的其他事件。它包罗了所有其它类型的事件,如:按键、其它不常⽤的设备按钮、等等。
6. 参数–hprof 需root权限
adb shell monkey -p com.tencent.news --hprof --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:\monkey.txt
指定了该参数,monkey会在发送事件的前后⽣成性能分析报告,通常会在data/misc⽬录下⽣成⼀个5MB左右⼤⼩的⽂件。7. 参数–ignore-crashes(忽略应⽤程序崩溃)
⽤于指定当应⽤程序崩溃时(Force&Close错误)monkey是否停⽌运⾏。若使⽤此参数,即使应⽤程序崩溃,monkey依然会发送事件,直