我一直试图在网上找到这个问题的答案,但我找不到足够好的答案让我确信答案。
我相信它们本质上是相同的,但用户验收测试 (UAT) 需要真实用户,而端到端 (E2E) 测试使用自动化工具来模拟用户?
我一直试图在网上找到这个问题的答案,但我找不到足够好的答案让我确信答案。
我相信它们本质上是相同的,但用户验收测试 (UAT) 需要真实用户,而端到端 (E2E) 测试使用自动化工具来模拟用户?
用户验收测试是典型软件开发过程中的一个阶段。
另一方面,端到端测试是测试复杂应用程序的方法之一,它涉及应用程序的所有层在测试执行期间相互交互。
这意味着您可以在用户验收测试阶段执行端到端测试,并且您不能将这两个术语视为一个,具有相同的含义。
TLDR;
验收和端到端测试旨在从用户的角度测试应用程序的功能,您可以将它们组合在一起作为“功能测试”。不要模拟数据库或网络访问,这些测试应该针对生产环境运行。使用TestCafe。
单元测试涵盖了一个工作单元,这意味着一个方法。模拟数据库或网络访问等依赖项。使用开玩笑。
集成测试涵盖多个相关的工作单元,例如单个/多个 ReactJS 组件。模拟数据库或网络访问等依赖项。使用开玩笑。
验收和端到端测试旨在测试应用程序功能。它们通常在开发开始之前由 BA、QA 和工程部门创建,然后在开发过程中由工程师自动化。
1.端到端测试(操作)
通常需要团队中的某个人手动完成,以确保所有功能在新更新后仍然有效。这可以通过使用像TestCafe这样的 UI 测试工具来自动化。
例如“经过身份验证的用户可以启动工作申请,输入所有相关详细信息,然后提交申请。”
2. 验收测试(视觉)
验收测试使用Jest / TestCafe等工具自动化,并专注于故事功能和/或发生操作时页面上存在的内容。
例如“经过身份验证的用户可以查看仪表板页面上的所有工作申请”。
3.单元测试
由工程师在开发过程中创建。测试可以是单个方法或由多个私有方法组成的方法的工作单元。一个好的经验法则是只测试一个类的公共接口。
私有方法不一定需要测试,因为它们是工作单元的一部分。但是在私有方法中存在复杂逻辑的情况下,单独测试它可能是一个好主意。您可以在模拟数据库和网络访问等工作单元的依赖关系时使用Jest 。
4. 集成测试
由工程师在开发过程中创建。在没有模拟的情况下测试一个工作单元。通常侧重于比单元测试更广泛的范围。例如,创建用户可能包括在数据库中存储详细信息、向服务发送 Web 请求以及响应客户端。通常需要内存中的 Web 服务器来运行测试。使用开玩笑。
端到端测试通常由技术 QA 团队执行,而用户验收测试通常由业务用户执行。观点不同,虽然可能会发生一些重复工作,但识别出的缺陷可能会有所不同。
坦率地说,对于不同级别的测试,我们没有普遍的确切含义。TDD 世界中每个测试阶段都有很多不同的含义或术语。有些使用验收测试作为端到端测试,有些则可以互换使用这些术语。例如在非常著名的 TDD书中,Steve Freeman 就像这样区分每个级别:
测试级别:
验收:整个系统是否工作?
集成:我们的代码是否适用于我们无法更改的代码?
单元:我们的对象做正确的事吗,使用起来方便吗?
有人可能会说这些定义太宽泛,可能不太准确。但测试的重点是确保整个应用程序按预期工作,并且在添加新功能时可以进行扩展。
有些人将集成测试定义为测试与应用程序单元的交互,有些人将其定义为依赖项测试。含义可以改变,但目的永远不会改变,确保有效的应用程序。我想说每个组织都有不同风格的测试过程,所以不要为 TDD 术语寻求确切的定义。只需大致了解这些内容和用法的含义即可。