测试Android知识Android开发

Android Monkey测试与分析要点

2017-05-17  本文已影响151人  Lshare_Blog

Monkey测试的功能

Monkey是内置在Androidshell中的命令行工具。Monkey测试可以模拟用户点击行为,通过脚本的形式不断地执行,然后可以导出到本地日志,进行奔溃分析。模拟方式是系统发送伪随机的用户事件流。

Monkey测试的使用

设置ADB环境

{android sdk location}\platform-tools加入环境变量,以便使用终端执行adb命令。

编辑Monkey脚本

基本语法:

$ adb shell monkey [options] <event-count>
monkey脚本格式

脚本示例:

monkey -p com.arisan1000.android  --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --monitor-native-crashes --pct-appswitch 30 --pct-touch 15 --pct-motion 50 --pct-anyevent 5 -s 1000 43200 2>/sdcard/error.txt 1>/sdcard/info.txt 
Category Option Description
General� --help 打印简单的使用向导
-v 每个-v表示增加信息的冗余级别。默认是Level 0,打印启动通知、测试结束和最终结果。Level 1,提供了较为详细的测试信息,如逐个发送到Activity的事件信息。Level 2,提供了更多的设置信息,如测试中选中或未选中的Activity信息。
Events -s <seed> 指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
--throttle <milliseconds> 指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。
--pct-touch <percent> 调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。如触摸返回、触摸签到等
--pct-motion <percent> 调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁
--pct-trackball <percent> 作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁
--pct-nav <percent> 调整基本的导航事件(上下左右),事件来自直接的输入设备。现在的设备一般没有设置导航按钮了。
--pct-majornav <percent> 调整“主要”导航事件的百分比。 (这些是通常会导致您的UI中的操作的导航事件,例如5向按键中的中心按钮,后退键或菜单键。)
--pct-syskeys <percent> 按键消息比例,主页、后退、音量增减
--pct-appswitch <percent> 启动Activity的事件比例
--pct-anyevent <percent> 其他不常用的按键比例的设置,不常用
-p <allowed-package-name> 用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。
-c <main-category> 指定启动Activity的category。若无指定,monkey会选择带有Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY的Activity。使用时,一个-c指定一个category,可以多次使用。
Debugging --dbg-no-events 指定该选项时,Monkey会执行测试Activity的初始启动,但不会生成进一步的事件。为了获得更好的结果,可以结合 -v选项,一个或多个包限制 和 非0的throttle选项 (为了保持Monkey运行30s或以上)。这提供了一个监控应用调用的包转换的环境。
--hprof 测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间
--ignore-crashes 在monkey测试的过程中遇到crash不终止monkey进程,直到计数结束。
--ignore-timeouts 在monkey测试的过程中遇到timeout error 或者 ANR 不终止monkey进程,直到计数结束。
--ignore-security-exceptions 忽略权限问题,直到事件计数结束。
--kill-process-after-error 当发生错误时终止monkey进程。
--monitor-native-crashes 监视崩溃时的本地代码。当设置 --kill-process-after-error时,monkey进程会停止。
--wait-dbg 当调试器失去连接时,停止monkey进程。

执行和停止脚本

  1. 连接设备并开启调试模式
  2. 执行脚本命令:复制脚本到终端
  3. 回车执行停止脚本,如下:
// 获取monkey所在的进程id
adb shell top | grep monkey
示例结果:
 5447  0   1% S 10 262960K  10328K  root    com.android.commands.monkey
 5447  0   0% S 10 262960K  10324K  root    com.android.commands.monkey
//彻底停止monkey进程
adb shell kill -9 5447

分析本地日志

  1. 找到是monkey里面的哪个地方出错。
  2. 查看Monkey里面出错前的一些事件动作,并手动执行该动作。
  3. 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样。

详情参考Monkey测试3——Monkey测试结果分析

参考

  1. UI/Application Exerciser Monkey

  2. monkey实战--测试步骤、常用参数、常规monkey命令

附录 A:Linux中的输入输出重定向

n> file 表示将文件描述符为 n 的文件重定向到 file。常见的文件描述符为:

文件描述符 名称 常用缩写 默认值
0 标准输入 stdin 键盘
1 标准输出 stdout 屏幕
2 标准错误输出 stderr 屏幕

点击链接了解更多

上一篇 下一篇

猜你喜欢

热点阅读