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

Testing 用户验收测试(UAT)和端到端(E2E)测试是否相同?,testing,end-to-end,user-acceptance-testing,Testing,End To End,User Acceptance Testing,我一直试图在网上找到这个问题的答案,但我还没有找到足够好的答案让我确信答案 我相信它们本质上是一样的,但用户验收测试(UAT)需要一个真实的用户,而端到端(E2E)测试使用自动化工具来模拟用户?用户验收测试是典型软件开发过程中的一个阶段 另一方面,端到端测试是测试复杂应用程序的方法之一,它涉及应用程序的所有层,以便在测试执行期间相互交互 这意味着您可以在用户验收测试阶段执行端到端测试,并且不能将这两个术语视为一个,具有相同的含义。端到端测试通常由技术QA团队执行,而用户接受测试通常由业务用户执行

我一直试图在网上找到这个问题的答案,但我还没有找到足够好的答案让我确信答案


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

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

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


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

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

TLDR

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

单元测试涵盖一个工作单元,即一种方法。模拟依赖项,如数据库或网络访问。使用

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


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

1。端到端测试(操作)

通常是团队中的某个人手动操作,以确保所有功能在新更新后仍能正常工作。这可以通过使用UI测试工具实现自动化,如

例如,“经过身份验证的用户可以启动作业应用程序,输入所有相关详细信息,然后提交应用程序。”

2。验收测试(目视)

验收测试通过/等工具实现自动化,并集中于故事功能和/或发生动作时页面上存在的内容

例如,“经过身份验证的用户可以在仪表板页面上查看所有作业应用程序。”

3。单元测试

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

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

4。集成测试


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

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

测试级别:

  • 验收:整个系统工作正常吗

  • 集成:我们的代码是否与我们无法更改的代码兼容

  • 单位:我们的目标做对了吗?他们工作方便吗

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


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

    我想说,接受、E2E和集成之间有区别。需要学习的一件事是行为驱动开发(BDD),它需要使用自动化的验收测试。