Monkey稳定性测试——你必须要懂的App稳定性测试

App稳定性测试


稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。
指标:
  异常的次数
  异常的频率

App的稳定性测试如何实施?


首选Monkey

Monkey是向系统发送随机的用户事件流(如按键输入、触摸屏输入和手势输入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性。

Monkey运行原因


1、Monkey 程序是由 Android 系统自带,使用 Java 语言写成,其本身是安卓系统下的一个monkey.jar文件。在Android文件系统中的存放路径是: /system/framework/monkey.jar;

2、Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
3、Monkey 启动方式:在 cmd 命令提示符里面输入命令行来启动 monkey 测试。

4、命令行:adb shell monkey——monkey.shell——monkey.jar——安卓进程——设备上执行测试

Monkey原理图:


在这里插入图片描述

Monkey原理图:

thon3.7
Pycharm社区版
SDK 下载网址:http://www.androiddevtools.cn/
雷神模拟器
58同城apk

二、SDK环境搭建


1、下载 android-sdk,这个是做 android 测试和开发的必备环境

2、解压后,里面有个 SDK manager.exe 双击打开
在这里插入图片描述
3.勾选你要现在的 API 版本和对应的 android 版本,后面模拟器会用到,然后坐等下载
在这里插入图片描述
在系统变量新建:ANDROID_HOME,对应变量值:
E:\android-sdk-windows(sdk 安装路径)
在这里插入图片描述
2.path 添加两个变量,将以下箭头所指的两个文件路径添加到 path 里
在这里插入图片描述
path下添加如下两个路径:

E:\android-sdk-windows\tools 和 E:\android-sdk-windows\platform-tools
在这里插入图片描述
adb环境

1.因为 adb 是在 D:\androidsdk\android-sdk-windows\platform-tools

这个目录下的,所以上面添加了环境变量后,可以直接在 cmd 里面运行了。

2.在 cmd 输入 adb 可以查看对应版本号
在这里插入图片描述
三、连接雷神模拟器—adb connect 127.0.0.1:5555

首先要打开USB调式选项(默认是没有开启调式模式的)

开启调式模式操作步骤:依次打开设置–关于-连击5次版本号,再返到我设置主页就可以看到开发者选项
在这里插入图片描述
雷电模拟器:adb connect 127.0.0.1:5555

使用指令:adb devices
在这里插入图片描述
连接信息解释
手机设备:显示设备的序列号,即b2355f8a

模拟器:显示ip地址和端口,即127.0.0.1:62001

device:已识别的设备,连接成功

unauthorized:没有授权,需要手机上授权后才能连接

unkown:未识别的设备

offline:离线设备

主流安卓模拟器连接方式:
夜神模拟器:adb connect 127.0.0.1:62001
逍遥安卓模拟器:adb connect 127.0.0.1:21503
天天模拟器:adb connect 127.0.0.1:6555
海马玩模拟器:adb connect 127.0.0.1:53001
网易MUMU模拟器:adb connect 127.0.0.1:7555 MacOS:adb connect 127.0.0.1:5555
genymotion模拟器:adb connect 127.0.0.1:5555
谷歌原生模拟器:adb connect <设备的IP地址>:5555

Monkey


Monkey命令-事件数
Monkey支持的所有命令

adb shell monkey
在这里插入图片描述

必选的命令


COUNT:事件数
通过事件数量来测试稳定性
adb shell monkey 次数 即,adb shell monkey 50
在这里插入图片描述
注:可能小伙伴发现这速度也忒快了,我看都没看清,这人的速度也没这么快,不合理。哈,那接着,控制每一次操作的间隔时间

Monkey命令-事件间隔
–throttle 在事件之间插入固定延迟。通过这个选项可以控制Monkey发送事件的频率。时间单位是ms(毫秒)1000毫秒=1秒

例1:发送10个事件,持续执行时间1分钟

adb shell monkey --throttle 6000 10,即10个事件,做完一个事件就等待6秒后再执行

–randomize-throttle 用这个参数必须与–throttle 绑定使用。用于在事件之间插入随机延迟,随机延迟范围为0到throttle设置的时间,单位为毫秒;

例:adb shell monkey -p com.tencent.edu --throttle 500 --randomize-throttle 100
在这里插入图片描述
备注:扯了半天,小伙伴想知道我要去检测公司的app倒 底要怎么整

Monkey命令-指定包


p 此参数指定了一个包,Monkey将只允许系统启动这些包里的Activity

-p -p 如果用此参数指定了多个包,Monkey将只允许系统启动这些包里的Activity
例3:对58同城进行稳定性测试,执行100次事件
adb shell monkey -p com.wuba 100

在这里插入图片描述

获取包名


adb shell pm list packages
在这里插入图片描述
知识点:
有可伙伴可能会问,我压根不知道我学习的app的名包叫啥那怎么找呢?
aapt dump badging D:\test\xxx.apk(APK的全名),如手机淘宝.apk
在这里插入图片描述

在这里插入图片描述
Monkey命令-日志设置
-v Level 0 除启动提示、测试完成和最终结果之外,提供较少信息

-v-v Level 1 提供较为详细的测试信息,如逐个发送到Activity的事件

-v-v-v Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

例4:对58同城进行稳定性测试,执行100次事件,分别查看不同日志级别记录的信息情况

adb shell monkey -p com.wuba -v 100
adb shell monkey -p com.wuba -v-v 100
adb shell monkey -p com.wuba -v -v -v 100

日志导出到本地


adb shell monkey -p com.wuba -v-v-v 100 >d:\wuba.txt
在这里插入图片描述
Monkey命令-seed值
在Monkey运行过程中,肯定会发现异常、奔溃、无响应等问题,对于此类问题如何进行复现呢?

-s 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。

monkey日志分析详解


日志内容分析:
a. 程序无响应,ANR问题:在日志中搜索“ANR”
b. 崩溃问题:在日志中搜索“CRASH”
c. 其他问题:在日志中搜索”Exception”

日志内容解析
Monkey 在运行是输出的信息包含一般四类,分别是测试命令信息,事件流信息,异常信息, 执行结果信息:
测试命令信息 此类信息流主要包括在monkey启动后输出的当前执行各种参数信息,其中主要包括:种子值(seed),事件数量,运行的应用列表,各种事件的百分比等。这部分日志信息解析主要如下所示:

// 测试命令信息
// 随机种子值,执行事件数量
:Monkey: seed=1617866276701 count=100000
// 可运行的应用列表
:AllowPackage: com.car300.activity
//Category 包含LAUNCHER 和MONKEY
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// 各事件的百分比
 Event percentages:
// 触摸类事件占15%
0: 15.0% 事件0 :--pct-touch
// 手势类事件占10%
1: 10.0% 事件1 :--pct-motion
// 二指缩放类事件占2%
2: 2.0% 事件2 :--pct-pinchzoom
// 轨迹类事件占15%
3: 15.0% 事件3 :--pct-trackball
// 旋转类事件占0%
4: -0.0% 事件4 :--pct-rotation
// 基本导航类事件占25%
5: 25.0% 事件5 :--pct-nav
//主要导航栏类事件占15%
6: 15.0% 事件6 :--pct-majornav
//系统按键类事件占2%
7: 2.0% 事件7 :--pct-syskeys
//启动activity类事件占2%
8: 2.0% 事件8 :--pct-appswitch
//键盘类事件占1%
9: 1.0% 事件9 :--pct-flip
//其他事件类占13%
10: 13.0% 事件10 :--pct-anyevent

事件流信息 当命令开始执行测试后,会依次输出相应执行的事件流信息,主要包括前面提到的事件。这部分日志信息解析主要如下所示:

// 执行的事件流信息
// 启动App 事件
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.car300.activity/com.che300.toc.module.splash.SplashActivity;end
 // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.car300.activity/com.che300.toc.module.splash.SplashActivity mCallingUid=2000 } in package com.car300.activity
Sleeping for 300 milliseconds
// 轨迹球事件(后面括号里面是表示点击的位置坐标)
:Sending Trackball (ACTION_MOVE) 0:(907.6482,501.939)
// 点击事件(后面括号里面是表示点击的位置坐标)
:Sending Touch (ACTION_DOWN):  0:(338.0,676.0)
:Sending Touch (ACTION_UP): 0:(325.4063,658.7628)
// 延时2秒(每一个事件之间的间隔时间)
Sleeping for 300 milliseconds 
//其他事件
......

异常信息 在执行过程中遇到错误或者异常时,会输出相应的信息。这部分日志信息解析主要如下所示:

// 发送Crash 的应用包名和pid
 CRASH: com.car300.activity (pid 912)
//Crash 的简要信息(提示文件未找到)
 Short Msg: java.lang.ClassNotFoundException
//Crash 的详细信息
Long Msg: java.lang.ClassNotFoundException: Didn't find class "com.qq.AppService.AstApp" on path DexPathList[[zip file "/data/app/monkey.apk"],nativeLibraryDirectories[/data/app-lib/com.car300.activity.android.qqdownloader-2, /vendor/lib, /system/lib]]
// 机型和系统信息
 Build Label: Xiaomi/pisces/pisces:4.4.4/KTU84P/5.12.24:user/release-keys
 Build Changelist: 5.12.24
 Build Time: 1450958964000
//Crash 的详细日志
java.lang.RuntimeException: Unable to instantiate application com.qq.AppService.AstApp: java.lan.ClassNotFoundException: Didn't find class "com.qq.AppService.AstApp" on path: DexPathList[[zip fil "/data/app/monkey.apk"],nativeLibraryDirectories=[/data/app-lib/com.
car300.activity.android.qqdownloader-2, /vendor/lib, /system/lib]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:509)
at android.app.ActivityThread.access$1500(ActivityThread.java:138)
at dalvik.system.NativeStart.main(Native Method)
... 11 more

