Monkey软件测试工具介绍

https://www.cnblogs.com/yangzixuan/p/10962823.html

一、        Monkey测试工具简介

 是Android \ SDK 中附带的一个工具  Monkey测试的原理:利用socket通讯(Android客户端和服务器以TCP/UDP方式)的方式来模拟用户的按键输入、触摸屏输入、手势输入等  Monkey测试的目的:该工具可进行压力测试,更多的是一种随机测试和稳定性测试;开发人员可以结合Monkey打印的日志和系统打印的日志来分析测试的结果

 

二、       Monkey的特征 

 1、 测试的对象仅为应用程序包,有一定的局限性。

 2、 Monkey测试使用的事件流数据流是随机的,不能进行自定义。

 3、 可对MonkeyTest的对象、事件数量、类型、频率等进行设置

三、       关于Monkey测试的停止条件

  Monkey Test执行过程中在下列三种情况下会自动停止: 

1、如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

2、如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。 

3、如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。

四、Monkey的命令 

Monkey可分四大类:常用选项、事件选项、约束选项、调试选项 

1、常用选项  -help : 打印帮助信息 monkey命令的简单帮助:adb shell monkey -help -v :用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别  日志级别 Level 0 示例:adb shell monkey -p com.htc.Weather -v 100 日志级别 Level 1 示例:adb shell monkey -p com.htc.Weather -v -v 100  日志级别 Level 2 示例:adb shell monkey -p com.htc.Weather -v -v -v 100 

2、事件选项  -s : 用于指定伪随机数生成器的seed(种子)值,如果seed相同,则两次monkey测试所产生的事件序列也相同  示例:adb shell monkey -p com.htc.Weather -s 10 100  --throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列) 如:--throttle 100  --pct-touch:指定触摸事件的百分比,如:--pct-touch 5% , 相关的还有以下option:  --pct-motion (滑动事件)、  --pct-trackball (轨迹球事件) 、   --pct-nav (导航事件 up/down/left/right)、  --pct-majornav (主要导航事件 back key 、 menu key)、   --pct-syskeys (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、  --pct-appswitch (activity之间的切换)、  --pct-anyevent (任意事件) 

3、约束选项-c: activity必须至少包含一个指定的category,才能被启动,否则启动不了 -p: 用于约束限制,用此参数指定一个或多个包  如:指定一个包:adb shell monkey -p com.example.sellclientapp 100 指定多个包:adb shell monkey -p com.htc.Weather -p com.htc.pdfreader 100 说明:com.example.sellclientapp为包名,100是事件计数(即让monkey程序模拟100次随机用户事件)  要查看设备中所有的包,在CMD窗口中执行以下命令:

 

 

4、调试选项  --dbg-no-events:初始化启动的activity,但是不产生任何事件。  --hprof:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项。  --ignore-crashes:忽略崩溃 --ignore-timeouts:忽略超时  --ignore-security-exceptions:忽略安全异常  --kill-process-after-error:发生错误后直接杀掉进程 --monitor-native-crashes:跟踪本地方法的崩溃问题 --wait-dbg:直到连接了调试器才执行monkey测试

五、Monkey测试实例

  1、前提条件:启动一个 Android 的模拟器  打开DOS窗口,在命令行使用adb devices查看设备是否连接?

 

 

2、查看模拟器data/data文件夹的应用程序包,此目录下的应用程序包,我们都可以使用monkey进行测试,如下所示

 

 

3、可以选择一个应用程序包作为测试对象,如我们选择com.android.camera 相机应用作为测试对象 

4、使用monkey 命令执行测试   monkey -p com.android.camera -v 50  其中-p 表示对象包,-v 表示反馈信息的级别,50 表示事件数量。

 

 

5、在运行中,输入运行代码: monkey --pct-nav 100 -v 500 -p com.android.alarmclock 其中–pct-nav 100 表示全部产生基本按键事件,-p 表示对象包,-v 表示反馈信息的级别,500 表示事件数量,执行部分结果,注意 pct-nav 前面是两个“-”,如下图所

 

 

C:\Documents and Settings\9158.feng>adb shell monkey -p com.a.a -s 500 --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 50000 >C:\log.txt  指令的含义:测试的应用程序为com.a.a,事件间的延时为500毫秒,三个 -v 表示输出的MonkeyLog的级别为最高,即输出最详尽的Monkey Log,测试的事件次数为50000次 ,Log保存在C盘的log.txt

代码解析:

例如:adb shell monkey -p com.xy.android.junit -s 500 --ignore-crashes --ignore-timeouts   --monitor-native-crashes -v -v 10000 > E:\monkey_log\java_monkey_log.txt  说明:monkey作用的包:com.xy.android.junit 产生时间序列的种子值:500  忽略程序崩溃 、 忽略超时 、 监视本地程序崩溃、详细信息级别为2 , 产生 10000个事件  所产生的日志保存在:E:\monkey_log\java_monkey_log.txt

注:测试产生了日志,最重要的是要学会分析日志  在log中搜索4种关键字加以分析: 1、crash 闪退  2、exception 异常 3、force closed 强制退出   4、anr(application no response) 程序无响应

六,使用心得

Monkey直接翻译就是猴子的意识,他的作用和原理也如同猴子一样,有一个猴子在电脑前随便的点击滑动我们的安卓应用程序,直到他出现错误展示出来,这样的测试对于程序的健壮性有一个很好的模拟测试,也对程序员的工作量大大减少,他的操作也十分方便,对于我们以后的应用程序类的测试,操作按钮以及屏幕的交互可谓是十分重要的,也是直接影响到用户的第一使用体验从而影响了软件带个使用者的整体使用效果,所以monkey软件测试软件是一个很好的模拟测试软件的工具。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章