测试类型

验收测试

这种类型的测试用于确定特性或系统是否满足客户的期望和要求。这种类型的测试通常涉及客户的合作或反馈,是一种验证活动,回答了以下问题:

我们是否在构建正确的产品?

对于 Web 应用程序,可以通过模拟用户预期的行为,直接使用 Selenium 实现此测试的自动化。可以通过录制/回放或通过本文档中解释的不同支持语言来完成此模拟。注意:验收测试是功能测试的一个子类型,有些人可能也会这样称呼它。

功能测试

这种类型的测试用于确定特性或系统是否正常运行,没有任何问题。它在不同级别检查系统,以确保涵盖所有场景,并且系统执行其应该执行的操作。它是一种验证活动,回答了以下问题:

我们是否在正确地构建产品?

这通常包括:测试运行无错误(404,异常...),以可用的方式(正确的重定向),
以可访问的方式并符合其规范(请参见上面的验收测试)。

对于 Web 应用程序,可以通过模拟预期返回值,直接使用 Selenium 实现此测试的自动化。
可以通过录制/回放或通过本文档中解释的不同支持语言来完成此模拟。

集成测试

集成测试验证系统中不同组件或模块之间的交互。多个模块一起进行测试。集成测试的目的是确保所有模块按预期集成并协同工作。自动化集成测试有助于确保这些交互按预期工作,并且集成组件正常协同工作。

例如,测试电子商务网站中下单购买商品并付款的流程。

系统测试

系统测试是完整的、完全集成的产品测试。这是一种端到端测试,其中测试环境与生产环境类似。在这里,我们浏览软件的所有功能,并测试最终业务/最终功能是否正常工作。我们只测试最终功能,而不检查数据流或进行功能测试等。

例如,测试从登录到下单,并在“我的订单”页面重新检查订单,然后从电子商务网站注销的端到端流程。

性能测试

顾名思义,性能测试用于衡量应用程序的性能。

性能测试有两个主要子类型

负载测试

负载测试用于验证应用程序在不同的定义负载(通常是一次连接的特定用户数)下如何工作。

压力测试

压力测试用于验证应用程序在压力下(或超过最大支持负载)如何工作。

通常,性能测试是通过执行一些 Selenium 编写的测试来模拟不同的用户点击 Web 应用程序上的特定功能并检索一些有意义的测量结果来完成的。

这通常由检索指标的其他工具完成。其中一种工具是 JMeter

对于 Web 应用程序,要测量的详细信息包括吞吐量、延迟、数据丢失、单个组件加载时间等。

注 1:所有浏览器在其开发者工具部分(按 F12 可访问)都有一个性能选项卡

注 2:是非功能测试的一个子类型,因为这通常是按系统而不是按功能/特性来测量的。

回归测试

此测试通常在更改、修复或添加功能后进行。

为了确保更改没有破坏任何现有功能,将再次执行一些已经执行过的测试。

重新执行的测试集可以是完整的或部分的,并且可以包括几种不同的类型,具体取决于应用程序和开发团队。

测试驱动开发 (TDD)

TDD 不是一种本身的测试类型,而是一种迭代开发方法,其中测试驱动特性的设计。

每个周期都从创建一组单元测试开始,该特性最终应该通过这些单元测试(它们在第一次执行时应该失败)。

在此之后,进行开发以使测试通过。再次执行测试,开始另一个周期,并且此过程一直持续到所有测试都通过为止。

这旨在加快基于以下事实的应用程序开发:缺陷越早被发现,成本就越低。

行为驱动开发 (BDD)

BDD 也是基于上述 TDD 的一种迭代开发方法,其目标是让所有参与方都参与到应用程序的开发中。

每个周期都从创建一些规范(应该失败)开始。然后创建失败的单元测试(也应该失败),然后进行开发。

重复此周期,直到所有类型的测试都通过。

为此,使用规范语言。它应该易于所有参与方理解,并且简单、标准且明确。大多数工具使用 Gherkin 作为此语言。

目标是通过针对潜在的验收错误并使各方之间的沟通更加顺畅,来检测比 TDD 更多的错误。

目前可以使用一组工具来编写规范并将其与代码函数匹配,例如 CucumberSpecFlow。

一组工具建立在 Selenium 之上,通过将 BDD 规范直接转换为可执行代码来使此过程更快。其中一些是 JBehave、Capybara 和 Robot Framework

上次修改时间:2024 年 2 月 6 日:更新 testing_types.en.md (#1575) (f9d840c89b7)