执行结果信息
当命令执行完所有事件后,会输出相应执行结果信息,其中包括执行的事件数量、旋转的角度、丢失等事件数量、网络状态以及 最终的执行结果。这部分日志信息解析主要如下所示:

// 执行的事件数量
Events injected: 100000
// 旋转的角度为0
:Sending rotation degree=0, persist=false
// 丢失的事件数量,按键0,提示0,轨迹球0,翻转0,旋转0
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
// 网络状态,移动网络 0ms ,Wi-Fi 0ms ,无网 144ms
## Network stats: elapsed time=9947108ms (0ms mobile, 0ms wifi, 9947108ms not connected)
// Monkey finished

2.如果执行过程中出现了异常导致执行失败,会输出对应的执行失败的原因,比如第几个事件执行失败以及所使用的随机种子数。这部分日志信息解析主要如下所示:

// 显示Monkey 执行失败
** Monkey aborted due to error.
// 执行的事件数量
Events injected: 8
// 旋转的角度为0
:Sending rotation degree=0, persist=false
// 丢失的事件数量,按键0,提示0,轨迹球0,翻转0,旋转0
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
// 网络状态,移动网络 0ms,Wi-Fi 0ms,无网 405ms
## Network stats: elapsed time=405ms (0ms mobile, 0ms wifi, 405ms not connected)
// 提示在执行到第8 个事件时出现Crash ,以及所使用的随机种子值
** System appears to have crashed at event 8 of 10 using seed 1454215444564

