在使用 vue 的模板创建新项目的时候,有一个选项是问,是否添加“端到端”测试?说实在我不知道,而且三个选项一个都不认识。
? Add an End-to-End Testing Solution? › - Use arrow-keys. Return to submit.
❯ No
Cypress
Nightwatch
Playwright
什么是“端到端”测试?(End-to-End)
端到端测试是一种软件测试技术,它通过模拟真实用户场景和复制实时数据,从开始到结束验证整个软件应用的功能和性能。其目的是在所有组件集成时识别出出现的bug,确保应用程序作为一个统一的整体提供预期的输出。
端到端测试也被称为E2E测试。得益于端到端测试,测试人员能够从最终用户的角度洞察应用程序的功能,从而在发布前对软件质量有一个更全面的了解。
端到端测试的重要性
端到端测试在现代软件中至关重要,因为现代软件已经变得复杂,有数十个系统同时相互交互。
即使这些组件单独运行时功能完美,但在集成时仍可能因为组件间的沟通失误而失败。端到端测试的目的是验证通过自动化测试对象(AUT)的信息流,包括所有可能的路径和依赖关系。如果在软件组件和/或子系统之间的任何“接触点”存在问题,测试人员可以轻松定位根本原因并立即进行故障排除。
测试人员希望在端到端测试中实现最高级别的覆盖。应用程序的所有子系统或组件,如用户界面、应用服务器、数据库,以及应用程序可能与之交互的任何外部系统,都应进行端到端测试。
端到端测试的例子
这里是一个电子商务网站端到端测试的例子。
在这个场景中,顾客从网站购买产品,进行支付,并收到确认邮件。为确保功能按预期工作,必须执行以下测试:
- 验证产品页面和产品选择功能的功能。
- 验证客户信息表单中的数据验证功能。
- 验证支付信息的有效性。
- 验证支付处理功能。
- 确认支付成功,并且网站显示了确认消息。
- 检查顾客的电子邮箱收件箱是否有确认邮件。
- 验证确认邮件包含购买的正确详细信息(例如,产品名称、数量、价格、订单号)。
- 检查顾客在网站上的账户,确认购买已列在订单历史中。
在这里,我们验证了整个购买过程,从选择产品到接收确认邮件。我们还检查了网站组件(购物车、支付系统、电子邮件通知)是否都在彼此之间顺畅地交互。
端到端测试的好处
端到端测试之所以更加可靠且被广泛采用,是因为它具有以下好处:
-
跨多个应用层面的质量管理:现代应用程序建立在复杂的架构之上,由多个相互连接的工作流层组成。这些层单独工作时可能运行良好,但一旦连接起来可能会相互冲突。端到端测试可以验证这些单独层和组件之间的交互。
-
后端质量保证:端到端测试首先验证后端层,特别是应用程序的数据库,它为其他层提供关键信息以使应用程序工作。
-
确保跨环境的一致应用质量:端到端测试验证前端,确保应用程序在广泛的浏览器、设备和平台上按预期工作。为此目的经常进行跨浏览器测试。
-
第三方应用程序测试:有外部系统集成到应用程序中以执行高度特定的任务。端到端测试确保外部系统与内部系统的兼容性,以及它们之间的数据通信。
端到端测试和功能测试的比较
功能测试 | 端到端测试 | |
---|---|---|
范围 | 测试局限于单段代码或应用 | 测试跨越多个应用或者用户群组 |
目标 | 保证测试软件满足接受条件 | 保证变化发生后,一个过程持续工作 |
方法 | 单个用户与应用交互 | 多个用户与应用交互 |
验证 | 验证每个测试的输入和输出 | 验证一个过程的每一步是否完成 |
端到端测试和集成测试的比较
集成测试 | 端到端测试 | |
---|---|---|
视角 | 技术团队视角 | 最终用户视角 |
目标 | 确保应用组件在一起是工作的 | 确保用户体检是一致的 |
范围 | 应用内的多个组件 | 可能会穿越应用整个的技术栈 |
成本 | 较低实现成本 | 较高实现成本,因为软硬件尽可能模拟真实 |
时间 | 比端到端快一些 | 比集成测试消耗更多时间 |
总结
端到端测试总体来说,是一种更关注终端用户体验,以最终体验一致性为目标的测试。测试要求贯穿多个应用,场景和用户群体,尽可能与真实环境一致的软硬件环境。会消耗相当的成本。但是也会给最终质量带来更多的保障。