三种常见的测试自动化类型

我们先从基础知识开始!探索两种常规测试模式和三种常见的测试自动化类型。

我们都遇到过这样的情况:现实生活中经常出现哪些反复出现的编程 meme?

抽屉柜,其中有两个抽屉,您无法同时打开。

这张 meme 很好地总结了这一点:每个抽屉单独使用时都非常顺畅,但当它们与另一个抽屉搭配使用时,就会互相干扰,无法正常运行。您希望这两个抽屉能够很好地协同工作,并且同时可用。

同一橱柜,但有两个抽屉,可以同时打开。

将此原则应用于 Web 开发:您编写了一些测试,甚至可能实现了 100% 的测试覆盖率,但在其他部分就位后,您的应用仍需要正常运行。这些单元可能各自可以正常运行,但彼此之间无法关联。编写一些测试至关重要,但这只是项目理想测试设置的一部分。首先,您需要确定需要确保应用质量的哪些方面,以及如何实现这些方面。

简单地说,您需要先制定计划,然后才能开始编写实际的测试代码。为了探讨如何在实践中进行测试,我们先从一个干净的状态开始,回答两个基本问题:

  • 您希望如何进行测试?
  • 您希望进行哪些测试?

本文重点介绍了回答第一个问题所需了解的一般事项。为了从共同点出发,我们先来了解一下现有的测试模式,然后重点介绍常见的测试类型。在后续文章中,我们将回答第二个问题,综合回答,并找到最适合您的项目的测试策略。开始吧!🙌

从基础知识开始:常规测试模式

在回答“如何测试”这个问题时,首先要澄清一个非常抽象的概念。您应该手动测试还是让计算机接管?不过,请务必避免陷入二元化思维。

手动测试与自动化测试

如果您要求质量检查工程师定义测试,他们可能会先将其细分为两种“模式”:

  • 手动测试。这是由真实用户进行的典型测试方法。质量检查工程师会点击浏览应用,检查其是否正常运行,同时尝试破坏应用。最常见的方法是探索性测试,工程师会根据预定义的路径或核对清单,利用对应用的了解来调查应用。
  • 自动化测试。这是由计算机进行的一种测试。质量保证工程师会实现该框架,以自动执行重复性和单调的测试。

本系列指南将主要关注自动化测试。不过,您不应只专注于一种测试方式。即使自动化可以节省大量时间和精力,但人工和手动测试始终发挥着重要作用。相反,测试自动化应该让人们能够专注于探索性测试和创造性问题解决。例如,确保用户体验质量或保护高风险业务逻辑。换句话说,自动化功能可为您提供帮助。❤️

不透明盒子与透明盒子

至此,您已定义常规的测试模式。不过,这还不够。为了规划测试策略,您还需要回答一个问题:您是否应了解应用的底层工作原理,还是不了解这些知识进行测试更好?根据答案,您可以从以下两种方法中选择一种来派生和选择测试用例:

  • 不透明盒测试(或称“黑盒测试”)。它基于分析组件或系统的功能性或非功能性要求(规范),而不考虑其内部结构。
  • 明盒测试(或白盒测试)是一种会考虑所述盒子的内部结构的测试流程。换句话说,就是应用的底层运作方式。

这两种方法都可以应用于手动测试和自动化测试。不过,常规测试模式的某些方面可能更侧重于这两者之一,我们稍后会介绍。现在,我们来进一步将测试自动化分解为类型。

测试自动化类型:您希望如何进行测试?

在接近“如何”问题的答案时,您已经决定进行一些手动测试。不过,选择和应用测试自动化类型会稍微复杂一些。自动化测试类型与您要在项目中创建的指标密切相关。下面我们来详细了解其中最重要的几项。

如前面提到的模因所示,您已经接触过两种类型的测试:单元测试和集成测试。端到端测试是第三个需要考虑的重要因素。但这还不是全部。我们来详细了解一下。

单元测试

单元测试是一种测试类型,用于单独且独立地测试应用的次要可测试部分或单元,以确保其正常运行。这些单元的范围可以是函数、类或接口,也可以是服务或完整组件。其主要属性是执行速度、隔离性和良好的可维护性。如果您想更深入地了解单元测试,请参阅这份单元测试指南

简化版单元测试示意图,显示了输入和输出。

集成测试

集成测试侧重于组件或系统之间的交互。换句话说,就是它们的协同工作能力。集成测试的典型示例包括 API 或组件测试。

集成测试的简化示意图,显示了两个单元如何协同工作。

端到端测试

这些测试通常称为界面测试,这个名称更能说明它们的功能。这些测试会与应用的界面(包括完整的应用堆栈)进行交互,并从头到尾测试应用。

端到端测试的简化示意图,其中计算机被描绘为一个机器人,正在查看工作流。

如果您参考质量保证理论,就会发现它们类似于系统测试。这些测试会模拟真实用户及其互动。端到端测试需要更多运行时,因为它们涉及整个系统,而运行时越长,需要的计算能力就越大。因此,这项额外的工作会导致维护费用增加。

视觉界面测试

界面测试的一个有趣子类别是视觉测试。这些测试是扩展的端到端测试,可用于验证应用的可见输出。此类测试会在更改后截取一张屏幕截图,并截取另一张包含“现状”(或金标准文件)的屏幕截图,然后将这些结果提供给人工审核员进行检查。换句话说,除了纯粹的功能性 bug 之外,它还可以帮助发现网页外观中的“视觉 bug”,并且不会明确写入断言中。

静态分析

这里还要介绍一项内容:静态分析。它不是教科书意义上的测试类型。不过,它将成为后续质量保证策略中的重要方面。您可以将其想象成拼写检查函数:它会扫描您的代码,在无需运行程序的情况下查找更严重的缺陷和语法错误,从而检测代码风格问题。这项简单的措施可以防止许多 bug。如果您想详细了解静态分析,不妨从这开始。

各种形式的测试:这一切是如何协同发挥作用的?

在寻找所有这些问题的答案时,您可能会在一些类比中找到可能的解决方案。尤其是在 Web 和测试社区中,开发者往往会使用这些类比来让您了解应该使用哪些类型的测试以及使用多少个。

许多形状,例如金字塔、钻石、冰淇淋、蜂巢和奖杯;表示测试策略。

此图片中描绘的以下五种策略是最常见的策略:

  • 测试金字塔
  • 测试钻石
  • 测试冰淇淋蛋筒(也称为测试披萨)
  • 测试 Honeycomb
  • 测试奖杯

这确实是大量信息。您应该如何根据以上所有信息确定匹配测试策略?别担心,我们会为您提供帮助。在下一篇文章中,我们将更详细地讨论这些不同的策略,并说明如何选择最适合您的项目的策略。敬请期待!🔥

Twitter