老菜鸟带你皮一下:你从来没有想过的Monkey测试!


Monkey,也就是猴子,hin皮,所以Monkey测试,顾名思义也就像猴子一样在软件上乱敲按键来测试。猴子什么都不懂,只知道乱按。Monkey原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序的测试。

我相信,大多数测试员都知道Monkey测试,甚至都用过,但是你可能不敢说自己对Monkey测试有多熟悉。看着好像很简单,但是我们如何快速的去熟悉Monkey测试呢?


一、Monkey测试的基本方法

今天,想简单地分享点Android的Monkey测试。亲测了一波,Monkey测试作为辅助测试,还是可以用用的,简单不费力。

Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。只要安装了adb,就可以进行Monkey测试了。

在做Monkey测试前,需要先安装adb(adb的环境配置,网上有很多教程,此处不做详细描述)。然后手机连接上电脑,打开菜单,输入“cmd”打开,输入命令行“adb devices”来确定设备是否连接成功。若连接成功,会显示设备序列号,参考下图。

还有,测试人员需要知道测试app的包名。可以通过使用“uiautomatorviewer.bat”工具(后期文章中描述)来获取包名,也可以直接询问提供app的开发人员,或者直接使用adb命令获取包名。

简单地介绍一种:通过adb命令获取包名。首先要先打开手机中需要获取包名的app。然后分别输入命令即可。如下图,该app的包名是“com.screeclibinvoke”。

1、adb shell

2、dumpsys activity | grepmFocusedActivity

然后输入一句简单的Monkey命令,即可开始测试。

adb shell monkey -p com.screeclibinvoke 1000 (指定包名是“com.screeclibinvoke”的应用,随机执行1000个模拟事件)。


二、Monkey的常用命令

下面列出了Monkey可以使用的参数。


基本参数

–help打印帮助文档

-v命令行中的每一个-v将增加反馈信息的级别。Level 0(也是默认值)除启动提示、测试完成和最终结果之外,其他的信息很少。Level 1提供较为详细的测试信息,如逐个发送到Activity的事件。Level 2提供更加详细的设置信息,如测试中被选中的或未被选中的Activity,例子adb shell -v -v 500

-s伪随机生成器的种子。如果seed值一样,那么产生的monkey事件,序列也是一样的

–throttle 在事件之间加入固定时间延迟,单位毫秒。如果不加,monkey会尽可能快地产生事件

–pct-touch调整触摸事件的百分比(触摸就是一个点击事件)

–pct-motion调整动作事件的百分比,(动作事件指一个down事件,一系列随机事件,然后一个up事件)

–pct-trackball调整轨迹事件的百分比,(轨迹事件由一个或多个移动组成,有时伴随点击事件)

–pct-nav调整基本导航事件的百分比,(导航事件就是方向键,上下左右)

–pct-majornav调整主要导航事件的百分比(这些导航事件通常引发图形界面中的动作,如5-way键盘的中间按键,回退按键,菜单按键)

–pct-syskeys调整系统按键事件的百分比(这些事件由系统保留,如Home、Back、Start、Call、End Call及音量控制键)

–pct-appswitch调整启动activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖保重全部Activity的一种方法。

–pct-anyevent调整其他类型事件的百分比。包含了所有其他类型的事件,如按键、其他不常使用的设备按键、等。


操作约束

-p如果使用该参数指定了一个或几个包,monkey将只允许启动这些包中的activity。如果你的程序,需要访问别的activity(如联系人界面),那必须将联系人的包也指定一下,否则无法访问。如果没有指定包名,monkey将允许启动安装在手机上的所有包。如果要指定多个包,需要多个-p选项,每个-p指定一个包。

-c如果使用此参数指定了一个或多个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity,如果不指定任何类别,Monkey将选择下列类别中列出的Activity:

Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要多个-c选项。


调试选项

–dbg-no-event设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不再产生事件。为了得到最佳结果,把它与-v,一个或几个包约束,以及一个保持Monkey运行30秒或更长事件的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。

–hprof设置此选项,将在Monk免费云主机域名ey事件序列之前和之后立即生成profiling报告。这将会在data/misc中生成大文件(5M),所以小心使用。

–ignore-crashes通常,当被测app崩溃或者发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey会继续向系统发送事件,直到计数完毕。

–ignore-timeouts通常,当被测程序出现未响应时,Monkey会停止运行。如果设置此选项,Monkey会继续运行,直到结束。

–ignore-security-excuptions通常,当被测程序发生可允许错误(如启动一个需要授权的Activity)时,Monkey将停止运行。如果设置此选项,Monkey将继续运行,直到结束。

–kill-process-after-error通常,当Monkey由于一个错误而停止运行时,出错的应用程序将继续运行。如果设置此选项,将会通知系统停止发送错误的进程。注意:程序正常结束,该程序并没有被停止。设备只是在结束事件后,简单保持在最后的状态。

–monitor-native-chrashes监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行。

–wait-dbg停止执行中的Monkey,直到有调试器和它相连。


三、Monkey的实例

我使用如下命令做一波Monkey测试,最终在电脑D盘生成a.log日志文件。

adb shell monkey -p com.screeclibinvoke –throttle300 –ignore-crashes –ignore-timeouts –ignore-security-exceptions–ignore-native-crashes –monitor-native-crashes -v -v -v 10000>D:a.log

在Monkey测试过程中可能会出现程序崩溃(CRASH)和程序无响应的情况(ANR)。CRASH即崩溃信息,程序在运行中非正常退出。设置忽略crashes等情况,当运行如上命令之后,在生成的日志中搜索关键字“CRASH”或“NAR”,可直接根据log日志定位bug并修复,也可根据seed值来完成bug的复现。


欢迎加入 51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】… 51与你共同学习,一起成长!期待你的加入: QQ
































































































































群:
































































































































755431660

相关推荐: 关于如何防范Ⅱ、Ⅲ类银行结算账户风险

近日支付结算司发布《关于加强II、III类银行结算账户风险防范有关事项的通知》(以下简称II、III类户)。通知要求:一、全面开展风险排查。银行业金融机构对网上银行、手机银行、直销银行、手机app等电子渠道办理II、III类户业务的相关系统及后台系统开展全面的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/01 16:30
下一篇 02/01 16:40