在端到端(E2E)测试金字塔中,测试占据了最高的梯级之一。通过编写一个E2E测试,您可以对应用程序逻辑的结果充满信心,测试与其他系统的集成,并为您的应用程序创建“合同”。
不幸的是,与我合作的许多同事都没有编写端到端测试。部分原因是他们全力以赴地进行单元测试,并认为其更好的原因有很多,包括TDD趋势。部分原因是他们认为E2E测试很难编写,执行时间很长,并且仪器存在问题。
让我们整理一下这些意见,看看E2E测试所提供的优点。
术语
让我们将自动测试的类型置于E2E测试之下。从客户的角度来看,这些自动测试应涵盖所有服务功能。他们通过模拟实际的客户端交互(无论是HTTP请求还是单击UI中的按钮)来实现此目的。
单元测试方法更好
以我的经验,编写单元测试比E2E测试花费的时间长得多。是的,起初您必须弄清楚如何更好地编写E2E测试,但单元测试也是如此。
另一方面,尽管与类似的单元测试套件相比,它可能花费更少的行,但是,一个E2E测试涵盖的代码多于一个单元测试。
您不必浪费时间来了解如何正确模拟依赖关系,因为外部系统已成为E2E测试中的依赖关系,并且根据“黑匣子”原理构建了与被测服务的交互。
您无需为单个类方法检查所有边界条件。由于无需在应用程序的内部逻辑上进行最小的更改即可重构整个测试套件,因此这增加了使用代码的灵活性。
, , 100 ( ), .
backend- , API HTTP ( GraphQL) MQ. HTTP, mainstream .
Frontend- , , Web- () . , , , .
E2E , . . .. . , .
E2E
, , .
"" code-coverage. , , , , . exception, , ?
, E2E .
E2E API . , backend, E2E , , frontend .
, , E2E , unit-, .
! , E2E ?