文章目录
- 一、Monkey-App稳定性测试
- 1.1、环境安装同adb《略》
- 1.2、monkey测试
- 1.3、monkey测试日志分析
- 二、monkey脚本开发
一、Monkey-App稳定性测试
1.1、环境安装同adb《略》
- 直接上命令行,并解释有用到的参数意义
adb shell monkey -p com.chutzpah.yasibro.test -s 120 --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 2000> d:\monkey_test.txt
-p:app包名;如果有多个app同时测试:-p包名 -p包名
-s:种子值:注意:-s需要跟在包名后,次数前
--throttle:每个操作的间隔时间,单位ms
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:当应用程序发生错误时,应用程序停止运行并保持在当前状态
--monitor-native-crashes:用于指定是否监视并报告应用程序发生崩溃的本地代码
--hprof:该选项设置后,将会在monkey事件序列前后立刻生成report,大小为大于5MB,存储在/data/misc
-v -v -v:日志详细等级,3个v代表最详细等级的日志
2000 随机事件的次数,每隔--throttle时间一次:
d:\monkey_test.txt:代表将产生的日志,放到本地的D盘,并命名为:monkey_test.txt
1.2、monkey测试
- 不要把猴子归纳到app的性能测试,只能是稳定性测试
#猴子自动化测试
adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50
#获取内存信息
adb shell dumpsys meminfo cn.microinvestment.weitou
如果发现内存过大,则保存HPROF文件:adb shell am dumpheap <进程名> <保存路径>
#抓取日志
adb logcat |findstr "ActivityName | packagename" 通过关键字来过滤日志
adb logcat |findstr "ActivityName | packagename" /sdcard/logcat.log
- 写一条完整的比较符合命令执行的monkey命令:
- adb shell monkey -p {0} -s {1} --throttle {2} --pct-touch {3} --pct-motion {4} --pct-trackball {5} --pct-nav {6} --pct-majornav {7} --pct-syskeys {8} --pct-appswitch {9} --pct-flip {10} --pct-anyevent {11} -v -v -v {12} >{13}
参数解释:{0}包名,{1}随机数生成的种子、{2}延迟执行事件,{12}执行次数、{13}日志输出路径
-s 用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。一般测试过程中出现崩溃,可以通过seed值来完成复现。
--throttle <毫秒> 用于指定用户操作(即事件)间的时延,单位是毫秒;
-p <allowed-package-name>
用于约束限制,用此参数指定一个或多个包。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。指定多个包,使用多个-p,一个-p后面接一个包名。
0:点击事件百分比,即参数--pct-touch 15%
1:滑动事件百分比,即参数--pct-motion 10%
2:缩放事件百分比,即参数--pct-pinchzoom 2%
3:轨迹球事件百分比,即参数--pct-trackball 15%
4:屏幕旋转事件百分比,即参数--pct-rotation 0%
5:基本导航事件百分比,即参数--pct-nav 30%
6:主要导航事件百分比,即参数--pct-majornav 15%
7:系统按键事件百分比,即参数--pct-syskeys 2%
8:Activity启动事件百分比,即参数--pct-appswitch 2%
9:键盘唤出隐藏事件百分比,即参数--pct-flip 1%
10:其他事件百分比,即参数--pct-anyevent 8%
1.3、monkey测试日志分析
一般测试结果分析-搜索关键字:
1. 程序无响应的情况:搜索关键字“ANR in”
2. 崩溃的情况1:搜索关键字“CRASH”
3. 崩溃的情况2:搜索关键字“Exception”
4. 内存溢出的情况:搜索关键字“OOM”
5. 测试成功的情况:搜索关键字“Monkey finished”
6. 如果出现空指针 NullPointerException ,就一定是 bug
二、monkey脚本开发
- 既然是稳定性测试,那么通过以上的命令行执行,多少有些无可救药,会出现测试的并非是app本身而是手机,所以会通过编写monkey的测试脚本来确定被测系统为app产品本身
- 这是Android操作的方法,附上【Moneky源码】地址
- 通过分析及熟练源码的方法,那么也需要知道手机的操作快捷键
- 在自学的过程中,也找到了一篇有效编写monkey脚本的博客,虽然目前自己还没有花精力去捣鼓,往后或许需要了再去