查看: 220|回复: 0

[Android教程] Monkey 稳定性测试

发表于 2018-5-7 08:00:02
一、什么是稳定性测试?

通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行

二. Money是什么?

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行测试,检测程序多久的时间会发生异常。和MonkeyRunner几乎是完全不同的,MonkeyRunner相当于是搞自动化测试的了

官方介绍:
https://developer.android.com/studio/test/monkey.html

三. Monkey的介绍

Monkey程序由Android系统自带,使用java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar

Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey

Monkey 命令启动方式
a. 可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试
b. 在PC上adb shell 进入Android系统,通过执行monkey {+命令参数} 来进行Monkey 测试
c. 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器

https://img3.mukewang.com/5ad9c91600010a2b05910478.jpg

四. Monkey架构

https://img1.mukewang.com/5ad9c9210001ca3d07830441.jpg

五. Monkey弱点

Monkey虽然可以根据一个指定的命令脚本发送按键消息,但不支持条件判断,不支持读取待测界面的信息来执行验证操作

六. Monkey的压力测试参数

这里写图片描述


那么这个option通常又分为4大类:常用选项,事件选项,约束选项,调试选项

1.常用选项的参数通常有:

-v 用于反馈信息级别(一个-v表示一个层级,两个-v表示两个层级,通常最多三个-v)

示例Level0:

adb shell monkey -p com.swartz.cicada –v 100

说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 相应源代码如图所示了,这十分有利于调试了

示例Level1:

adb shell monkey -p com.swartz.cicada -v-v 100

说明

提供较为详细的日志,包括每个发送到Activity的事件信息

示例Level2:

adb shell monkey -p com.swartz.cicada -v-v-v 100

说明

最详细的日志,包括了测试中选中/未选中的Activity信息

2.时间选项的参数通常有:

-s 表示伪随机数生成的seed值,如果seed值相同,则两次monkey所产生的事件序列也是一样的

示例:

Monkey测试1:adb shell monkey -p com.swartz.cicada –s 10 100

Monkey 测试2:adb shell monkey -p com.swartz.cicada –s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

--throttle:每个事件结束后的间隔时间

3.约束选项的参数通常有:

-p 指定文件名

count 指定要发送的事件数

-c 用此参数指定一个或几个类别,activity必须指定一个category,才能被启动,否则将会启动不了

4.调试选项的参数通常有:

--dbg-no-events:初始化启动的activity,但是不产生任何事件。

--hprof:指定该项后在事件序列发送前后会立即生成分析报告

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey 测试命令如下:

adb shell monkey -p com.swartz.cicada -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\20170831.txt

kill此参数用来杀掉进程:kill pid 先执行adb shell 再ps |grep monkey 查询结果如下图中15248 即为PID 再kill pid(15248)即可


例子:

[code]DispatchPress (KEYCODE_Z) // 文字输入 monkey 只识别英文和数字输入

原文出处



回复

使用道具 举报