Android Monkey 测试
Android 大约 3438 字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]
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
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓
