Monkey测试,顾名思义,就是模拟一只猴子在键盘上乱敲,从而达到测试被测系统的稳定性。Monkey测试,是Android自动化测试的一种手段,Monkey测试本身非常简单,Android SDK 工具支持adb Shell命令,实现模拟用户的按键输入,触摸屏输入,手势输入等操作,去发现应用隐藏的严重问题。
Monkey测试真的靠谱吗?
现在线上有很多云测真机平台,平台上基本都支持Monkey测试服务(多数平台收费),同时利用平台上不同的测试机型发现被测应用的稳定性和健壮性问题。
Monkey自动化测试,通过Monkey命令及一些参数,可以控制Monkey在执行过程中出现异常而终止:
- --ignore-crashes #忽略因crash终止测试
- --ignore-timeouts #忽略因超时终止测试
- --ignore-security-exceptions #忽略因权限异常终止测试
- --monitor-native-crashes #监视奔溃时本地代码
尽管Monkey命令可以避免上面所述的情况,但不同的Android 测试应用,功能结构不同,有些应用程序存在广告,有些应用程序内跳链其他应用,这种情况下,Monkey测试过程被测应用有可能是没有被执行的。当然,Monkey还可以指定执行被测应用的Activity(参数:-c
以jenkins+Monkey+Python自动化测试作为实例:
一键构建开始执行Monkey测试,在执行过程中,会记录Monkey的日志,自动分析日志,并生成测试报告。(如图1-1)
经过多次实验证明:在限定的框架页面,Monkey测试是有记忆操作的,与其说记忆操作,不如说是Monkey自动化测试的局限性所在。通过观察与执行日志分析,发现Monkey在执行测试过程中,在同一个功能页面框架下,它的操作总是跟之前的操作趋同,并且容易困在某个功能页面。这也正是Monkey的随机特性所在,有时才能发现被测试应用程序的稳定性和健壮性问题。
最后,我们已经知道Monkey测试并不能在我们预期之内执行100%事件发生在被测应用,从而增加了是否被执行到位的不确定性(概率事件),可以通过二次开发Monkey来实现(主要修改monkey.jar和framework.jar)防跳出、防中断、防锁死、控制随机事件,最终达到测试的预期效果。Monkey的二次开发本文不作为详细说明,感兴趣的同学,可以自行尝试。
源自公众号 虞秀权