### Monkey测试标准详解
#### 一、环境准备
Monkey测试是一种用于Android系统的自动化测试方法,主要目的是通过模拟用户的随机操作来发现应用中的不稳定因素。为了确保Monkey测试的有效性,需要在测试前做好充分的准备工作。
##### PC端环境准备
1. **操作系统**: 支持的操作系统包括Windows 7或Windows XP。
2. **SDK**: 需要安装与目标Android系统版本相匹配的Android SDK。
3. **环境变量**: 将Android SDK中的`tools`目录添加到系统环境变量`PATH`中。例如,如果SDK安装在`D:\Android-SDK`目录下,则应将`D:\Android-SDK\tools`添加至环境变量中。如果不进行此设置,在执行Monkey命令时需要手动切换到该目录下执行命令。
##### 手机端环境准备
1. **SD卡**: 测试前应准备足够大的SD卡,并对其进行格式化以确保有足够的空间记录日志信息。
2. **日志清除**: 使用MTKlog或Logkit清除旧的日志信息并重新开启日志记录功能。
3. **USB调试**: 确保手机开启了USB调试功能。
4. **屏幕解锁**: 在进行Monkey测试前,确保手机处于解锁状态。
5. **休眠设置**: 设置手机的休眠时间为最长,避免因屏幕休眠而中断测试。
6. **定时关机**: 取消任何可能发生的定时关机或闹钟设置。
7. **SIM卡**: 插入有效的SIM卡。
8. **第三方应用**: 移除所有第三方应用程序,以减少外部干扰。
9. **电量**: 开始测试前确保手机电量充足,并且在整个测试过程中保持与电源连接。
10. **放置位置**: 将手机放置在一个柔软的表面上,防止USB线意外脱落。
#### 二、Monkey测试执行
Monkey测试的具体执行步骤如下:
1. **获取APP版本号**: 使用专门的工具获取待测版本的APP版本号列表。
2. **Monkey命令**: 通过命令行工具执行Monkey测试。一个典型的命令示例为:
```
adb shell monkey -s100 --throttle 200 --ignore-timeouts --ignore-crashes --ignore-security-exceptions -v 20000000
```
其中各个参数的含义如下:
- `-s100`: 指定一系列操作的标号,即seed值,此处为100。
- `--throttle 200`: 设置每个操作之间的延迟时间为200毫秒。
- `--ignore-timeouts`: 忽略超时错误。
- `--ignore-crashes`: 忽略导致程序崩溃的错误。
- `--ignore-security-exceptions`: 忽略安全许可错误。
- `-v 20000000`: 设置输出日志的详细程度,数字越大表示日志越详细。
#### 三、测试结果评估
Monkey测试的结果需要按照特定的标准进行评估:
1. **中位数时间**: 对10台手机的测试结果按照时间从短到长排序,取中间两个测试结果的平均值作为中位数时间,要求中位数时间不少于10小时。
2. **平均时间**: 超过10小时的测试结果统一按10小时计算,计算10台手机测试结果的平均值,要求平均时间不低于8小时。
#### 四、测试报告与问题跟踪
1. **测试通过**:
- 如果Monkey测试满足上述标准,只需通过邮件通知相关人员,并附上测试结果表格以及所测试版本的应用版本号列表。
2. **测试失败**:
- 如果Monkey测试未能满足标准,需要在缺陷管理系统(CQ)中提交一个Monkey测试失败的bug,并附上所测试版本的应用版本号列表以及手机SD卡中的日志文件。同时通过邮件告知相关人员,附上测试结果表格和版本号列表。
#### 五、测试结果表格模板
| 设备编号 | MonkeyPeriod | MonkeyRealPeriod | MonkeyTestEvents | EndReason |
|----------|--------------|------------------|------------------|-----------|
| 0 | 8.74 | 8.74 | 31455251 | NeedAnalyze |
| 1 | 10.00 | 11.18 | 40237617 | EndByTester |
#### 结论
通过上述步骤和标准,可以有效地进行Monkey测试,检测应用程序的稳定性和健壮性。当测试结果满足标准时,可以确认应用程序的基本稳定性;反之,则需要进一步分析并解决存在的问题。这种测试方法对于提高Android应用的质量具有重要意义。