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

APP稳定性测试工具monkey(第二部分)

作者:川石学院 日期:2021-05-20 14:53:49 点击数:

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

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

  (2)发送的事件类型:

  (3)调试选项  

APP稳定性测试工具monkey(第二部分)(图1)

  参数说明:

  基本参数:

  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 -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

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

  事件类型参数

  Monkey的事件类型总共有11种,分别是触摸(Touch)、手势(motion)、二指缩放(pinchzoom)、轨迹(trackball)、旋转(rotation)、基本导航(nav)、主要导航事件(majornav)、系统按键(syskeys)、启动activity(appswitch)、键盘事件(flip)和其它类型事件(anyevent),在日志中分别用0-10来表示;

  如:

  C:\Users\XXX>adb shell monkey –p cn.mopon.film --throttle 1000 -v –v –v 100

  :Monkey: seed=160364725750 count=100

  :IncludeCategory: android.intent.category.LAUNCHER

  :IncludeCategory: android.intent.category.MONKEY

  // Event percentages:

  // 0: 15.0%

  // 1: 10.0%

  // 2: 2.0%

  // 3: 15.0%

  // 4: -0.0%

  // 5: -0.0%

  // 6: 25.0%

  // 7: 15.0%

  // 8: 2.0%

  // 9: 2.0%

  // 10: 1.0%

  // 11: 13.0%

  事件说明:

  触摸事件:指在屏幕某处按下并抬起的操作

  手势事件:指在屏幕某处的按下、随机移动、抬起的操作(划动)

  缩放事件:指在屏幕上某处放大缩小事件,如地图的测试,这类事件较多

  轨迹事件:模拟的轨迹球的操作,早期手机较多,现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数

  屏幕旋转事件:屏幕旋转事件是一个隐藏事件,它是模拟屏幕的横屏和竖屏转换

  基本导航事件:指点击方向输入设备的上、下、左、右按键的操作,现在手机多数没有上下左右的操作,这类事件很少

  主要导航事件:指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘回退,菜单,中间键等

  系统按键事件:指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等

  启动Activity事件:指在手机上启动一个Activity的操作,即打开某个应用的某个activity界面

  键盘事件:键盘事件主要是一些与键盘相关的操作,如点击输入框、键盘弹起、键盘收回等

  其它类型事件:除以上事件以外的其它事件,比如按键、其他不常用的设备上的按钮等

  好了,事件介绍完了,下面需要介绍在monkey测试中如何指定事件的比例,比如地图类的可以指定缩放事件较多一些,连连看游戏指定划动类较多一些,这样有利于测试的有效性,事件比例的设置是通过(--pct-事件名)的格式来指定事件的百分比,相关案例如下:

  指定触摸事件的百分比

  adb shell monkey -p cn.mopon.film --pct-touch 20 1000

  注:--pct-{+事件类别}{+事件类别百分比}用于指定每种类别事件的百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比),--pct-touch {+百分比}用于调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。

  指定动作事件的百分比

  adb shell monkey -p cn.mopon.film --pct-motion 30 1000

  注:指定动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)。

  指定多个事件的百分比

  adb shell monkey -p cn.mopon.film --pct-touch 20--pct-pinchzoom30 --pct-motion 15 --pct-appswitch 301000

  说明:指定多个事件百分比时,各百分比之和不能超过100%

  如果不指定事件的百分比,monkey会随机按事件百分比来跑app

  调试选项参数

  由于monkey在测试app时,我们需要作长时间的稳定性测试,比如连续测试10小时(monkey不能指定时间,可以指定次数,时间可以在测试次数的日志基础上大概算出来),在测试过程中,app很可能测试时间不久,因为碰到问题而崩溃,此时测试会停止,而达不到我们长期测试的目的,我们需要通过调试参数来让测试执行继续,主要的几个参数如下:

  --ignore-crashes指即使应用程序崩溃(Force& Close错误),Monkey依然会发送事件,直到事件计数达到指定的次数为止。

  如:

  adb shell monkey -p cn.mopon.film --ignore-crashes 10000

  说明:即使应用程序崩溃,Monkey依然会发送事件,直到事件计数达到10000为止。

  --ignore-security-exceptions指APP发生许可证书错误时,Monkey依然继续发送事件,直到事件数目达到目标值为止

  adb shell monkey -p cn.mopon.film --ignore-security-exceptions 1000

  --ignore-timeouts指app在发生 ANR(Application No Responding)错误时,Monkey是否停止运行如果使用--ignore-timeouts参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成,如

  adb shell monkey -p cn.mopon.film --ignore-timeouts 1000

  --kill-process-after-error指APP发生错误时,应用程序停止运行并保持在当前状,如:

  adb shell monkey -p cn.mopon.film --kill-process-after-error 1000

  当应用程序发生错误时,应用程序停止运行并保持在当前状态,注意系统并不会结束该应用程序的进程。

  也多个控制参数一起使用:

  adb shell monkey -p cn.mopon.film --ignore-crashes--ignore-timeouts 10000

  注:当app崩溃,发生ANR错误时继续测试

  Monkey命令和事件等综合运用参考

  adb shell monkey -p cn.mopon.film(替换要测试的包名) --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\monkeyLog.log

  Monkey测试可以发现的问题

  Android平台应用程序可能产生以下四种Crash:

  App层(JAVA应用程序):

  1、Force Close Crash

  2、ANR Crash

  Native层(本地框架):

  3、Tombstone Crash(Native Crash)

  Kernel层(LINUX内核空间):

  4、Kernel Panic

  Money日志定位问题

  1 、monkey作长时间稳定性测试时,由于无人值守,所以测试的结果主要靠日志来看,典型Monkey测试日志文件输出,如下:  

