跳到正文

端到端测试

End-to-End Test

中级通用

端到端测试(End-to-End Test)是从用户入口操作产品,检查一段完整流程能否走通的测试。它能发现页面、接口和数据存储单独看都正常,连起来却出错的问题;比如提交订单后,用户是否真能在订单列表中看到它。

你可能会说:「帮我像用户一样走一遍下单流程,确认从填写信息到看到订单都正常。」

读之前建议先了解

动手看看

提交订单下单页订单接口订单库订单列表
1

测试从用户入口开始:在下单页点击提交,而不是直接调用接口,因为要验证整段操作能否走通。

要点

  1. 1

    从用户操作走到最终结果

    你可以把它想成让程序代替用户走一趟:打开页面、填写信息、点击提交,再检查结果是否出现。重点不是某个函数算得对不对,而是用户想完成的事有没有完成。

  2. 2

    让多个环节一起接受检查

    一个订单页面可能能正常显示,创建订单的接口也能单独返回成功,但两者接起来仍可能传错商品编号。端到端测试走完整条路径,所以有机会发现这种环节之间的问题。

  3. 3

    只挑关键流程来自动化

    完整流程通常比单独测函数慢,也更容易受网络、环境和测试数据影响。我们一般先挑登录、付款前的下单、保存关键资料等流程,给每条测试准备可控的数据,并在结束后清理。

容易混淆的地方

单元测试看一个函数或组件在给定输入下是否正确;集成测试看几个模块接起来能否协作。端到端测试则从用户入口出发,验证一件事能否完成。它不一定要调用真实的外部服务:例如支付服务可以用测试环境或替身,但你得清楚哪些环节被替换了,测试结论也只覆盖实际跑过的路径。

什么时候用

适合用

  • 网站刚接好注册流程,想确认用户填表、收到验证结果后,真的能进入自己的账号。
  • AI 工具新增了保存对话功能,想检查用户发消息、得到回复、刷新页面后仍能看到记录。
  • 后台改了订单处理流程,想在发布前确认创建订单、查看订单和更新状态能连贯完成。

不适合用

  • 只想确认一个价格计算函数对几组输入是否算对,用单元测试更快,也更容易定位错误。
  • 只想检查两个服务之间的请求字段是否匹配,用契约测试或集成测试更直接。
  • 还在讨论页面流程、没有可运行的产品时,先用可点击原型验证操作路径,而不是写端到端测试。

练一练

你让 AI Agent 给一个记账网站补测试。最近用户反馈:点击“保存账单”后显示成功,但刷新列表找不到记录。哪种测试最贴近这个问题?

让 AI 帮你做

请为记账网站新增一条端到端测试:从页面填写并保存账单,刷新列表后确认账单仍存在。使用独立的测试数据,结束后清理;如果依赖被替换,请说明哪些环节没有被真实验证。

接下来学什么