Android Monkey测试

Android大约 3441 字

Monkey简介

Monkey是Android中的一个命令行工具,向系统发送伪随机的用户事件流(点击、滑动、Application切换、横竖屏、应用关闭)实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。只针对Activity做测试,不能对Service做测试。

质量要求

版本release(发布)前,Monkey跑出来的结果中crash要为0,final release前,Monkey跑完的总次数应为25W,结果里不允许有NullPointException出现。

命令参数

adb shell命令模式下输入:monkey

usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
              [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
              [--ignore-crashes] [--ignore-timeouts]
              [--ignore-security-exceptions]
              [--monitor-native-crashes] [--ignore-native-crashes]
              [--kill-process-after-error] [--hprof]
              [--pct-touch PERCENT] [--pct-motion PERCENT]
              [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
              [--pct-nav PERCENT] [--pct-majornav PERCENT]
              [--pct-appswitch PERCENT] [--pct-flip PERCENT]
              [--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
              [--pct-permission PERCENT]
              [--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
              [--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
              [--wait-dbg] [--dbg-no-events]
              [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
              [--port port]
              [-s SEED] [-v [-v] ...]
              [--throttle MILLISEC] [--randomize-throttle]
              [--profile-wait MILLISEC]
              [--device-sleep-time MILLISEC]
              [--randomize-script]
              [--script-log]
              [--bugreport]
              [--periodic-bugreport]
              [--permission-target-system]
              COUNT

参数含义:

  • --hprof:指定该项后在事件序列发送前后会立即生成分析报告,一般建议指定该项
  • --ignore-crashes:忽略崩溃
  • --ignore-timeouts:忽略超时
  • --ignore-security-exceptions:忽略安全异常
  • --kill-process-after-error:发生错误后直接杀掉进程
  • --monitor-native-crashes:跟踪本地方法的崩溃问题
  • --wait-dbg:直到连接了调试器才执行Monkey测试
  • --dbg-no-events:初始化启动的activity,但是不产生任何事件。
  • --pct-touch PERCENT:指定触摸事件的百分比:--pct-touch 5%
  • --pct-motion PERCENT:滑动事件
  • --pct-trackball PERCENT:轨迹球事件
  • --pct-nav PERCENT:导航事件up/down/left/right
  • --pct-majornav PERCENT:主要导航事件back key、menu key
  • --pct-syskeys PERCENT:系统按键事件 Home、Back、startCall、endCall、volumeControl
  • --pct-appswitch PERCENT:activity之间的切换
  • --pct-anyevent PERCENT:任意事件

最简单命令

在adb shell模式下执行。 执行1000次monkey点击

monkey 1000

-p参数

用于约束限制,用此参数指定一个或者多个包,指定包之后,Monkey将只允许启动指定App,如果不指定包,Monkey将启动系统中所有的App。

monkey -p com.example.test 1000

-v参数

用于指定反馈的信息级别(日志的详细程度),分为三个级别,级别越高,日志越详细。

monkey -p com.example.test -v 1000
monkey -p com.example.test -v -v 1000
monkey -p com.example.test -v -v -v 1000

-s参数

指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试产生的事件序列也相同。

monkey -p com.example.test -s 30 -v 1000

--throttle参数

制定每个事件结束后的间隔时间,降低系统压力,单位:毫秒。 如果不指定系统会尽快的发送事件序列。

monkey --throttle 1000

导出测试日志

需退出shell命令,在cmd或bash模式下执行。shell命令相当于进入Linux的root下面,没有权限在里面创建文件。

adb shell monkey -v -v -v 1000 > D:\monkey_log\test.txt

标准流与错误流分开保存

monkey [option] <count> 1>/mnt/sdcard/monkey.txt 2>/mnt/sdcard/error.txt

monkey -v -v -v 1000 1>D:/normal.txt 2>D:/error.txt

停止Monkey

进入adb shell模式

ps | grep monkey
找出monkey的pid
kill pid

防止Monkey点击状态栏,虚拟按键

需在开发者选项中打开USB调试(安全设置)

隐藏

adb shell settings put global policy_control immersive.full=*

恢复

adb shell settings put global policy_control null

示例

monkey -p com.android.contacts --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes -v -v -v 300000 1>/sdcard/20190409_normal.txt 2>/sdcard/20190409_error.txt
阅读 1018 · 发布于 2019-04-09

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批