APP稳定性测试工具monkey(第二部分)(图2)

  //主要Log文件说明

  anr目录:从手机/data/anr导出的日志,保存发生anr crash 时的相关信息;

  dontpanic目录:从手机/data/dontpanic/导出的日志,保存发生Kernel Panic时的相关信息;

  Tombstone目录:从手机/data/tombstones/导出的日志,保存发生Tombstone Crash时的错误信息;

  dropbox目录:从手机/data/tombstones/导出的日志,经过dropbox服务截取的部分tombstones错误信息;

  BugReportLog.log:通过adb shell bugreport命令提取的系统各种信息;

  MonkeyScreenLog.Log:保存Monkey测试过程、应用层错误信息,发生Native Crash时,在此文件也会有记录;

  2、通过日志定位问题步骤

  (1)在MonkeyScreen.Log日志文件搜索关键词“Fatal”、“Crash”、“ANR”定位到发生Crash的详细堆栈信息,或分析发生Crash前后的日志事件;

  如图:  

APP稳定性测试工具monkey(第二部分)(图3)

  (2)检查dropbox目录下是否有相关crash日志信息,主要关注是否有以下4类crash错误信息:data_app_wtf,data_app_anr,data_app_crash,system_server_watchdog,如图: 

APP稳定性测试工具monkey(第二部分)(图4)

  (3)检查tombstone目录是否有生成日志,有的话说明发生过native crash,如图:  

APP稳定性测试工具monkey(第二部分)(图5)

  (4)通过anr目录中的日志文件或BugReport.log日志文件,进一步分析问题原因;

  (5)通过上述日志信息,结合代码分析或通过搜索引擎寻找对应问题的可能错误,定位解决问题。

  Monkey后台运行

  作用:使得android系统的设备脱离PC,独立运行monkey和记录logcat和monkey日志。

  方法如下:

  1、连接设备和PC;

  2、adb shell 命令进入命令行模式;

  3、 输入 logcat 命令(日志文件的地址使用> /sdcard/logcat_x.log),之后回车,

  如:logcat -v time >/sdcard/logcat_x.log

  4 、输入 monkey 命令(日志文件的地址使用> /sdcard/monkey_x.txt),回车;

  如:monkey -p packageName --throttle 500 -v -v -v 1000000 >/sdcard/monkey.log 对于其余的monkey命令的参数可以自己添加

  5、此时monkey开始运行,拔掉设备和PC的数据线;

  6 、同时需确认logcat和monkey的日志记录ok(重新连接设备和PC,通过adb shell,进入sdcard,使用 ls –l查看,logcat和monkey日志文件的大小不断变化即ok)。

  本文参考博客:

  https://www.cnblogs.com/aland-1415/p/6949964.html

  关于“APP稳定性测试工具monkey”的内容就全部讲解完了,大家喜欢的话记得每天来这里学习涨薪技能哦。(笔芯)

  川石学院零基础入门到精通课程免费学习即扫下方二维码,名师在线辅导!  

APP稳定性测试工具monkey(第二部分)(图6)

  附:川石信息全国校区最新开班时间,课程资料获取13691729932(微信同号)。  

APP稳定性测试工具monkey(第二部分)(图7)


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