Monkey 测试是通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序客户端的稳定性测试
Monkey 测试是为了测试软件的稳定性、健壮性
Monkey 程序需要通过 adb 来运行
安装并配置好 adb 环境,并通过 adb 连接好设备;
获取被测应用的包名;
执行 Monkey 命令进行测试
Monkey支持11种事件,主要是以下5种…
Touch触摸事件-即点击:由屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作
Trackball滚动球事件-即轨迹:由一个或多个随机的移动事件组成,有时会伴随着点击事件
motion滑动事件:由屏幕上某处一个down事件、一系列随机的移动事件和一个up事件组成
nav基本导航事件:由方向输入设备的上下左右按键所触发的事件组成
majornav主要导航事件:通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退 按键、菜单按键
Monkey 测试,所有的事件都是随机产生的,不带人的主观性
1、测试的对象仅为应用程序包,有一定的局限性
2、Monky测试使用的事件数据流是随机的,不能进行自定义
3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置
$ adb shell monkey [options]
如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件
$ adb shell monkey -p your.package.name -v 500
使用android自动化测试工具monkey启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法:
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
违法访问错误:IllegalAccessError
内存不足错误:OutOfMemoryError
堆栈溢出错误:StackOverflowError
1、 Null指针异常
空指针异常主要是有NullPointerException异常提示,在Monkey测试过程中,该信息一般记录在plog.log (locat中也有该信息)中
2、 debug异常
debug异常主要是由于应用程序本身的错误导致的异常。在Monkey测试过程中,该信息同样记录在plog.log (locat中也有该信息)中。一般情况下,出现的该问题,很可能在手动测试时也可以测试到
3、 低内存异常
低内存异常一般情况下,主要表现在出现OutOfMemoryError异常或者提示Out of memory,其后果同样表现为抛出OutOfMemoryError异常或者是通过kill process 来杀掉部分进程以释放内存空间,当然如果被kill点关键的进程的话,也就可能导致部分应用会自动的退出。出现该情况时,主要是在进行频繁的进行大量的操作导致的,所以使用手动的方式也是可能进行重现的
4、 操作无响应异常
操作无响应的问题,主要表现在Monkey运行过程中,出现某功能无响应,提示是否“强制关闭“或“等待“,同时会打印出相应的log信息
5、 其他异常
Restart System异常(系统重新启动),即log信息的最后几行会看到Restart System的打印信息,说明手机被自动的重启或断掉,有几个方面的原因
a、 运行过程中,存在异常手机被自动重启
b、 手机在运行过程中,进入设置中的恢复出场设置,导致手机重启
c、 其他原因,如果手机后盖移动等
初步分析
Monkey测试出现错误后,一般的查错步骤为以下几步
1、找到是monkey里面的哪个地方出错
2、查看Monkey里面出错前的一些事件动作,并手动执行该动作
3、若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样–复现
测试结果分析
1、 ANR问题:在日志中搜索“ANR”
2、崩溃问题:在日志中搜索“Exception” Force Close