集成测试
Integration Test
中级通用集成测试(Integration Test)是把几个实际协作的模块连起来,检查它们之间的调用和数据传递是否符合预期。它能发现单独测试模块时看不出的衔接问题,例如订单接口写入数据库后,查询接口能否读到这笔订单。
你可能会说:「帮我检查订单接口和数据库连在一起时是否正常,不只测各自的代码。」
动手看看下单后能查到订单吗
1
测试程序先创建订单甲,订单接口把它交给数据库。这里连的是真实协作的模块,不是各测各的。
要点集成测试到底在测什么?
- 1
重点看模块之间的衔接
单看下单逻辑,金额可能算对了;接上数据库后,字段却可能写错。集成测试会让这些部分一起运行,再检查结果,因为问题往往出在传值、配置或数据读写的交界处。
- 2
测试范围按风险来选择
你可以测接口与数据库,也可以测业务逻辑与消息队列。范围取决于你想验证哪段协作,不是连接的模块越多越好;范围太大,失败时反而更难找到是哪一处出了问题。
- 3
让依赖处于可控状态
如果测试会写数据库,就准备独立的测试数据,并在测试后清理。这样多次运行才不容易互相干扰。外部付费服务则可以用测试替身代替,同时把你真正关心的模块保留在测试中。
容易混淆的地方
单元测试通常把一个小范围的逻辑隔离开,适合定位计算或判断错误;集成测试让选定的模块真实协作,关注接口、配置和数据传递。端到端测试则常从用户入口走完整条流程,例如在页面提交订单并看到结果。三者的区别主要是验证范围,不是能否使用测试替身。
什么时候用
适合用
- 新增注册接口时,想确认接口校验通过后,用户记录确实能写入并从数据库读出。
- 修改消息发送逻辑后,想确认业务代码投递的消息能被消费者按约定解析。
- 调整登录会话的保存方式后,想确认登录接口和后续鉴权接口能正确衔接。
不适合用
- 只是验证价格计算函数在不同折扣下的结果,用单元测试更快,也更容易定位错误。
- 想确认用户能在浏览器里完成注册并看到成功页面,用端到端测试覆盖页面到服务端的完整路径。
- 产品还没有可运行的实现,只想判断注册流程是否顺手,先用可点击原型做用户验证。
练一练选一个答案,看看解释
你给后台新增了“创建优惠券”接口。单独测试折扣计算没问题,但担心接口收到请求后,写入数据库的有效期字段有误。你会优先补哪种测试?
让 AI 帮你做复制给 AI Agent 直接用
请为创建优惠券接口补一组集成测试:连接独立的测试数据库,提交包含有效期的请求,再查询落库记录并核对字段。说明测试数据如何准备和清理;不要把数据库写入过程整体模拟掉。