Monkey测试出现错误后,一般的查错步骤分为以下几步:
找到是monkey里面的哪个地方出错;
查看Monkey里面出错前的一些事件动作,并手动执行该动作;
若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样;

日志异常信息查找

Monkey 执行过程中常见的错误类型主要有两类:
程序无响应( ANR ):Android 系统监测到应用程序在 5 秒内没有响应输入的事件或广播在 10 秒内没有执行完毕时抛出无响应提示。
崩溃( Crash ):当应用程序出现错误时导致程序异常停止或退出的情况。
在这里插入图片描述

使用场景:


复现bug,回归测试(验证bug)
adb shell monkey -s 1593077384911 -p com.wuba -v-v-v 100 >d:\wuba4.txt
adb shell monkey -s 100 -p com.wuba -v-v-v 50

在Monkey运行过程中,我们可以通过结束进程的方式来终止Monkey的执行,当然在运行过程中遇到异常、奔溃等情况Monkey也会停止。为了保证执行的事件数执行完整,我们可以通过调试选项的设置来防止在运行过程中Monkey命令的提前结束。

–ignore-crashes 忽略在应用程序出现crash时导致的monkey停止

–ignore-timeouts 忽略在应用程序出现ANR问题时导致monkey停止

–ignore-security-exceptions 忽略应用程序发生许可错误时导致monkey停止

