adb命令-Monkey随机测试简介及实践

monkey测试是什么?

Monkey是Android中的一个命令行工具,可以实现对正在开发的应用程序进行压力测试;
Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法;
它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试

monkey测试优缺点?

缺点:Monkey测试有部分缺陷,我们无法准确地得知重现步骤;
优点:模拟用户随机性的多次点击面前是否会闪退或者崩溃;

monkey测试环境准备?

1.先下载jdk
2.再下载sdk(实际有adb环境即可)
下载地方和环境配置请参考:https://blog.csdn.net/weixin_40973256/article/details/102457684

monkey测试常用命令

1、日志详细程度
-v : 最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。
-v -v : 提供了较为详细的测试信息,如逐个发送到Activity的事件信息
-v -v -v : 提供了更多的设置信息,如测试中选中或未选中的Activity信息 比较常用的是-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用

2、-s(随机数种子) 指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
一般用在发现bug或需要重现 示例: monkey测试1:adb shell monkey -p test .control.com –s 10

3、–throttle <毫秒>
指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。 示例:eg:adb shell
monkey --throttle 3000 -p test .control.com 1000
发送1000次随机事件,每次事件间隔为3秒。

4、-p <允许的包名列表>
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。

5、–ignore-security-exception
作用:通常情况下,指定应用程序发生许可错误时(如证书许可,网络许可等),monkey将停止运行。若指定了该参数,即使应用程序发生许可错误,monkey会继续向系统发送事件,直到指定事件全部运行完毕。

6、–ignore-timeouts 作用:通常,应用程序发生任何超时错误(如“Application Not
responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

7、–ignore-crashes
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

9、–pct-touch
作用:调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等

9、–pct-motion
调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁

10、–pct-trackball
作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁

11、—pct-syskeys
按键消息比例,主页、后退、音量增减

12、–pct-anyevent
其他不常用的按键比例的设置,不常用

13、–hprof monkey
测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间

14、–ignore-security-exceptions
忽略权限问题的

15、–kill-process-after-error
当错误发生时杀进程

16、–monitor-native-crashes
监视崩溃时的本地代码

17、杀monkey进程
按键:CTRL+C

18、adb logcat >电脑磁盘路径
把日志输出到电脑磁盘上,方便查看,之前可用命令:adb logcat -c清除日志的缓存
当不需要抓取日志可按下ctrl + c 按键,停止输出日志信息

monkey测试命令实践

注意:其他上面未介绍的有关的adb命令这里将直接使用,需要详细介绍的请参考:https://blog.csdn.net/weixin_40973256/article/details/102474575

1、打开手机的开发者调试工具,用usb数据线链接你的手机;
2、进入cmd窗口,输入adb devices 命令连接测试手机
adb命令-Monkey随机测试简介及实践_第1张图片
3、输入 adb shell pm list packages -3 查看手机上所有的第三方安装包,找到你要测试的包
4、按照你的测试要求输入相应的命令,我的测试命令是:
命令:adb shell monkey -p test .control.com --throttle 500 --ignore-timeouts --ignore-crashes -s 100 -v -v 100 0>D:\monkeylog.txt
adb命令-Monkey随机测试简介及实践_第2张图片
执行结果如下:因为我没有指定触摸事件的百分比,所以这里是随机的
adb命令-Monkey随机测试简介及实践_第3张图片
5、最后,测试完成后,找到log日志分析
日志开头:
显示本次测试seed值,执行次数,测试包
adb命令-Monkey随机测试简介及实践_第4张图片
日志结尾:
先查看日志结尾处是否表明测试顺利执行完成,而不是异常中断:
如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;Monkey finished代表执行完成。(如果Monkey执行异常中断,在log的最后也能查看到当前已执行的次数,可以比对一下。)
在这里插入图片描述
第一、ANR问题:程序无响应
在日志中搜索“ANR”

第二、CRASH问题:崩溃
在日志中搜索“CRASH”

第三、其他问题:
在日志中搜索”Exception”

第四、若测试中断后无法搜索到上述信息
一般都是外界原因而非程序本身原因。比如电脑异常测试中断,需要重新测试

备注:可以先详细分析monkey日志(当然,这个通常是开发去分析,但是作为测试人员,我们也应该知道怎么找出问题所在):
方法:搜索Switch–查看log中的Switch,主要查看Monkey执行的是那一个Activity,两个swtich之间如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
Sleeping–Sleeping for 500 milliseconds这是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。

一般重现问题的做法:
1.找到是monkey里面的哪个地方出错
2.查看Monkey里面出错前的一些事件动作,并手动执行该动作
3.若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

以上所述即为monkey测试,当然,具体的项目情景测试需要配合不同的命令,需要大家熟悉运用常用的指令,才可以得心应手。

最后,提醒各位学者:手机屏幕超时要设置为从不关闭,防止手机进入锁屏状态,导致中断测试。

有不足的地方请留言指正或加QQ讨论(1441302865),谢谢大家

你可能感兴趣的:(adb工具搭建及命令实践)