Monkey自动化测试

1. Monkey测试简介

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

2. Monkey程序介绍

Monkey程序由Android系统自带,使用java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;
Monkey.jar程序是由一个名为“monkey”的shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;
这样可以通过在cmd窗口中执行:adb shell monkey (+命令参数)来进行Monkey测试。

3. Monkey命令的简单帮助

要获取Monkey命令自带的简单帮助,在cmd中执行命令:adb shell monkey –help

4. Monkey命令参数介绍

1>.参数:-p(后面跟要覆盖测试的报名。可以有多个-p,每个-p后跟一个报名)

参数 –p 用于约束限制,用此参数指定一个或多个包(Package,即App).指定包之后,Monkey将只允许系统启动指定的App。如果不指定包,Monkey将允许系统启动设备中的所有App。
指定一个包:adb shell monkey –p com.app.test 100
说明:com.app.test为包名,100是事件计数(即让Monkey程序模拟100次随机用户时间)
指定多个包:adb shell monkey –p com.app.test –p com.app.tester 100
不指定包:adb shell monkey 100
说明:Monkey随机启动App并发送100个随机事件
查看设备中所有的包,在cmd窗口中执行如下命令:
adb shell
cd data/data
ls

2>.参数:-v (可以有多个,个数越多,产生的log越详细。最多为三个)

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表示:
日志级别 Level 0
示例:adb shell monkey –p com.app.test –v 100
说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息
日志级别 Level 1
示例:adb shell monkey –p com.app.test –v –v 100
说明:提供较为详细的日志,包括每个发送到Activity的事件信息
日志级别 Level 2
示例:adb shell monkey –p com.app.test –v –v –v 100
说明:最详细的日志,包括了测试中、选中/未选中的Activity信息

3>.参数:-s (后面跟整数,相同的seed值表示产生的随机事件流相同)

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同
示例:
Monkey 测试1:adb shell monkey –p com.app.test –s 10 100
Monkey 测试2:adb shell monkey –p com.app.test –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列是一样的

4>.参数:–throttle <毫秒> (后面跟毫秒数,表示每个随机事件中间的事件间隔)

用于指定用户操作(即事件)间的时延,单位是毫秒;
示例:adb shell monkey –p com.app.test –throttle 300 100

5>.参数:–ignore-crashes (发生crash时,不停止monkey执行)

用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
示例:adb shell monkey –p com.app.test –ignore-crashes 100

6>.参数:–ignore-timeouts (发生ANR时,不停止monkey执行)

用于指定当应用程序发生ANR (Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

7>.参数:–ignore-security-exceptions (发生许可错误时,不停止monkey执行)

用于指定当应用程序发生许可错误时,Monkey是否停止运行,如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

8>.参数:–kill-process-after-error (发生错误时,停止monkey执行)

用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态。(系统不会结束该应用程序的进程)

9>.参数:–monitor-native-crashes

用于指定是否监视并报告应用程序发生崩溃的本地代码
四小时Momkey:
adb shell monkey -p com.app.test -v -v -v –throttle 300 –ignore-crashes –ignore-timecouts –ignore-security-exceptions 14400000 >test.log

5. Monkey日志分析(重要)

Null指针异常:空指针异常主要是有NullPointerException异常提示
debug异常:出现的是IllegalStateException异常
低内存异常:出现的是OutOfMemoryError异常
操作无响应异常:TimerOut(KeyDispatchingTimedOut提示)
RuntimeException异常(操作无响应或应用的服务无法启动或连接)
StaleDataException/readException异常(android数据库出现异常)
IllegalArgumentException异常(向函数传递了一个不正确或不合法的参数)
关键词:ANR、Exception、Null、Error、crash(Fatal)

猜你喜欢

转载自blog.csdn.net/weixin_42279304/article/details/80916562