例5:对58同城进行稳定性测试,执行50次事件,忽略过程中遇到的异常,直到50次事件完成

adb shell monkey -p com.wuba --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 50

Monkey百分比事件

1.触摸事件
触摸事件是指在屏幕某处按下并抬起的操作,可通过–pct-touch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Touch (ACTION_DOWN): 0, (444.0,1716.0)
:Sending Touch (ACTION_UP): 0, (447.18365,1728,0087)
该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到实际操作类似于点击。
2.手势事件
手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。可通过–pct-motion参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Touch (ACTION_DOWN): 0:(282.0,750.0)
:Sending Touch (ACTION_MOVE): 0:(281.0507,745.5253)
:Sending Touch (ACTION_MOVE): 0:(274.9443,743.3276)
:Sending Touch (ACTION_MOVE): 0:(269.18774,738.50525)
:Sending Touch (ACTION_MOVE): 0:(260.14917,733.6212)
:Sending Touch (ACTION_UP): 0:(254.1414,730.6132)
该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。
3.二指缩放事件
二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。可通过–pct-pinchzoom参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Touch (ACTION_DOWN): 0:(274.0,193.0)
:Sending Touch (ACTION_POINTER_DOWN 1): 0:(272.80875,198.17978) 1:(26.0,312.0)
:Sending Touch (ACTION_MOVE): 0:(251.31396,198.5104) 1:(24.973522,308.64676)
:Sending Touch (ACTION_MOVE): 0:(240.28494,202.44012) 1:(23.442032,307.8576)
:Sending Touch (ACTION_MOVE): 0:(221.90855,206.75597) 1:(22.903313,306.47507)
:Sending Touch (ACTION_MOVE): 0:(210.28592,212.24286) 1:(17.78174,303.11304)
:Sending Touch (ACTION_POINTER_UP 1): 0:(171.06334,236.1724) 1:(10.3147135,293.79877)
:Sending Touch (ACTION_UP): 0:(161.06638,240.22447)
该事件起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。
4.轨迹事件
轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。可通过–pct- trackball参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Trackball (ACTION_MOVE): 0:(2.0,3.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(2.0, -3.0)
该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作。
5.屏幕旋转事件
屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。可通过–pct- rotation参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending rotation degree=1, persist=false
:Sending rotation degree=3, persist=true
:Sending rotation degree=2, persist=true
:Sending rotation degree=0, persist=true
该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。
6.基本导航事件
基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。可通过–pct- nav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Key (ACTION_DOWN): 19 // KEYCODE_DPAD_UP
:Sending Key (ACTION_UP): 19 // KEYCODE_DPAD_UP
:Sending Key (ACTION_DOWN): 20 // KEYCODE_DPAD_DOWN
:Sending Key (ACTION_UP): 20 // KEYCODE_DPAD_DOWN
:Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21 // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_DOWN): 22 // KEYCODE_DPAD_RIGHT
:Sending Key (ACTION_UP): 22 // KEYCODE_DPAD_RIGHT
该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上、下、左、右四个方向按键。
7.主要导航事件
主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如5-way键盘的中间键、回退按键、菜单按键。可通过–pct-majornav参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Key (ACTION_DOWN): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_UP): 23 // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_DOWN): 82 // KEYCODE_MENU
:Sending Key (ACTION_UP): 82 // KEYCODE_MENU
该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是中间键和菜单键。
8.系统按键事件
系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。可通过–pct-syskeys参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Key (ACTION_DOWN): 5 // KEYCODE_CALL
:Sending Key (ACTION_UP): 5 // KEYCODE_CALL
:Sending Key (ACTION_DOWN): 4 // KEYCODE_BACK
:Sending Key (ACTION_UP): 4 // KEYCODE_BACK
:Sending Key (ACTION_DOWN): 3 // KEYCODE_HOME
:Sending Key (ACTION_UP): 3 // KEYCODE_HOME
:Sending Key (ACTION_DOWN): 24 // KEYCODE_VOLUME_UP
:Sending Key (ACTION_UP): 24 // KEYCODE_VOLUME_UP
:Sending Key (ACTION_DOWN): 25 // KEYCODE_VOLUME_DOWN
:Sending Key (ACTION_UP): 25 // KEYCODE_VOLUME_DOWN
该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上面说到的几个系统按键。
9.启动Activity事件
启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过–pct-appswitch参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Switch: #Intent; action=android.intent.action.MAIN; category=android.intent.
category.LAUNCHER; launchFlags=0x10200000; component=com.android.settings/.
Settings; end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.
intent.category.LAUNCHER] cmp=com.android.settings/.Settings } in package com.
android.settings
该事件是由一个Switch操作组成的,从手机上看,上面的操作实际是打开了com. android.settings这个应用的一个com.android.settings.Settings的Activity界面。
10.键盘事件
键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。可通过–pct-flip参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Flip keyboardOpen=false
:Sending Flip keyboardOpen=true
如日志所示,这里主要是键盘的打开和关闭操作。
11.其他类型事件
其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过–pct-anyevent参数来配置其事件百分比。从Monkey执行该事件对外输出的日志可以看到:
:Sending Key (ACTION_DOWN): 59 // KEYCODE_SHIFT_LEFT
:Sending Key (ACTION_UP): 59 // KEYCODE_SHIFT_LEFT
:Sending Key (ACTION_DOWN): 138 // KEYCODE_F8
:Sending Key (ACTION_UP): 138 // KEYCODE_F8
:Sending Key (ACTION_DOWN): 45 // KEYCODE_Q
:Sending Key (ACTION_UP): 45 // KEYCODE_Q
:Sending Key (ACTION_DOWN): 192 // KEYCODE_BUTTON_5
:Sending Key (ACTION_UP): 192 // KEYCODE_BUTTON_5
0:–pct-touch

