第 1 种理解来自 Google,Google 定义了通过了单元测试和集成测试,end-to-end 测试将整个系统作为一个整体来验证。
第 2 种理解来自更早些时候的传统软件测试,在真实场景中从头到尾测试整个应用程序,测试应用程序流是否按照设计的方法,end-to-end 测试强调从用户角度执行测试,关注用户使用场景。
本文以第 2 种理解来阐述端到端测试的目标、范围、益处以及如何设计测试用例等
端到端测试 End-to-End Testing:在真实场景中从头到尾执行测试整个应用程序 (类似生产场景),测试应用程序流是否按照设计的方法,例如与数据库、网络、硬件和其他应用程序通信。从用户角度执行测试,关注用户使用场景。也称为链测试(Chain Testing)。 也可以简单粗暴的理解为我们日常所说的联调测试。
端到端测试目的:识别系统之间的依赖关系,并确保在不同的系统组件和系统 (如使用网络通道的数据库或 GUI) 之间传递正确的信息。
端到端测试范围:1) 验证被测软件系统 2) 检查被测系统与外部接口的集成,验证来自上游/下游系统的批处理/数据处理
四个主要原因:
软件系统复杂性
与多子系统相互连接
子系统来自不同组织/公司
子系统与当前系统不同
理想情况下,端到端测试测试系统与生产系统完全相同。
服务追踪系统(业务全链路调用)
数据流转追踪系统
测试数据管理平台
熟知软件产品研发生命周期从需求到发布
理解整个系统、相互连接的子系统及其关系
能够分析业务数据流和工作流的能力
用户功能 User Functions:列出软件系统及其相互连接的子系统的功能;跟踪执行的操作、输入/输出数据;不同功能之间的关系;找出不同功能的本质。
条件 Conditions:测试数据、时间等影响用户功能的因素
测试用例 Test Cases:每个场景应该创建一个或多个测试用例;每个单独的条件都应该作为一个单独的测试用例
TestCraft:无代码 Selenium 测试自动化平台
TestCafe:前端端到端自动化测试工具,可以使用简单的 JS 或者 Typescript 写测试用例
cypress.io:端到端的测试 web 工具
工欲善其事,必先利其器。端到端测试强依赖研发环境、研发及监控工具平台等基础实施,基建好了,研发人员包括测试人员才可能持续高效的交付高质量软件产品。