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

栏目: IOS · Android · 发布时间: 6年前

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

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

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

一、Monkey测试的基本方法

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

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

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

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

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

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

1、adb shell

2、dumpsys activity | grepmFocusedActivity

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

然后输入一句简单的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设置此选项,将在Monkey事件序列之前和之后立即生成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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深度学习轻松学

深度学习轻松学

冯超 / 电子工业出版社 / 2017-7 / 79.00

《深度学习轻松学:核心算法与视觉实践》介绍了深度学习基本算法和视觉领域的应用实例。书中以轻松直白的语言,生动详细地介绍了深层模型相关的基础知识,并深入剖析了算法的原理与本质。同时,书中还配有大量案例与源码,帮助读者切实体会深度学习的核心思想和精妙之处。除此之外,书中还介绍了深度学习在视觉领域的应用,从原理层面揭示其思路思想,帮助读者在此领域中夯实技术基础。 《深度学习轻松学:核心算法与视觉实......一起来看看 《深度学习轻松学》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具