让我们从基础知识开始!探索两种通用测试模式和三种常见的测试自动化类型。
我们都遇到过这种情况:在现实生活中,经常会发生哪些重复出现的编码梗?
这个梗概括得非常好:每个抽屉单独使用时都很好用,但与其他抽屉组合使用时,它们会相互阻碍并无法正常工作。您希望两个抽屉都能彼此配合良好并同时可操作。
将其应用于 Web 开发:您编写了一些测试,甚至可能实现了 100% 的测试覆盖率,但您的应用程序仍然需要在其他部分就位后才能工作。单元可能单独运行良好,但在彼此关联时则不然。编写一些测试至关重要,但这只是项目理想测试设置的一部分。作为第一步,您需要确定需要确保应用程序质量的哪些部分,以及如何实现这一目标。
简而言之,在开始编写实际的测试代码之前,您需要一个计划。为了实际探讨如何测试这个主题,让我们从一张白纸开始,回答两个基本问题
- 您想如何测试?
- 您想测试什么?
本文重点介绍回答第一个问题所需的常识。为了从共同的基础开始,让我们首先了解存在哪些测试模式,然后重点介绍常见的测试类型。在以后的文章中,我们将回答第二个问题,结合答案,并找到最适合您项目的测试策略。让我们开始吧!🙌
从基础知识开始:通用测试模式
在回答如何测试的问题时,首先要澄清的点非常抽象。您应该手动测试还是让计算机接管?然而,重要的是不要陷入二元思维。
手动测试与自动化测试
如果您要求质量保证工程师定义测试,他们可能会首先将其分解为两种“模式”
- 手动测试。这是一种典型的测试方法,由真人进行。质量保证工程师点击浏览应用程序,检查它是否工作,同时尝试破坏它。最常见的方法是探索性测试,工程师根据他们对应用程序的了解,对照预定义的路径或清单来调查应用程序。
- 自动化测试。这是一种由计算机进行的测试类型。质量保证工程师实施它以自动化执行重复性和单调的测试。
本系列指南将主要关注自动化测试。但是,您不应只关注一种测试方式。即使自动化节省了大量时间和精力,人类和手动测试也始终将发挥至关重要的作用。相反,测试自动化应该让人们腾出手来专注于探索性测试和创造性问题解决。例如,确保用户体验的质量或保护高风险业务逻辑。换句话说,自动化为您提供支持。❤️
不透明盒子与透明盒子
因此,您已经定义了通用的测试模式。但是,这还不够。为了规划测试策略,还需要回答一个问题:您应该了解应用程序在幕后是如何工作的,还是最好在不了解这些知识的情况下进行测试?根据答案,有两种程序可供选择,用于导出和选择测试用例
- 不透明盒子测试(或黑盒测试)。它基于分析组件或系统的功能或非功能需求(规范),而不考虑其内部结构。
- 透明盒子测试(或白盒测试)是一种考虑所述盒子内部结构的程序。换句话说,您的应用程序在幕后是如何工作的。
这两种程序都可以应用于手动和自动化测试。但是,通用测试模式的某些方面可能更侧重于其中一种——我们稍后会介绍。现在,让我们进一步将测试自动化分解为类型。
测试自动化类型:您想如何测试?
当您越来越接近回答“如何”问题时,您已经决定进行一些手动测试。但是,选择和应用测试自动化类型更具挑战性。自动化测试的类型与您想在项目中创建的指标密切相关。因此,让我们仔细看看最重要的指标。
正如前面提到的梗所说明的那样,您已经遇到了两种类型:单元测试和集成测试。端到端测试是需要考虑的第三个重要类型。但这仍然不是全部。让我们仔细看看。
单元测试
单元测试是一种测试类型,其中应用程序的较小可测试部分或单元被单独且独立地测试以确保正常运行。这些单元的范围可能从函数、类或接口到服务或完整组件不等。它们的主要属性是执行速度、隔离性和舒适的可维护性。如果您想更深入地了解单元测试,请访问此单元测试指南。
集成测试
集成测试侧重于组件或系统之间的交互。换句话说,它们协同工作的效果如何。集成测试的典型示例是 API 或组件测试。
端到端测试
这些测试通常称为 UI 测试,这个名称更好地解释了它们的功能。这些测试与应用程序的 UI 交互,包括完整的应用程序堆栈,并从一端到另一端测试您的应用程序。
如果您参考质量保证理论,它们类似于系统测试。这些测试模拟真实用户及其交互。端到端测试需要更长的运行时,因为它们涉及整个系统,而更长的运行时需要更多的计算能力。因此,这种额外的努力会导致更高的维护成本。
可视化 UI 测试
UI 测试的一个有趣的子类别是可视化测试。这些测试是扩展的端到端测试,提供了一种验证应用程序可见输出的方法。此类测试在更改后截取屏幕截图和包含“现状”(或黄金文件)的另一个屏幕截图,然后将这些结果提供给人工审核员进行检查和检查。换句话说,它有助于在页面外观中找到“视觉错误”,超出纯粹的功能错误和未明确写入断言的错误。
静态分析
这里还有一件事要介绍:静态分析。从教科书意义上来说,它不是一种测试类型。但是,它将在以后的质量保证策略中发挥重要作用。您可以将其想象成拼写检查功能:它扫描您的代码中更明显的缺陷和语法错误,而无需运行程序,从而检测代码风格问题。这种简单的措施可以防止许多错误。如果您想更详细地了解静态分析,这是一个了解静态分析的好时机。
各种形式的测试:这一切如何协同工作?
在搜索所有这些问题的答案时,您可能会在一些类比中找到可能的解决方案。特别是在 Web 和测试社区中,开发人员倾向于使用这些类比来让您了解应该使用多少种类型的测试。
下图描绘的以下五种策略是最常见的
- 测试金字塔
- 测试钻石
- 测试冰淇淋筒(也称为测试披萨)
- 测试蜂巢
- 测试奖杯
这确实是很多信息需要处理。您应该如何根据所有这些信息决定匹配的测试策略?别担心,我们已经为您考虑到了。在下一篇文章中,我们将更详细地讨论这些不同的策略,并解释如何为您的项目选择最合适的策略。敬请关注!🔥