测试基础 端到端测试到底怎么测的?

Angelia · 2021年08月05日 · 最后由 陈恒捷 回复于 2021年08月06日 · 9950 次阅读

1. 端到端测试的两种理解

第 1 种理解来自 Google,Google 定义了通过了单元测试和集成测试,end-to-end 测试将整个系统作为一个整体来验证。
第 2 种理解来自更早些时候的传统软件测试,在真实场景中从头到尾测试整个应用程序,测试应用程序流是否按照设计的方法,end-to-end 测试强调从用户角度执行测试,关注用户使用场景。
本文以第 2 种理解来阐述端到端测试的目标、范围、益处以及如何设计测试用例等

2. 什么是端到端测试?

端到端测试 End-to-End Testing:在真实场景中从头到尾执行测试整个应用程序 (类似生产场景),测试应用程序流是否按照设计的方法,例如与数据库、网络、硬件和其他应用程序通信。从用户角度执行测试,关注用户使用场景。也称为链测试(Chain Testing)。 也可以简单粗暴的理解为我们日常所说的联调测试。
端到端测试目的:识别系统之间的依赖关系,并确保在不同的系统组件和系统 (如使用网络通道的数据库或 GUI) 之间传递正确的信息。
端到端测试范围:1) 验证被测软件系统 2) 检查被测系统与外部接口的集成,验证来自上游/下游系统的批处理/数据处理

3. 端到端测试 VS. 系统测试


4.为什么需要端到端测试?

四个主要原因:
软件系统复杂性
与多子系统相互连接
子系统来自不同组织/公司
子系统与当前系统不同

5.实施端到端测试的前提条件 - 时机

测试环境

理想情况下,端到端测试测试系统与生产系统完全相同。

平台/工具

服务追踪系统(业务全链路调用)
数据流转追踪系统
测试数据管理平台

人员要求

熟知软件产品研发生命周期从需求到发布
理解整个系统、相互连接的子系统及其关系
能够分析业务数据流和工作流的能力

6. 端到端测试带来的好处 Benefits

7. 端到端测试的 2 种方法

横向测试 Horizontal Test

  • 最常见的方法
  • 横跨多个应用程序/子系统 例:一个基于 web 的在线订购系统应用程序,整个过程将包括帐户,产品的库存状态以及发货细节等

垂直测试 Vertical Test

  • 更困难的方法
  • 从头到尾进行验证和评估每个应用程序,应用程序的每一层都从上到下进行测试。 例:一个基于 web 的应用程序,使用 HTML 代码来访问 web 服务器,需要使用 API 来针对数据库生成 SQL 代码。所有这些复杂的计算场景都需要适当的验证和专门的测试。

8. 如何设计端到端测试用例?

用户功能 User Functions:列出软件系统及其相互连接的子系统的功能;跟踪执行的操作、输入/输出数据;不同功能之间的关系;找出不同功能的本质。
条件 Conditions:测试数据、时间等影响用户功能的因素
测试用例 Test Cases:每个场景应该创建一个或多个测试用例;每个单独的条件都应该作为一个单独的测试用例

9. 端到端测试用例设计准则

10. 端到端测试的不足之处

11. 端到端测试参考(来自私下调研,不一定完整)

12. 端到端测试辅助工具

TestCraft:无代码 Selenium 测试自动化平台
TestCafe:前端端到端自动化测试工具,可以使用简单的 JS 或者 Typescript 写测试用例
cypress.io:端到端的测试 web 工具

13. 端到端测试占比

14. 何时执行端到端测试?

15. 可行性方案建议

工欲善其事,必先利其器。端到端测试强依赖研发环境、研发及监控工具平台等基础实施,基建好了,研发人员包括测试人员才可能持续高效的交付高质量软件产品。

共收到 6 条回复 时间 点赞

太理论了都没人来讨论了啊,我自己来开个头。 可以延伸讨论讨论, 现在不同测试岗位各司其职、各扫门前雪的情况下,漏测成为了常态,有哪些方式能够避免?

Angelia 回复

拉一个单独的集成团队,负责整体。或者改变测试团队的结构,类似产品,按业务分,而非按端分。

我们这边用的主要是第二种,不按端分测试团队,只按业务分。如果是有些需求涉及中台型的团队(如审核系统,一对 N,不归任何一个业务线),那集成部分这个团队的测试和业务团队都执行一遍,交叉验证。

陈恒捷 回复

按业务分,测试技能要求就高了👍

同时中台架构设计要好,不能是伪中台了,中台和业务的关系清晰,业务测试人员和中台人员可以互相覆盖,都往前走一步,确实可以解决很多问题。

陈恒捷 回复

都执行一遍,会产生重复劳动,这可以通过管理手段避免。
几年前我对这种问题产生这么个想法,可以把所有工作内容看做个方格 (未必是绝对四方形),就需要考虑 “横向” 还是 “纵向” 划分任务更合理的问题 (对应比如按子系统还是测试阶段划分),某些情况下混合着来更好,但要注意重复覆盖问题。

現在很多系统下游都带着算法服务、数据操作服务、感觉端到端测试和集成测试环境建设更多的还是要考虑这一块,一个良好的系统的离线部分理论上在线下是可以做到全覆盖的

Thirty-Thirty 回复

重复劳动倒不至于很多,还是会有些侧重点的。只是这个容易中空的地带两边都需要参与,不能成为只是其中一方,这样容易由于不熟悉和关注点不够全面,导致遗漏。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册