APP测试— 测试工具mokey

时间:2024-03-16 10:44:56

1 Mokey概念

1)Monkey是Android SDK提供的一个命令行工具,可以简单、方便的运行任何版本的Android模拟器和实体设备。Monkey它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效方法。

2)ADB环境:Monkey测试使用的是ADB命令,因此只需要ADB环境(adb就是连接Android 手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作)

2 运行Monkey(对手机进行300次无规律点击)

1)查看包名(相机camera)

方法一:直接查看手机中存在的apk包,进入adb shell命令后—手机的data/data文件夹–ls查看所有包名 找到要测的apk包名
APP测试— 测试工具mokey
2)运行mokey,对此包进行300次无规律点击:adb shell monkey -p com.android.camera -v 300
APP测试— 测试工具mokey
3)把日志输出到指定文件中,不在命令行展示:adb shell monkey -p com.android.camera -v 300 > E:\Code\APP测试\test.log
APP测试— 测试工具mokey

3 Mokey常规参数

1)-help 作用:列出简单的用法
APP测试— 测试工具mokey
2) -v的作用:命令行上的每一个 -v都将增加反馈信息的详细级别。

level0(默认1个v),除了启动,测试完成和最终结果外只提供较少的信息。

level1(2个v),提供了较为详细的测试信息,如逐个发送到Activity的事件信息。

level2(3个v),提供了更多设置信息,如测试中选中或未选中的Activity信息

  • 常用-v-v-v,最多详细信息,一般会保存到指定文件中提供开发人员查找bug原因的使用

4 Monkey 事件类参数

1)-s(随机数种子)作用:用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。示例:
实例1:adb shell monkey -s 10 -v 30
30次无规律点击,测试完成和最终结果外只提供较少的信息。随机数生成器的seed为10
APP测试— 测试工具mokey
2)–throttle <毫秒> 作用:用于指定用户操作(事件)间的延时,单位是毫秒;在事件之间插入固定延迟,通过这个选项可以减缓Monkey执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快的产生。

注意:常用参数,一般设置为300ms,原因是实际用户操作的最快300ms左右一个动作事件,所以此处一般设置为300ms。

实例如下:adb shell monkey -p com.android.camera --throttle 300 -v 10
APP测试— 测试工具mokey
3)–pct- {+事件类别} {+事件类别百分比}

用于指定每种类别事件的数目百分比(在monkey事件序列中,该类事件数目占总事件数目的百分比)

monkey参数
APP测试— 测试工具mokey

–pct-touch < percent >作用:调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)

注意:
常用参数,此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比

实例:
adb shell monkey -p com.android.camera --pct-touch 100 -v 10
APP测试— 测试工具mokey

–pct-motion < percent >作用:调整motion事件百分比。
(motion事件是由屏幕上某处一个down事件,一系列伪随机的移动事件和一个up事件组成)
注意:
常用参数,需要注意的是移动事件是直线滑动
实例:
shell monkey --pct-motion 100 -v 10APP测试— 测试工具mokey

4)以下是不常用事件:

–pct-trackball < percent >作用:调整滚动球事件百分比。(滚动事件由1个或多个随机的移动事件组成,有时会伴随着点击事件)
注意
不常使用参数,现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数。
例如:adb shell monkey --pct-trackball 100 -v 10
–pct-nav < percent > 作用:调整基本的导航事件百分比。(导航事件由方向输入设备的上下左右按键所触发的事件组成)
注意:不常用
例如:adb shell monkey --pct-nav 100 -v 10

–pct-majomav < percent >作用:调整主要导航事件的百分比。(这些导航事件通常会导致UI姐中的动作事件,如5-way键盘的中间键,回退按键、菜单按键)
注意:不常用操作
例如:adb shell monkey --pct-majornav 100 -v 10

–pct-syskeys < percent >作用:调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、End Call、音量调节)
注意:不常用
例如:adb shell monkey --pct-syskeys 100 -v 10
–pct -appwitch < percent >
作用:调整Activity启动的百分比。(随机的时间间隔,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法)
注意:不常用
例如:adb shell monkey --pct-appswitch 100 -v 5
–pct-anyevent
作用:调整其他事件的百分比。(包含所有其他事件,如按键、其他在设备上不常用的按钮等)
注意:不常用
例如:adb shell monkey --pct-anyevent 100 -v 5

–pct-anyevent 100 1000 指定多个类型事件的百分比
注意:各事件类型的百分比总数不能超过100%
例如:adb shell monkey -p com.android.camera --pct-anyevent 30 --pct-appswitch 70 -v 10

5)Monkey 百分比事件

查看事件百分比:adb shell monkey -v 10
APP测试— 测试工具mokey

0:触摸事件百分比,即参数–pct-touch
1:滑动事件百分比,即参数–pct-motion
2:缩放事件百分比,即参数–pct-pinchzoom
3:轨迹球事件百分比,即参数–pct-trackball
4:屏幕旋转事件百分比,
5:基本导航事件百分比,即参数–pct-nav
6:主要导航事件百分比,即参数–pct-majornav
7:系统事件百分比,即参数–pct-syskeys
8:Activity启动事件百分比,即参数–pct-appswitch
9:键盘翻转事件百分比,即参数–pct-flip
10:其他事件百分比,即参数–pct-anyevent

5 Monkey 约束类参数

1)-p <允许的包名列表>

作用:可指定一个包或多个包,指定后monkey将只允许系统启动指定的包,如果不指定包,monkey将允许系统启动设备中的所有app。

注意:常用参数

  • 指定1个包(10是点击数): adb shell monkey -p 包名 10
  • 指定多个包(10是点击数): adb shell monkey -p 包名1 -p 包名2 10

2)–ignore-crashes

作用:用于指定当应用程序崩溃时(Force & Close错误),Monkey是否停止运行。如果使用此参数。即使应用程序崩溃,Monkey依然胡发送事件,直到事件计数完成
注意:常用

实例1:adb shell monkey -p com.android.camera --ignore-crashes 1000
测试过程中即使camera程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止
APP测试— 测试工具mokey

实例2:adb shell monkey -p com.android.camera 1000
测试过程中,如果camera程序崩溃,monkey将会停止运行。
APP测试— 测试工具mokey
3)–ignore-timeouts

作用:通常应用程序发生任何超时错误(如:"Application Not respnding"对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
注意:常用

4)–ignore-security-exception

作用:当程序发生许可错误(例如启动一些需要许可的Activity,正数许可,网络许可等)导致的异常时,Monkey将停止运行。设置此项。Monkey将继续发送事件给系统,直到事件计数完成,
注意:常用

杀进程(com.netease.qa.emmage/.activity.MainPageActivity)
adb shell ps | findstr emmage
adb shell kill pid