什么是猴子和大猩猩测试?示例、差异
什么是猴子测试?
猴子测试 猴子测试是一种软件测试技术,测试人员在没有预定义测试用例的情况下,向应用程序中输入随机数据,并检查应用程序的运行情况,特别是是否崩溃。猴子测试的目的是通过实验性的、非脚本化的交互来发现程序缺陷和错误。
这个名字来源于下图所示的一幅简单的图画。
- 在猴子测试中,测试人员(有时是开发人员)被视为“猴子”。
- 如果让猴子使用电脑,它会随机执行任务,而不会理解系统。
- 同样地,测试人员向被测系统施加随机输入,以查找错误,而无需预先定义任何测试用例。
- 在某些情况下,猴子实验旨在 单元测试 or 图形用户界面测试.
什么是大猩猩测试?
大猩猩测试 是一种软件测试技术,其中对程序的一个模块进行反复测试,以确认其能够正常工作且不包含任何缺陷。
同一个模块可能会以完全相同的方式被测试上百次,这就是为什么“猩猩测试”也被称为“令人沮丧的测试”。猴子测试是在整个应用程序中随机进行测试;而猩猩测试则会反复测试同一个地方,直到发现问题或证明其安全性为止。
猴子测试的类型
根据测试人员对系统的了解程度,猴子测试可以分为几类。下图总结了这三种类型。
- 笨猴子: 测试人员对系统及其功能一无所知,因此无法保证任何输入都是有效的。
- 聪明的猴子: 测试人员对系统、其用途和功能有准确的了解,能够熟练地操作系统并提供有效的输入。
- 聪明的猴子: 测试人员根据真实用户行为进行工作,并能指出缺陷可能出现的位置。
猴子测试、大猩猩测试和临时测试
猴子测试、大猩猩测试和 临时测试 它们都带有即兴发挥的风格,因此经常被混淆。下面的两张表格将它们区分开来。
猴子测试与大猩猩测试
| 猴子测试 | 大猩猩测试 |
|---|---|
| 随机执行,没有预先设定的测试用例。 | 既非预先设定,也非随机——只是重复相同的检查。 |
| 对整个系统执行,可能涉及许多测试用例。 | 仅对少数选定的模块和少量测试用例进行了测试。 |
| 目的是检查系统是否崩溃。 | 目的是检查该模块是否正常工作。 |
猴子测试与临时测试
| 猴子测试 | 临时测试 |
|---|---|
| 随机执行,没有预先设定的测试用例。 | 由于没有计划或文档,因此没有准备测试用例或SRS。 |
| 测试人员可能不知道该系统是什么,也不知道它的用途。 | 测试人员必须在测试开始前充分了解系统。 |
| 目的是检查系统是否崩溃。 | 目标是将系统随机拆分成若干子部分,并检查其功能。 |
猴子试验的优点和缺点
因为该技术以速度换取规划,所以它的优点和缺点都源于同一特性。
猴子测试的优势
- 新型漏洞: 测试人员可以自由地在先前规定的场景之外进行测试,从而发现一些没有人想到要编写脚本的错误。
- 易于执行: 针对随机数据安排随机操作是快速测试系统性能的一种方法。
- Less 熟练的人员: 猴子实验通常不需要经验丰富的测试人员就能进行。
- Less 昂贵: 与脚本套件相比,它的设置和运行所需的费用要少得多。
猴子试验的缺点
- 漏洞可能很难重现: 因为输入是随机的,如果没有记录的种子,可能无法重现故障。
- Less 准确性: 测试人员无法定义确切的测试场景,也无法保证测试内容的准确性。
- 技术专长仍然很有帮助: 为了确保测试结果有意义,测试人员需要具备良好的领域知识。
- 相对于产量而言速度较慢: 运行时间可能很长,但仍然很少出现缺陷,从而导致系统出现漏洞。
如何进行猴子测试
当使用工具驱动猴子测试时,效率会大大提高,并且可以针对特定目标运行。 Android 构建包括桌面应用程序和 Web 应用程序在内的各种应用。一般流程如下:
- 将待测应用程序注册到驱动该应用程序的工具或专用服务器上。
- 准备工具构建测试套件所需的参考资料和配置。
- 运行已构建的测试套件。
- 让工具写入日志——“猴子测试”日志文件记录每个生成的事件和结果。
- 允许运行继续进行,直到系统达到崩溃点,此时会将出错的操作记录在日志中。
- 将报告分享给相关团队,并将测试数据保存以备将来参考。
保留所有日志。只有保存了事件序列和生成该事件的种子,随机运行的结果才能在以后派上用场。 缺陷管理 可以将崩溃原因追溯到可重现的输入。
猴子测试工具
猴子测试通常是自动化的,因为机器可以在人生成几十个事件的时间里生成数千个事件。常用的选项有:
- UI/应用程序练习猴: 内置于 Android 那条运行在 亚行的shell 并将伪随机的用户事件流(例如点击、手势和按键)以及系统级事件发送到设备或模拟器。
- 猴子跑者: 独立 Python API 它能从工作站驱动设备和模拟器,发送特定命令并捕获屏幕截图。尽管名称相似,但它与训练猴子(Exerciser Monkey)并非同一工具。
- UI Automator 和 Appium: 一般 移动测试 可以通过脚本在构建过程中触发半随机事件序列的框架。
- 模糊测试工具,例如 AFL: 同样的随机输入思想也应用于数据而非手势,这在[此处应插入相关内容]中有所介绍。 模糊测试.
对猴子测试的工具支持比对脚本测试的工具支持要少。 自动化测试因此,大多数团队会将通用事件生成器与他们现有的框架结合起来,而不是购买专门的产品。
何时使用猴子测试
猴子测试只能在特定情况下使用,而不能作为计划测试的通用替代品。
在以下情况下使用它:
- 在正式测试用例出现之前,早期版本需要进行低成本的稳定性检查。
- 该界面具有高度交互性——游戏、绘图工具、媒体播放器——因此很难预测用户的真实行为。
- 你想泡个澡吗? 应力 运行数小时以查找崩溃、内存泄漏和未处理状态。
- 版本发布已通过脚本检查,但您仍希望进行独立检查,以查找脚本未涉及的任何内容。
以下情况应避免使用:
- 你需要可重复的证据来证明某项要求已得到满足——这就是书面文件的作用。 测试用例.
- 该版本极不稳定,每次运行都会立即崩溃,导致所有问题都隐藏在第一次失败之后。
- 时间紧迫,因为随机搜索并不能保证一定能找到任何东西。
实践中,混合方法能取得最佳效果:脚本测试涵盖已知流程, 探索性测试 故意探索未知领域,而猴子测试则攻击他们两人都认为永远不会发生的事情。


