什么是monkey测试呢?
monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性,健壮性的快速有效的方法。
如果上面的话大家不理解的话,那我通俗的解释一下,monkey测试就是利用工具模拟人的触屏和输入等操作,在短时间内对手机APP疯狂的进行大量的疯狂的乱点,乱按,乱输入的操作,疯狂地去“折腾”这个APP。
monkey测试的目的
那么问题来了,这样去“折腾”一个APP的目的是什么?吃饱了撑着没事干吗?等下APP崩溃了怎么办?没错!monkey测试的目的就是为了看能不能把程序搞崩溃,考验APP的“抗压”能力,在这种高负荷的操作下应用程序很可能会出现不稳定乃至崩溃的现象,所以monkey测试又称压力稳定性测试
monkey测试流程详解
在这里我向大家演示一下如何使用adb命令在模拟器上对app进行monkey测试
首先打开安卓模拟器,点击“添加”把要测试的软件的包添加到模拟器里,在这里我选择的是QQ的包
然后点击启动,会在一个弹出的安卓模拟器屏幕上打开你启动的软件,在这里是打开的是我刚刚添加的QQ轻聊版
然后我们想要对这个软件进行monkey测试,就必须要获取它的包名,那么问题来了,怎么获取?
打开cmd窗口,用adb命令获取,首先用adb devices命令看能不能查看到我的设备
然后用adb shell top命令来查看包名
翻下去可以通过名字看到这是我要找的QQ应用程序的包名,把它复制一下
然后我就可以开始对这个软件进行monkey测试了
monkey测试的基本命令是:
adb shell monkey -p 应用程序的包名 -v 随机事件操作数
-p 表示指定包名,也就是指定被测的应用程序
-v 表示显示程序的信息(它有三个等级,-v ,-vv,-vvv,等级越高显示越详细,在这里我用的是-v)
另外还可以用--throttle给随机事件之间添加间隔时间,单位是毫秒
monkey命令运行完之后,查看运行结果,找找出错的地方,比如一些关键字“error”
如果程序出现崩溃或者不响应的情况,可以在log日志中搜索关键词“exception”、“cash”和“ANR”
顺便解释一下常见的“exception”:
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
违法访问错误:IllegalAccessError
内存不足错误:OutOfMemoryError
堆栈溢出错误:StackOverflowError
单词注释:
error:错误 exception:异常 crash:崩溃 ANR:应用程序不响应