深入了解Android自动化测试-1.monkey介绍

来源:互联网 发布:java api接口测试工具 编辑:程序博客网 时间:2024/05/02 04:28

monkey 学习


1.monkey 源码

adb shell     cd /system/bin    monkey

monkey 文档地址:<android_sdk>/docs/tools/help/monkey/html

官网地址:http://developer.android.com/tools/help/monkey.html

2.简要介绍

adb shell monkey <event-count>

这里event-count 是事件数而不是循环次数

只有当monkey传入脚本时,该值才为循环次数

adb shell monkey 1000

3.monkey 脚本

base = /system

export CLASSPATH=$ base/framework/monkey.jar

exec app_process $ base/bin com.android.commands.monkey.monkey $ *

调用com.android.commands.monkey.monkey包,定制monkey工具,则需要修改该包(原理篇描述)

4.monkey常规命令

adb shell monkey [options] <event-count>    options指monkey可传入的参数

adb shell monkey -h 显示所有options命令list

adb shell monkey -v <event-count>

-v越多信息越全

-v         启动提示,测试结束,最终结果外提供较少信息

-v-v      详细信息如逐个发送到Activity的时间    

-v-v-v   更详细安装信息,如测试中被选中或未被选中的Activity

4-1.monkey的事件类命令

adb shell monkey -f <scriptfile> <event-count>           (可以跑脚本)

adb shell monkey -f /mnt/sdcard/test 1                         (数字1为循环次数)

adb shell monkey -s <seed> <event-count>                seed指可指定随机数生成

如果用相同的seed值再次运行monkey,将生成相同的时间序列

adb shell monkey --throttle <milliseconds>                事件之间的固定延迟

adb shell monkey --pct-touch <percent>                      定义时间百分比(pct-touch 触摸事件百分比) 某一位置的Down-Up事件

adb shell monkey --pct-motion <percent>                   定义Down事件后经过一系列伪随机时间后弹起(即up事件)   

adb shell monkey --pct-traceball  <percent>  伪随机移动以及偶尔跟在移动后面的点击事件  

--pct-nav   nav为基本导航事件(方向输入设备:上/下/左/右)

--pct--majornav  主要导航时间百分比     举例:ok、菜单、返回按键灯

--pct-systemnav 系统按键     举例:HOME键、BACK键、拨号键、挂断键、音量键

adb shell monkey --pct-appswtich <percent> 应用启动事件的百分比 

adb shell monkey --pct-anyevent <percent>  其他类型事件百分比

5.结束类命令

$ adb shell monkey -p <allowed-packages-name> <event-count>

$ adb shell monkey -p com.xuben.test.settings 1000 运行com.xuben.test.settings包内activity 并发送1000个随机事件

$ adb shell monkey -c <main-category><event-count>   Monkey命令限制在一个或几个类别中

如果不指定任何类别,monkey将选择Intent.CATEGORY_LAUNCHER和Intent.CATEGORY _monkey里的Activity

每个-c都对应一个类别(指定多个类别时每个类别名前都需要机上 -c)如:

$ adb shell monkey -c Intent.CATEGORY_LAUNCHER 1000 运行Intent.CATEGORY_LAUNCHER类别的Activity并发送1000个随机事件

6.调试类命令

对Monkey进行一些简单的调试,这样可以快速定位monkey运行中的问题

$ adb shell monkey --diag-no-events <event-count>  这个调试命令就可以轻松打入运行内部

$ adb shell monkey --hprof <event-count>  monkey事件序列前后立即生成profiling report(该选项将在data/misc中生成5MB大小文件,慎用)

$ adb shell monkey --ignore-crashes --ignore-timeouts --ignore-security-exceptions --kill-process-after-error --monitor-native-crashes

                                     崩溃或时空异常    超时错误ANR        启动有权限的Activity                 通知系统停止发生错误进程    nativecode崩溃事件记录

$ adb shell monkey --wait-dbg  暂停执行的Monkey,直到有调试器与它连接


-Monkey命令小结

常用参数官网:http://developer.android.com/tools/help/monkey.html

$ adb shell monkey -v -v -v -p com.ingenic.glass.camera --throttle 200 1000

$ adb shell monkey -v -v -f /mnt/sdcard/test --throttle 200 30

Monkey监控并特殊处理的3个事件如下:

1.如果指定测试包,限制测试在指定的包中

2.如果应用Crash或存在未捕获的异常,monkey停止并报告错误

3.如果应用产生ANR错误,monkey停止并报告错误

ANR的两个条件: a.线程相应超过5s   b.HandleMessage回调函数超过10s


 其他:测试Log获取

Monkey test测试,为了方便分析问题,可以在命令monkey命令后面加上 “|logcat -v time”,这样就能边测试边打印Log(记得用终端保存Log文本)例如:

adb shell monkey –p com.htc.Weather –v 20000|logcat -v time

但是这个组合在monkey测试完成后,logcat仍然在执行,测试时需要注意。

如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt,步骤如下:

1. 测试版本需要具备root权限

2. 进入data/anr目录下面

3. traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可



0 0
原创粉丝点击