Android调试App之稳定性测试

Monkey-App稳定性测试

环境安装同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

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 

用于约束限制,用此参数指定一个或多个包。指定包之后,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%
monkey测试日志分析
一般测试结果分析-搜索关键字:
1. 程序无响应的情况:搜索关键字“ANR in”
2. 崩溃的情况1:搜索关键字“CRASH”
3. 崩溃的情况2:搜索关键字“Exception”
4. 内存溢出的情况:搜索关键字“OOM”
5. 测试成功的情况:搜索关键字“Monkey finished”
6. 如果出现空指针 NullPointerException ,就一定是 bug

monkey脚本开发

  • 既然是稳定性测试,那么通过以上的命令行执行,多少有些无可救药,会出现测试的并非是app本身而是手机,所以会通过编写monkey的测试脚本来确定被测系统为app产品本身
  • 这是Android操作的方法,附上【Moneky源码】地址
  • 通过分析及熟练源码的方法,那么也需要知道手机的操作快捷键,附上【KeyEvent】地址
  • 在自学的过程中,也找到了一篇有效编写monkey脚本的博客,虽然目前自己还没有花精力去捣鼓,往后或许需要了再去研究。附上大神的CSDN博客

你可能感兴趣的:(Android-App专项测试,monkey,app稳定性测试)