Monkey是安卓中的一个命令行工具,可以运行在模拟器里或者实际设备中。
它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行测试,是一种为了测试软件的稳定性、健壮性的快速有效的方法。
Monkey的运行时机:产品功能稳定之后
Monkey的特征:
测试的对象仅为应用程序包,有一定的局限性
测试时使用的事件流数据流是随机的,不能进行自定义
可对MonkeyTest的对象、事件数量、类型、频率等进行设置
运行条件:基于搭建好的安卓测试开发环境
使用步骤:
1.启动模拟器or连接真机,adb devices验证
2.确定你要测试应用的PackageName
3.使用Monkey发一条测试命令
确定PackageName是关键
可以直接问开发,
或者用ui automator vierer查看,
或者自己找(极度不推荐)
自己找的方法如下:
在PC上的命令行输入 adb logcat *:I > d:/log.txt,回车
在安卓设备上点击一下你要测试的应用,然后就无需其他操作了
Ctrl C 停掉(为了避免过多的新信息)
打开d:/log.txt
从文件最下面开始找以下格式的信息
I/ActivityManager(数字):Displayed 包名/类名:+数字ms
如以下,包名为:com.android.calculator2
I/ActivityManager( 363): Displayed com.android.calculator2/.Calculator: +2s312ms
使用Monkey发一条测试命令
adb shell monkey -p com.android.calculator2 -v 50
Monkey基础命令语法
adb shell monkey[options]
adb shell monkey -p 包名 -v 500 > d:/log1.txt
-v:(打印的日志)显示默认程度的信息
500:设定事件数
进阶用法:
adb shell monkey -p 包名 -v -v --pct-touch 50 --pct-trackball 30 --ignore-crashes --ignore-timeouts -s 1234 --throttle 600 500 > d:/log1.txt
指定monkey报告等级,一个 -v增加一个级别,默认缺省值是0级, -v, 0(缺省值),除启动提示、测试完成和最终结果之外,提供较少信息 -v -v, 1,提供较为详细的测试信息,如:逐个发送到Activity的事件 -v -v -v, 2,提供更加详细的设置信息,如:测试中被选中的或未被选中的Activity
--pct-touch:设置在整个过程中点击操作所占的百分比 --pct-trackball:设置滚轮在所有操作中的百分比 --ignore-crashes --ignore-timeouts --ignore-security-exceptions:当应用程序发生许可错误时(如证书许可,网络许可等) --ignore-native-crashes --monitor-native-crashes:监视并报告应用程序发生崩溃的本地代码 -s:seed值 --throttle 每个操作间隔600ms
Monkey命令结果分析要点:
找monkey里面的那个出错的地方(Error,Exception,Crash)
查看monkey里面出错前的一些事件动作,并手动执行该动作
若以上步骤还不能找出,可以再执行一遍,注意seed值要一样(-s seed值)
注意第一个switch以及其他异常信息
Monkey测试的目的
ANR问题:在日志中搜索ANR(Applicaton Not Responding)
崩溃问题:在日志中搜索Error,Exception,Crash
monkey案例分析:
**System appears to have crashed at event 48 of 500 using seed 0
-----说明系统在500个操作的第48个操作出现了异常,用的种子是0。
如果想使用相同的操作序列再现这个异常,就可以使用如下命令:
abd shell monkey -p 包名 -s 0 500
测试中用的命令:
adb shell monkey -p 包名 -v -v -v --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes --throttle 500 1000 > d:/log11.txt