暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

APP测试必备技能-玩转monkey(一)

西安川石 2021-07-26
1067

Monkey是一款app的自动化测试工具,monkey是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱捣乱。Monkey原理也是类似,通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、滑动Trackball、手势输入等操作),来对设备上的程序进行测试,检测程序长时间的稳定性,多久的时间会发生异常。

Monkey工具存在Android系统中,使用Java语言写成,jar包在Android文件系统中的存放路径是:

/system/framework/monkey.jar;Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;


monkey需要通过adb来唤醒,即通过在cmd窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试;


1.

Monkey 工作原理


在Monkey运行的时候,它会生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理:


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

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

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


按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。


2.

Monkey命令详解


Monkey需要通过adb来命令来运行 ,Monkey属于android系统自带的一个工具,文件存在于android的/system目录中。


查看Monkey,monkey属于android系统自带的:


在system的bin目录下可以看到Monkey



在通过monkey进行测试前,需要知道待测试app的包名,可以通过使用“uiautomatorviewer.bat”工具来获取,也可以直接询问提供app的开发小哥哥,或者直接使用adb命令获取包名。


以下简单介绍两种通过adb命令获取包名的方法。


  • 方法一:首先要先运行手机中需要获取包名的app,然后分别输入命令即可。

//获取APP包名方法一

cmd状态下:adb shelldumpsys activity | findstr mFocusedActivity

或者进入shell状态下查看:

adb shell
dumpsys activity | findstr mFocusedActivity


如图所示:


  • 方法二:在sdk的build-tools的版本目录下,运行命令aapt dump badging 安装的apk包名

如:


  • 方法三:查看设备中所有的包,在cmd窗口中执行以下命令:

adb shell
cd data/data
ls


之后输入一些Monkey命令,就可以开始测试。


//获取Monkey命令自带的帮助,在cmd中执行命令:

adb shell monkey –help


Monkey命令的参数大致分为三大类:

  • (1)基本配置参数 –v -s --throttle -p;

  • (2)发送的事件类型:

  • (3)调试选项





参数说明



  • 基本参数:

1 、-P参数,指定要测试的包名:


例:

//指定1个包

adb shell monkey -p cn.mopon.film 2000


-P后面接app包名, 2000是要测试的操作的次数(即随机事件数),比如点击数,缩放数等,达到这个次数测试就结束退出monkey测试状态。


//指定多个包

adb shell monkey -p cn.mopon.film -p com.tencent.QQ -p com.tencent.QQBrowser 
100


//不指定包

adb shell monkey 100


说明:Monkey随机启动APP并发送100个随机事件。


2、-v参数,指定输出日志的级别,monkey输出日志有3个级别,通过-v参数来指定:

-v 第一级别; -v -v第二级别;-v –v –v 第三级别


例:

//指定日志级别Level0

adb shell monkey -p cn.mopon.film -v 100


说明:日志级别level0:缺省值,仅提供启动提示、测试完成和最终结果等少量信息

//指定日志级别Level 1

adb shell monkey -p cn.mopon.film -vv 100


说明:日志级别 Level 1,提供提供较为详细的日志,包括每个发送到Activity的信息。

//指定日志级别Level 2

adb shell monkey -p cn.mopon.filmv -vv 100


说明:日志级别 Level 2,提供更详细的日志,包括了测试中选中/未选中的Activity信息。


Monkey的参数没有顺序要求,但是随机事件数是一定要放在最后的。

adb shell monkey -p cn.mopon.film –v -v –v 100 |logcat -v 
time>D:\log\1.txt


说明:用Monkey 测试时,为了方便分析问题,可以在命令monkey命令后面加上 |logcat -v time,这样就能边测试边打印Log并存到电脑本地,但是以上组合在monkey测试完成后,logcat仍然在执行,测试时需注意手动结束。



3、 --throttle参数,指定用户操作间的时延

//指定用户操作(即事件)间的时延

adb shell monkey -p com.tencent.WeChat --throttle 3000 100


说明:throttle单位是毫秒。


4、-s(随机数种子)

用于指定伪随机数生成器的seed值,如果seed值相同,则两次Monkey测试所产生的时间序列也相同

monkey测试1:adb shell monkey -p com.taobao.taobao -s 10 100
monkey测试2:adb shell monkey -p com.taobao.taobao -s 10 100


这个参数对于重测,复现问题比较常用。


本章节关于“APP测试必备技能-玩转monkey(一)”的内容就学习到这里,下一期继续学习“APP测试必备技能-玩转monkey(二)”,记得关注我们哦。



温馨提示:想要自学转行的伙伴可以扫下方二维码进行在线重复学习!

添加老师微信:13691729932 可以获取全套软件测试自学资料!


给大家推荐一个软件测试自学群,识别下方二维码,免费领取学习课件、视频哦。



LoadRunner性能测试系统学习教程:脚本编写(1)


LoadRunner性能测试系统学习教程:Analysis分析器(4)


答应我!看完这篇后一定要关注我们!



文章转载自西安川石,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论