猴子测试

2025年03月17日 | 阅读 9 分钟

软件开发生命周期(SDLC)中,测试阶段起着至关重要的作用,以帮助测试工程师在产品发布之前和之后,确立产品的质量、性能、一致性、效率和安全性。

众所周知,测试过程是识别软件中错误和缺陷的最佳方法,并能立即加以控制,一旦它们被测试工程师团队检测到。

在本教程中,我们将了解特定类型软件测试的主题,即Monkey Testing

  • Monkey Testing简介
  • Monkey Testing的特性
  • Monkey Testing的用法
  • Monkey Testing的类型
  • 智能Monkey Testing vs 愚蠢Monkey Testing
  • Monkey Testing vs Adhoc Testing
  • Monkey Testing的优点
  • Monkey Testing的缺点

Monkey Testing简介

Monkey Testing是软件测试的一种独特类型。它最早在1979年由Glenford J. Myers撰写的《软件测试艺术》一书中被引入。

它是一种软件测试技术,用户通过提供随机输入来检查应用程序;因此,它也被称为随机测试

如果我们没有足够的时间来编写和执行测试,我们将采用monkey testing

它也被称为随机测试(stochastic testing),最适合桌面、Web以及移动应用程序。如果使用随机测试或monkey testing输入,这是一个节省时间和精力的过程。

Monkey testing通常作为随机的自动化单元测试执行,并能通过测试结果有效地评估软件可靠性。

Monkey testing主要以自动化的方式进行,用户插入任何随机的无效输入并测试其性能。

如果我们正在进行负载和压力测试,Monkey testing效果非常好,或者我们可以说它是一个非常好的方法。

通过随机测试创建或生成的数据还可以用来近似产品的一致性。另一方面,各种测试方法无法以这种方式近似软件的一致性。

它在测试工程师中很流行,因为他们使用此测试通过提供随机输入并检查应用程序的行为来进行测试。

通过尝试性的性能来检测软件应用程序中的错误和缺陷是执行monkey testing的主要目的。

Monkey Testing的特性

随后,Monkey Testing包括通过提供一些随机数据来测试软件或应用程序,并检测系统是否失败。

执行monkey testing的关键目的是识别软件中的缺陷和错误,并确保在软件产品的整个开发完成后,系统不会崩溃。

Monkey testing或随机测试的一些重要特性如下:

  • 在执行Monkey Testing时,没有明确的规范。
  • 这是一种凭直觉进行的测试,在没有任何明确测试意图的情况下执行。
  • 当常规间隔无法检测到缺陷时,会执行Monkey Testing。
  • Monkey Testing用于列出系统的可靠性和性能。
  • Monkey Testing花费的时间和精力比实际测试工作要少。
  • Monkey Testing的实施确保了系统的可靠性和效率。

Monkey Testing的用法

  • Monkey Testing可用于数据库测试,通过启动一个事务并插入一些随机数据。
  • 也可以借助硬件或更优选的软件来测试,以模仿猴子插入随机数据的行为。
  • 为了测试应用程序的OWASP问题,我们可以使用预编译的和随机的数据。

Monkey Testing的类型

根据其执行方式,Monkey Testing分为几种类型。为了快速了解,我们可以参考下图:

Monkey Testing
  • 愚蠢Monkey Testing
  • 智能Monkey Testing
  • 聪明的Monkey Testing

现在,让我们逐一了解它们,以便更好地理解。

愚蠢Monkey Testing

Monkey Testing的第一种类型是Dumb Monkey testing。这是最简单直接的Monkey Testing类型,它不知道自己或系统的能力,也不知道应用程序的流程。

在此测试中,我们识别出的错误比智能猴子少,但可以天真地发现一些难以找到的严重错误。

在此,测试经理或负责人指派一位对应用程序特定模块不了解的测试工程师来测试产品。

即使这些测试工程师也不知道给定的输入是有效还是无效。这就是为什么dumb monkey testing也被称为无知的猴子(Ignorant monkeys)

换句话说,我们可以说,愚蠢的猴子不知道工作流程或正在被应用程序或系统处理的数据。

测试工程师被要求自动测试应用程序,并在测试工程师认为合适的地方输入随机数据。

以下特征可以识别愚蠢的猴子:

  • 测试工程师的行为可能类似于一个没有技术知识但试图使用该应用程序的用户。
  • 测试工程师可以根据自己的理解测试应用程序,并输入无效数据。
  • 当测试工程师对应用程序一无所知时。
  • 为了看看它是否按预期执行,我们可以记录下应用程序的行为。
  • 测试人员不知道输入是否有效或无效。
  • 当测试人员对用户界面和功能了解不多时。

智能Monkey Testing

Monkey Testing的下一类是Smart Monkey testing,其中测试工程师完全了解系统或应用程序

此外,测试团队了解确切产品的功能,并因此提供合适的、有效的输入,这有助于对产品执行测试。

此外,智能猴子测试知道应用程序的页面将重定向到哪里。

在智能猴子测试中,测试工程师专注于超越应用程序,如果他们发现错误,他们足够聪明地报告一个bug。此外,智能测试是执行负载测试和压力测试的绝佳选择。

换句话说,我们可以说,测试工程师对系统、其目标和功能有具体的了解,并且测试工程师会浏览系统并提供有效的输入以执行测试。

聪明的Monkey Testing

Monkey Testing的最后也是第三种类型是 Brilliant monkey testing。在这种Monkey Testing类型中,测试工程师对系统有良好的了解。

