python+appium【第四章-adb命令之monkey命令】

 

首先我们来理解一下Monkey的概念

 

Monkey概念:Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。该工具用于进行压力测试。然后开发人员结合monkey打印的日志和系统打印的日志,分析测试中的问题。

 

Monkey测试的特点:Monkey测试,所有的事件都是随机产生的,不带任何人的主观性。
1、测试的对象仅为应用程序包,有一定的局限性。
2、Monky测试使用的事件数据流是随机的,不能进行自定义。
3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
 
 

Monkey测试目的

测试app是否会Crash(崩溃)

所以我们在公司一般是使用monkey对apk进行压力测试,检验它在高强度的调试下能否持续运行

 

接下来我们针对monkey的参数进行详解
 
 
指定一个测试包进行monkey测试
-p 参数用于约束只对一个包进行monkey测试
针对这个 com.bng.calculator 包 进行50次的随机测试
monkey -p com.bng.calculator 50

 

指定多个包进行moneky测试

注意指定多个包时 需要用-p进行连接 

针对 com.htc.Weather 和 com.htc.pdfreader-pcom.htc.photo.widgets 进行100次的随机测试
adb shell monkey-p com.htc.Weather –p com.htc.pdfreader-pcom.htc.photo.widgets 100

 

不指定包进行monkey测试
adb shell monkey 100

 

monkey的日志模块不在此详细描述,具体的我们可以使用adb的logcat进行日志的输出,观看更加美观,详情请移步上一篇文章

 

monkey的延时模块 


用户事件流之间的延时操作  —-throttle 
执行五十次时间 每次间隔0.5s做一次操作
adb shell monkey -p com.bng.calculator  --throttle 500 50
monkey -p com.bng.calculator  --throttle 500 50

 

menkey自带随机测试组

monkey 假设随机过程中发现了bug,程序崩溃或者闪退,报告给开发,开发说修复好了,如何进行回归?

-s 伪随机数的seed值,如果seed相同,则两次monkey产生事件也相同。执行相同操作
monkey 推出
-s 1–10组(注:需要将软件至为初始状态) -s 4 指定使用第四组随机数 monkey -p com.bng.calculator --throttle 500 -s 4 100

 

monkey崩溃继续运行

--ignore-crashes
用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
示例:adb shell monkey -p com.htc.Weather --ignore-crashes 1000 测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

 

monkey超时继续运行
--ignore-timeouts

如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

示例:adb shell monkey -p com.bng.calculator --throttle 500 -s 6 100 --ignore-crashes --ignore-timeouts  

 

monkey发生某些错误时继续运行

--ignore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

示例: monkey -p com.bng.calculator --throttle 500 -s 6 --ignore-crashes --ignore-timeouts --ignore-security-exceptions 500

 

monkey事件类别 注意:pct事件的总和不能超过100%
 
触摸事件
--pct-touch{+百分比}0:触摸,触摸事件泛指发生在某一位置的一个down-up事件,点击操作

示例:monkey -p com.bng.calculator --throttle 500 -s 6 --pct-touch 100 50

 

动作事件

--pct-motion{+百分比}1:动作,动作事件泛指从某一位置接下(即down事件)后经过一系列伪随机事件后弹出(即up事件)
示例: monkey -p com.bng.calculator --throttle 500 -s 6 --pct-motion 100 50

 

二指缩放事件

--pct-pinchzoom{+百分比}2:二指缩放,智能机上的放大缩小手势操作事件
示例: monkey -p com.bng.calculator --throttle 500 -s 6 --pct-pinchzoom 50

 

轨迹事件
--pct-trackball{+百分比}3:轨迹,轨迹事件包括一系列的随机移动,以及偶尔跟随在移动后面的点击事件
示例: monkey -p com.bng.calculator --throttle 500 -s 6 --pct-trackball 50

 

屏幕旋转事件

--pct-rotation{+百分比}4:屏幕旋转,横屏竖屏事件
示例: monkey -p com.bng.calculator --throttle 500 -s 6 --pct-rotation 50

 

 

那正常的一个monkey测试流程是怎么样的?

1. adb devices 查看设备是否连接

2. adb shell 进入shell界面

3. adb logcat -c

4. adb logcat -f 手机路径 -s *:E  -v long  

5. monkey 命令执行 示例:adb shell monkey -p com.bng.calculator --throttle 500 -s 6 100 --ignore-crashes --ignore-timeouts   10000000

6. 结束日志打印,分析日志

7. 将报错结果截图给开发

 

 

今天的分享到此结束,下一篇我将给大家分享一下appium如何定位元素

 

欢迎转载  请注明原出处   https://www.cnblogs.com/yushengaqingzhijiao/p/15232392.html

 

 

 
 
posted @ 2021-09-06 09:34  罐装七喜  阅读(222)  评论(0编辑  收藏  举报