安卓app测试之Monkey测试

发表于:2019-6-14 15:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:朱砂痣    来源:博客园

  一、Monkey特点
  1、运行时机:一般是产品稳定后 首轮功能测试完成的夜间进行
  2、需要知道packageName
  3、目的:主要测试产品是否存在崩溃问题和ANR问题。
  二、获取包名的两个方法
  首先安装到模拟器上想获取的包:adb install  <带路径的包名>
  1、通过adb logcat获取
  adb shell “logcat | grep START”【如果直接使用不出现log,可以先进入linux命令:adb shell,然后再执行:logcat | grep START】
  然后打开apk ,就可以出现包名
  2、aapt  dump badging apk名称
  三、Monkey的基本命令
  1、标准monkey命令:adb shell monkey -p com.android.calculator2 -v 50
  -p:packageName
  -v:日志级别
  50:事件数
  2、adb shell monkey -p com.android.calculator2 -v -v --pct-touch 50 --throttle 600 88
  --pct-touch 50 设置整个过程中点击操作所占的百分比
  --throttle 600每个事件间隔600ms
  3、adb shell monkey -p packagename --throttle 500 --ignore-crashes --ignore-timeouts --ignoresecurity-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>c:\monkey_test.log
  --ignore-crashes 用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果 使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
  --ignore-timeouts 用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是 否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计 数完成。
  --ignore-security-exceptions 用于指定当应用程序发生许可错误时(如证书许可,网络许可等), Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误Monkey依然会发送事件,直 到事件计数完成。
  --kill-process-after-error 用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应 用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时 的状态,系统并不会结束该应用程序的进程)。
  --monitor-native-crashes 用于指定是否监视并报告应用程序发生崩溃的本地代码
  四、Monkey的日志级别
  参数: -v 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
  1、日志级别 Level0
  示例 adb shellmonkey -p com.htc.Weather –v 100
  说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
  2、日志级别 Level 1
  示例 adb shell monkey -p com.htc.Weather –v -v 100
  说明 提供较为详细的日志,包括每个发送到Activity的事件信息
  3、日志级别 Level 2
  示例 adb shell monkey -p com.htc.Weather –v -v –v 100
  说明 最详细的日志,包括了测试中选中/未选中的Activity信息
  五、Monkey的事件类型
  1、--pct-touch:指定触摸事件的百分比,如:--pct-touch 5
  2、 --pct-motion (滑动事件)
  3、 --pct-trackball (轨迹球事件)
  4、 --pct-nav (导航事件 up/down/left/right)
  5、 --pct-majornav (主要导航事件 back key 、 menu key)
  6、 --pct-syskeys (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
  7、 --pct-appswitch (activity之间的切换)
  8、--pct-anyevent (任意事件)
  六、Monkey的参数 -s
  参数: -s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:
  Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100
  Monkey 测试2:adb shell monkey -p com.htc.Weather–s 10 100 两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列 操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可 以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;
  七、Monkey的日志分析
  1、按关键字进行搜索,ANR、Exception、Crash、Error。
  2、找到有问题的地方,查看上下文信息。
  3、注意第一个switch上下文信息。
  4、查看monkey里面出错前的一些事件动作,可以手动执行该动作。
  5、进行问题复现,可以使用之前执行的monkey命令在执行一遍,注意seed值要一样。
  【测试结果分析】
  (1)、ANR问题(程序无响应):在日志中搜索“ANR"(application no response)
  (2)、闪退问题:在日志中搜索"crash"
  (3)、异常:搜索"exception"
  (4)、强制退出:搜索"force closed"
  八、Crash专项
  1、安装可以引起Crash的App
  2、执行压力命令
  3、析取Crash的Exception信息
  案例: 执行压力测试,并且生成monkey_test.log日志文件。
  #adb shell monkey -p cn.besttest.crashtest -v 100 >E:\monkey\monkey_test.log
  #查看E盘文件夹下已经生成了monkey_test.log。
  #打开文件,进行crash分析
  九、ANR专项
  步骤同上
  1、安装可以引起ANR的App
  2、执行压力命令
  3、析取ANR的Exception信息
  1、查看monkey的log
  2、/data/anr/traces.txt
  3、查看logcat日志 ANR

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号