这种类型的测试还可以识别出未来可能在软件中发现的某些错误。

此外,测试工程师了解产品的使用模式,因此他们可以从用户的角度进行测试。

换句话说,我们可以说,Brilliant monkey testing比smart monkey testing更进一步。

在此,测试工程师或一个测试工程师团队被分配任务,因为他们对特定的软件域及其功能有完整的了解。

Smart Monkey Testing和Dumb Monkey Testing的区别

让我们在下表中看看Smart Monkey Testing和Dumb Monkey Testing之间的一些重要比较。

Monkey Testing
序号智能Monkey Testing愚蠢Monkey Testing
1.在此,智能猴子了解系统的运行流程,这意味着产品在哪里以及它将在哪里被管理。在此,愚蠢的猴子不知道系统的运行流程。
2.在智能猴子测试中,他们对软件产品有一些工作上的想法。在愚蠢的猴子中,他们对系统及其功能没有任何相关知识。
3.在此,智能猴子可以报告检测到的错误或缺陷。与智能猴子测试相比,它发现的错误较少,但可能会发现智能猴子也难以检测到的错误。
4.在智能猴子测试中,测试人员可以理解系统的能力及其优势。在愚蠢的猴子测试中,测试人员无法确定系统的能力。
5.在智能猴子测试中,智能猴子非常了解输入到系统的数据。这意味着他们理解有效和无效的输入类型。在愚蠢的猴子中,愚蠢的猴子不知道输入类型,并提供有效或无效的系统。

Monkey Testing是否与Gorilla Testing和Fuzz Testing相似?

  • 我们知道,gorilla testing是预先计划好的,而monkey testing则非常Adhoc,与gorilla testing相比,我们必须多次感到困惑。
  • 如果我们将fuzz testing与gorilla testing和monkey testing进行比较,它们彼此之间有很大的不同。
  • fuzz testing关注的是随机选择的数据输入,而monkey testing则通过随机操作来执行测试。
  • 因此,我们可以得出结论:Monkey testing与其他类型的测试程序不同,它们服务于不同的目的。我们可以根据我们的需求选择合适的测试类型,无论是monkey testing、gorilla testing还是fuzz testing

注意:有些人认为Monkey Testing和Adhoc Testing是相似的测试技术,这是不正确的,因为ad-hoc testing是在没有任何计划或文档工作的情况下执行的。

为了阐明上述陈述,我们可以比较monkey testing和Adhoc testing之间的区别。

Monkey Testing vs Adhoc Testing

让我们在下表中看看monkey testing和Adhoc testing之间的一些重要区别。

Monkey Testing
序号猴子测试临时测试
1.它是随机执行的,没有明确预定义的测试用例。它是针对客户需求执行的。
2.任何人都可以执行它,即使是没有计算机或应用程序知识的人。它可以由开发人员以及对应用程序有良好了解的测试工程师执行。
3.实施Monkey Testing的主要目标是随机执行测试,使用随机或无效数据来检查应用程序是否失败。Adhoc Testing旨在通过随机使用应用程序来检查系统是否崩溃应用程序或找到缺陷。
4.在Monkey Testing中,我们可以使用测试用例,因为它是随机的。Adhoc Testing也是随机执行的,但不依赖或使用测试用例。
5.在Monkey Testing中,测试工程师可能不知道系统是什么,以及它的目标。在Adhoc Testing中,测试工程师必须在执行测试过程之前广泛理解系统。

Monkey Testing的优点和缺点

它是一种软件测试过程,分析随机且临时的测试场景。尽管为最终用户和测试工程师带来了各种好处,但monkey testing也有许多缺点,这些缺点可能会压制其积极的能力。

因此,以下是monkey testing的一些基本优点以及缺点:

Monkey Testing的优点

以下是monkey testing的一些重要好处:

  • 执行monkey testing不需要熟练的测试工程师。
  • Monkey testing非常经济高效。
  • 个人可以很容易地通过此测试分类错误,这些错误可能会对软件的效率和性能产生重大影响。
  • 测试软件的可靠性,它是一个绝佳的方法。
  • Monkey testing技术易于设置和实施。
  • 在monkey tests期间可以发现新的bug,这些bug在传统测试中不会被发现。
  • 这是以Adhoc方式执行压力测试和负载测试的最佳方法。

Monkey Testing的缺点

以下是Monkey Testing的缺点:

  • 评估Monkey Testing期间发现的意外问题使此过程非常困难且耗时。
  • 在monkey testing中,已识别的bug可能超出范围或不符合业务需求。
  • 测试工程师无法保证测试用例的准确性,因为他们难以定义确切的测试场景。
  • Monkey Testing的实施可能需要很长时间才能分类一个bug,因为它没有预定义的测试。
  • 它是随机完成的,因此测试覆盖率不可能是具体的。

概述

在本教程中,我们了解到Monkey Testing是一种相对较新且在软件测试工程师中流行的软件测试类型,在某些测试领域非常有利。

Monkey Testing与Gorilla TestingAdhoc Testing明显不同。

Monkey Testing分为三种类型:Dumb monkey testing、Smart monkey testing和Brilliant Monkey testing

在Monkey Testing中,用户输入随机输入,然后执行测试以检查其性能,并了解系统或应用程序是否失败。

此外,monkey testing是由测试工程师团队进行的自动化测试,而无需进行详细的测试。

最后,我们可以说Monkey Testing是检查软件功能质量和软件性能的最简单方法;正是由于这个优点,monkey testing也被称为随机测试。


下一个主题敏捷测试