用户验收测试(UAT)和端到端(E2E)测试是一回事吗?

Are user acceptance test (UAT) and end-to-end (E2E) test the same thing?

我一直试图在网上找到这个问题的答案,但找不到足够好的答案让我对答案有把握。

我认为它们本质上是相同的,但用户验收测试 (UAT) 需要真实用户,而端到端 (E2E) 测试使用自动化工具来模拟用户?

用户验收测试是典型软件开发过程中的阶段

另一方面,端到端测试是测试复杂应用程序的方法之一,它涉及应用程序的所有层在测试期间相互交互执行。

就是说在User Acceptance Test阶段可以进行End-to-End测试,不能把这两个词当成一个,意思是一样的。

端到端测试通常由技术 QA 团队执行,而用户验收测试通常由业务用户执行。观点不同,虽然可能会发生一些重复工作,但发现的缺陷可能会有所不同。

TLDR;

验收和端到端测试旨在从用户的角度测试应用程序的功能,您可以将它们组合为 "Functional tests"。不要模拟数据库或网络访问,这些测试应该 运行 针对生产环境。使用 TestCafe.

单元测试涵盖一个工作单元,这意味着一个方法。模拟依赖关系,如数据库或网络访问。使用 Jest.

集成测试涵盖多个相关的工作单元,例如 single/multiple ReactJS 组件。模拟依赖关系,如数据库或网络访问。使用 Jest.


验收和端到端测试旨在测试应用程序的功能。它们通常在开发开始之前由 BA、QA 和工程人员创建,然后在开发过程中由工程师自动化。

1.端到端测试(操作)

通常由团队中的某个人进行手动操作,以确保所有功能在新更新后仍然有效。这可以通过使用像 TestCafe 这样的 UI 测试工具来自动化。

例如"An authenticated user can start a job application, input all relevant details, and submit the application."

2。验收测试(视觉)

验收测试使用 Jest/TestCafe 等工具自动进行,并专注于故事功能 and/or 发生操作时页面上存在的内容。

例如"An authenticated user can view all job applications on the dashboard page."

3。单元测试

由工程师在开发过程中创建。测试一个工作单元,它可以是一个方法,也可以是一个由多个私有方法组成的方法。一个好的经验法则是只测试 class 的 public 接口。

私有方法并不总是需要测试,因为它们是工作单元的一部分。但在私有方法中存在复杂逻辑的情况下,单独测试它可能是个好主意。您可以在模拟工作单元(如数据库和网络访问)的依赖性时使用 Jest

4。集成测试

由工程师在开发过程中创建。在没有模拟的情况下测试一个工作单元。通常侧重于比单元测试更广泛的范围。例如,创建用户可能包括在数据库中存储详细信息、向服务发送 Web 请求以及响应客户端。通常需要一个内存中的 Web 服务器来 运行 测试。使用 Jest

坦率地说,对于不同级别的测试,我们没有通用的确切含义。 TDD 世界中每个测试阶段都有很多不同的含义或术语。有些使用 验收测试 作为 端到端 测试,有些则互换使用这些术语。例如在非常有名的TDD book中,Steve Freeman 就这样区分每个级别:

Levels of Testing:

  1. Acceptance: Does the whole system work?

  2. Integration: Does our code work against code we can't change?

  3. Unit: Do our object do the right thing, are they convenient to work with?

有人可能会说这些定义过于宽泛,可能不够准确。但测试的重点是确保整个应用程序按预期工作,并且在添加新功能时能够可靠地扩展。

一些将集成测试定义为测试与应用程序单元的交互,一些将其定义为依赖性测试。含义可以改变,但目的永远不会改变,确保有效的应用。我想说每个组织都有不同风格的测试流程,所以不要为 TDD 术语寻找确切的定义。只是大致了解这些用法和含义。