touch events percentage触摸事件百分比(触摸事件是一个在屏幕单一位置的按下-抬起事件)

1:–pct-motion

motion events percentage手势事件百分比(手势事件是由一个在屏幕某处的按下事件、一系列的伪随机移动、一个抬起事件组成)即一个滑动操作,但是是直线的,不能拐弯

2:–pct-pinchzoom

pinch zoom events percentage二指缩放百分比,即智能机上的放大缩小手势操作

3:–pct-trackball

trackball events percentage轨迹球事件百分比(轨迹球事件包括一个或多个随机移动,有时还伴有点击。轨迹球现在智能手机上已经没有了,就是类似手柄的方向键一样)

4:–pct-rotation

screen rotation events percentage屏幕旋转百分比,横屏竖屏

5:–pct-permission

runtime permission toggle events percentage:运行时权限开关事件百分比(相比2015年新增)

6:–pct-nav

nav events percentage”基本”导航事件百分比(导航事件包括上下左右,如方向输入设备的输入)老手机的上下左右键,智能机上没有

7:–pct-majornav

major nav events percentage”主要”导航事件百分比(这些导航事件通常会引发UI的事件,例如5-way pad的中间键、回退键、菜单键)

8:–pct-syskeys

system(key) operations percentage”系统”按钮事件百分比(这些按钮一般专供系统使用,如Home, Back, Start Call, End Call,音量控制)

9:–pct-appswitch

app switch events percentage启动activity事件百分比。在随机的间隔里,Monkey会执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

10:–pct-flip

keyboard flip percentage键盘轻弹百分比,如点击输入框,键盘弹起,点击输入框以外区域,键盘收回

11:–pct-anyevent

any events percentage其他类型事件百分比。包括了其他所有的类型事件,如按键、其他不常用的设备上的按钮等等。

例:adb shell monkey -p com.tencent.edu --pct-touch 10 -v -v 100
在这里插入图片描述
-pkg-whitelist-file 白名单,后面接txt文件,指定白名单参数后只测试白名单的应用程序

–pkg-blacklist-file 黑名单,后面接txt文件,指定黑名单参数后,避开黑名单的应用程序

例:adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100

注:黑白名单命令不能同时使用

总结:

1、Monkey是对安卓apk进行随机事件的操作,通过报告来查看apk是否稳定

2、只适用安卓平台

3、根据公司不同产品的特性可设置不同概率来针对性测试或回归(如抖音他的滑动频率高)

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值