川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

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

作者:川石学院 日期:2021-07-23 17:43:05 点击数:

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

APP测试必备-玩转monkey(一)(图1)

  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)调试选项

  参数说明:

  基本参数:

  -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 -v –v 100

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

  //指定日志级别Level 2

  adb shell monkey -p cn.mopon.film –v -v –v 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测试必备“的内容,大家觉得文章有用的话记得每天来这里和小编一起学习涨薪技能哦。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-07-23 17:43:05
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-07-23 17:43:05
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-07-23 17:43:05
  • 建筑工程专业朱同学成功转行为软件测试人!2021-07-23 17:43:05
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-07-23 17:43:05
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-07-23 17:43:05
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-07-23 17:43:05
  • 文科生转行软件测试照样拿下高薪15K!2021-07-23 17:43:05
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-07-23 17:43:05
  • 毕业1年,迷茫的他最终选择转行软件测试2021-07-23 17:43:05