集成测试与端到端测试
一、集成测试:组件/服务间的接口与数据
集成测试验证多个单元组合在一起时的行为:真实(或接近真实)的依赖、真实的接口与数据流。例如:业务层 + 数据层一起跑,用真实或测试库;服务 A 调服务 B 的 HTTP 接口,用真实网络或本地起两个服务。关注点是接口契约(入参出参、错误码是否一致)、数据(写进去读出来对不对、事务是否生效)、超时与重试、依赖版本兼容。和单测的区别:单测隔离依赖,集成测「连上」;所以集成测试更慢、更依赖环境,数量要控制、重点放在关键协作路径上。
二、E2E 测试:用户场景与关键路径
端到端(E2E)测试从用户视角模拟完整操作:打开页面、点击、输入、提交,一直到最后看到正确结果或错误提示。通常启动完整应用(或接近完整的环境),用真实浏览器或无头浏览器(如 Puppeteer、Playwright)驱动 UI,或通过 API 模拟「用户做了一串操作」。价值在于验证关键路径——登录、下单、支付、查询等——整条链是否通;单测和集成测不到的前后端配合、路由、权限、会话等问题,E2E 能暴露。
代价是慢、脆、难定位:环境依赖多、网络与 UI 不稳定会导致偶发失败;失败时往往只知「某步挂了」,要查日志或录屏才能定位。所以 E2E 数量要少,只保最核心的几条用户路径;其余交给单测和集成。
三、环境、数据与稳定性
环境:集成和 E2E 需要可用的运行环境——同一套服务、数据库、配置。常用做法是 CI 里起测试环境(Docker Compose、K8s 测试命名空间)或使用独立测试环境;环境要与生产尽量一致(版本、配置),避免「测试过了生产挂」。数据:测试数据要可控、可重复。用种子数据、fixture、或每次测试前初始化/清理,避免依赖「某条恰好存在的数据」;敏感数据脱敏或用假数据。稳定性:E2E 容易因网络、时序、UI 变化而 flaky。应对:重试关键步骤、等待条件而非固定 sleep、用例独立(不依赖执行顺序)、失败时保留日志与截图便于排查。
环境、数据、稳定性要点
- 环境:CI 或独立测试环境,与生产版本/配置接近;能自动拉起、回收最好。
- 数据:种子数据或 fixture,测试前初始化、测试后清理或隔离;敏感数据脱敏。
- 稳定性:E2E 用条件等待、重试、独立用例;失败留日志/截图/录屏,便于定位 flaky。
四、测试自动化框架选型
集成测试和 E2E 都需要框架支撑。选型时看:语言与栈(与项目一致)、集成方式(能否方便起服务、打请求、断言)、E2E 是否要驱动浏览器(Puppeteer、Playwright、Cypress、Selenium 等)、报告与 CI 集成、团队熟悉度。不必追求「最强」框架,选能落地、好维护的;先覆盖关键路径,再逐步扩展。
一句话: 集成测试测组件/服务间的接口与数据流,用真实或测试依赖,重点在契约与协作。E2E从用户视角走完整路径,验证关键场景,数量少而精。环境要可控、数据要可重复、稳定性靠条件等待与重试。框架选型看语言、场景(API 还是浏览器)、CI 与团队习惯,先覆盖关键路径再扩展。
五、小结
集成测试验证多组件/服务协作、接口与数据;用真实或测试依赖,关注契约、数据、超时与版本。E2E从用户操作到结果整条链验证,覆盖关键路径,数量少、注意稳定性。环境接近生产、数据可控可重复、稳定性靠等待与重试与独立用例。框架按语言与场景选(pytest/Jest/Playwright/Cypress 等),先关键路径再扩展。下一章讲性能测试与安全测试入门,把负载、压力、安全扫描与 CI 集成说细。