Android UI monkey 测试

伪随机用户事件,发送到模拟器或者设备,用来对应用程序进行压力测试。

功能:

  • 设定事件数
  • 操作限定到某一个特定 package
  • 事件类型和频率
  • 调试选项

报错:

  • 如果应用 crash 或者遇到 unhandled exception , monkey 会停止并上报错误
  • 如果应用产生 not responding error , monkey 也会停止并上报

基本使用

基本语法:

adb shell monkey [options] <event-count>

下面的例子是测试在特定包上,发送500随机事件

adb shell monkey -p your.package.name -v 500

一些有用的选项:

Option 描述
-v -vv -vvv 三档等级,越来越详细
--throttle 事件和事件之间延迟
--pct-touch 点击事件,单个点按下抬起,后接百分比
--pct-motion 滑动事件,某一点按下,随机移动距离,抬起
--pct-trackball 模拟轨迹球,包含随机的移动,可能伴随着点击
--pct-nav 外部输入,上下左右操作(没有使用过,但似乎游戏可用)
--pct-syskeys 调整系统事件,包括Home,back ,音量键等等
-p 允许的 package name
-c 指定允许monkey跑的 category,下面有例子
--ignore-crashes 通常monkey 遇到crash 会停止,此选项忽略crash 直到指定次数跑完
--ignore-timeouts 忽略 ANR
--ignore-security-exceptions 忽略Permission error 或者其他 unhandled exception

测试特定Activity

Manifest 文件中定义 category:

<activity android:name="MonkeyActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.MONKEY" />
    </intent-filter>
</activity>

使用命令:

adb shell monkey -p my.package -c android.intent.category.MONKEY -v 500

防止通知栏下拉

在 Android 5.0 Lollipop 及以上系统中可以使用 screen pinning.

  • 在 settings>security>screen pinning
  • 点击 程序切换按钮 multitasking
  • 点击图标上的绿色图钉, pin icon

此时再运行则不会跳出应用。

停止 MonkeyTest

使用以下命令停止 monkey Test :

adb shell ps | awk '/com\.android\.commands\.monkey/ { system("adb shell kill " $2) }'

monkeyrunner

features 功能:

  • 多设备控制,同时在多台设备测试
  • 功能测试
  • 回归测试
  • 可扩展自动化

monkeyrunner 使用 Jython

reference