用户验收测试(UAT)和端到端(E2E)测试是相同的吗?

43

我一直在网上寻找这个问题的答案,但是我没有找到足够好的内容来使我对答案感到确定。

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

4个回答

48

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

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

这意味着您可以在用户验收测试阶段执行端到端测试,并且不能将这两个术语视为具有相同含义的术语。


23

简而言之:

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

单元测试覆盖的是一个单位的工作,也就是一个方法。模拟依赖项,如数据库或网络访问。使用Jest

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


验收测试和端到端测试旨在测试应用程序的功能性。通常在开发前由BA、QA和Engineering创建,然后在开发期间由工程师自动化。

1. 端到端测试(操作)

通常需要团队中的某个人手动执行,以确保所有功能在更新后仍然正常。可以使用UI测试工具如TestCafe进行自动化测试。

例如,“经过身份认证的用户可以启动一个工作申请,输入所有相关细节并提交申请。”

2. 验收测试(可视化)

验收测试使用像 Jest/TestCafe 这样的工具进行自动化,重点关注故事功能和/或页面上是否存在某些操作。

例如“经过身份验证的用户可以在仪表板页面上查看所有工作申请。”

3. 单元测试

由工程师在开发期间创建。测试一个单元的工作,可以是单个方法或由多个私有方法组成的方法。一个好的经验法则是只测试类的公共接口。

私有方法不一定需要被测试,因为它们是一个单元的工作部分。但是,如果私有方法中存在复杂逻辑,则将其隔离测试可能是一个好主意。您可以像模拟单元的依赖项(如数据库和网络访问)一样使用Jest

4. 集成测试

由工程师在开发期间创建。测试一个单位的工作而不需要模拟。通常比单元测试的范围更广泛。例如,创建用户可能包括将详细信息存储在数据库中,向服务发送Web请求并响应客户端。通常需要一个内存中的Web服务器来运行测试。使用Jest


6

End-to-End测试通常由技术QA团队执行,而用户验收测试通常由业务用户执行。 两者的视角不同,虽然可能会发生一些努力的重复,但识别出的缺陷可能会有所不同。


2
坦白说,我们没有针对不同测试级别的普遍确切含义。在TDD世界中,每个测试阶段都有许多不同的含义或术语。有些人将“验收测试”用作“端到端”测试,有些人则交替使用这些术语。例如,在非常著名的TDD book中,Steve Freeman将每个级别区分如下:
测试级别:
1.验收:整个系统是否正常工作?
2.集成:我们的代码是否与无法更改的代码配合工作?
3.单元:我们的对象是否做正确的事情,是否方便使用?
有人可能会说这些定义过于宽泛,可能不太准确。但是测试的重点是确保整个应用程序按预期工作,并且可以轻松扩展以添加新功能。
一些人将集成测试定义为测试应用程序单元之间的几个交互,而另一些人则将其定义为依赖关系测试。含义可能会有所变化,但目的从未改变,就是确保应用程序正常工作。我认为每个组织都有不同的测试流程风格,因此不要寻求TDD术语的精确定义,只需了解它们的一般含义和用法意图即可。

我认为“验收测试”、“端到端测试”和“集成测试”之间有区别。这篇文章有助于定义这些术语。学习的一件事是行为驱动开发(BDD),它需要使用验收测试进行自动化。 - Jose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接