作为一个Android开发,测试的部分其实也是要懂一点的。我们开发常用的是UIAutoMater。是用来写Java程序来对UI及功能进行测试,特点是有逻辑,但是需要编写程序。而测试同学比较常用的是monkey工具,特点是由adb随机发送点击、滑动等事件,对app进行可靠性测试。UIAutoMater内容比较多,但是很有意思,后面章节我可能会具体介绍一下,这里先简单写写monkey。
1.什么是Monkey
Monkey是一个在您的模拟器或设备上运行的程序,可生成用户事件的伪随机流,例如点击,触摸或手势,以及许多系统级事件。 您可以使用Monkey以随机且可重复的方式对您正在开发的应用程序进行压力测试。
2.monkey可以用来做什么
看看google官网怎么说
Monkey是一个命令行工具,可以在任何仿真器实例或设备上运行。它将伪随机的用户事件流发送到系统中,作为您正在开发的应用程序软件的压力测试。
Monkey包含许多选项,但它们分为四个主要类别:
- 基本配置选项,例如设置要尝试的事件数。
- 操作约束,例如将测试限制为单个包。
- 事件类型和频率。
- 调试选项。
当Monkey运行时,它会生成事件并将它们发送到系统。它还可以监视被测系统,并查找三种特殊情况:
- 如果您已将Monkey限制为在一个或多个特定包中运行,则会监视尝试导航到任何其他包并阻止它们。
- 如果您的应用程序崩溃或收到任何类型的未处理异常,Monkey将停止并报告错误。
- 如果您的应用程序生成一个没有响应错误的应用程序,Monkey将停止并报告错误。
- 根据您选择的详细级别,您还将看到有关Monkey的进度和正在生成的事件的报告。
3.简单使用
如果是在真机上测试的话,可以通过将adb shell添加到每个命令,或者直接输入shell并输入Monkey命令来完成此操作。
$ adb shell monkey [options] <event-count>
$ adb shell monkey -p your.package.name -v 500
4.参数详解
| Category | Option | Description |
|---|---|---|
| 通用 | --help | 帮助 |
| -v | 用于指定反馈信息级别(信息级别就是日志的详细程度),命令行上的每个-v都会增加详细级别。 | |
| 事件 | -s<seed> | 伪随机数发生器的种子值。 如果您使用相同的种子值重新运行Monkey,它将生成相同的事件序列。 |
| --throttle <milliseconds> | 在事件之间插入固定的延迟。 您可以使用此选项来减慢Monkey的速度。 如果未指定,则没有延迟,并且事件尽可能快地生成。 | |
| --pct-touch <percent> | 调整触摸事件的百分比。(下面类似) | |
| --pct-motion <percent> | ||
| --pct-trackball <percent> | ||
| --pct-nav <percent> | ||
| --pct-majornav <percent> | ||
| --pct-syskeys <percent> | ||
| --pct-appswitch <percent> | ||
| --pct-anyevent <percent> | ||
| 常量 | -p <allowed-package-name> | 后面加包名,运行指定的包,可以多次使用 |
| -c <main-category> | 不常用。如果以这种方式指定一个或多个类别,则Monkey将仅允许系统访问使用指定类别之一列出的活动。 如果您未指定任何类别,Monkey将选择使用Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY类别列出的活动。 | |
| 调试 | --dbg-no-events | 指定后,Monkey将执行初始启动到测试活动,但不会生成任何其他事件。 为了获得最佳效果,请结合-v,一个或多个程序包约束以及非零限制以使Monkey运行30秒或更长时间。 这提供了一个环境,您可以在其中监视应用程序调用的包转换 |
| --hprof | 不常用,如果设置,将在Monkey事件序列之前和之后立即生成分析报告。 这将在data / misc中生成大(~5Mb)文件 | |
| --ignore-crashes | 忽略crash | |
| --ignore-timeouts | 忽略ANR | |
| --ignore-security-exceptions | 忽略任何类型的权限错误 | |
| --kill-process-after-error | 通常,当Monkey因错误而停止时,失败的应用程序将保持运行状态。 设置此选项后,它将通知系统停止发生错误的进程。 注意,在正常(成功)完成的情况下,启动的进程不会停止,并且设备在最终事件之后只是处于最后状态。 | |
| --monitor-native-crashes | 观看和报告Android系统本机代码中发生的崩溃。 如果设置了--kill-process-after-error,系统将停止。 | |
| --wait-dbg | 阻止Monkey执行,直到调试器连接到它。 |
5.实用例子
开始
$ adb shell monkey -p 包名 --monitor-native-crashes --pct-touch 30 -s 1 -v -v -v --throttle 200 100000 > 1.txt
停止:杀monkey进程
如果想中断运行中的monkey CTRL+C
$ adb shell ps | grep monkey 返回进程号
$ adb shell kill [刚才查到的进程号]












网友评论