跳到正文

集成测试

Integration Test

中级通用

集成测试(Integration Test)是把几个实际协作的模块连起来,检查它们之间的调用和数据传递是否符合预期。它能发现单独测试模块时看不出的衔接问题,例如订单接口写入数据库后,查询接口能否读到这笔订单。

你可能会说:「帮我检查订单接口和数据库连在一起时是否正常,不只测各自的代码。」

读之前建议先了解

动手看看

创建甲写入甲测试程序订单接口数据库查询接口
1

测试程序先创建订单甲,订单接口把它交给数据库。这里连的是真实协作的模块,不是各测各的。

要点

  1. 1

    重点看模块之间的衔接

    单看下单逻辑,金额可能算对了;接上数据库后,字段却可能写错。集成测试会让这些部分一起运行,再检查结果,因为问题往往出在传值、配置或数据读写的交界处。

  2. 2

    测试范围按风险来选择

    你可以测接口与数据库,也可以测业务逻辑与消息队列。范围取决于你想验证哪段协作,不是连接的模块越多越好;范围太大,失败时反而更难找到是哪一处出了问题。

  3. 3

    让依赖处于可控状态

    如果测试会写数据库,就准备独立的测试数据,并在测试后清理。这样多次运行才不容易互相干扰。外部付费服务则可以用测试替身代替,同时把你真正关心的模块保留在测试中。

容易混淆的地方

单元测试通常把一个小范围的逻辑隔离开,适合定位计算或判断错误;集成测试让选定的模块真实协作,关注接口、配置和数据传递。端到端测试则常从用户入口走完整条流程,例如在页面提交订单并看到结果。三者的区别主要是验证范围,不是能否使用测试替身。

什么时候用

适合用

  • 新增注册接口时,想确认接口校验通过后,用户记录确实能写入并从数据库读出。
  • 修改消息发送逻辑后,想确认业务代码投递的消息能被消费者按约定解析。
  • 调整登录会话的保存方式后,想确认登录接口和后续鉴权接口能正确衔接。

不适合用

  • 只是验证价格计算函数在不同折扣下的结果,用单元测试更快,也更容易定位错误。
  • 想确认用户能在浏览器里完成注册并看到成功页面,用端到端测试覆盖页面到服务端的完整路径。
  • 产品还没有可运行的实现,只想判断注册流程是否顺手,先用可点击原型做用户验证。

练一练

你给后台新增了“创建优惠券”接口。单独测试折扣计算没问题,但担心接口收到请求后,写入数据库的有效期字段有误。你会优先补哪种测试?

让 AI 帮你做

请为创建优惠券接口补一组集成测试:连接独立的测试数据库,提交包含有效期的请求,再查询落库记录并核对字段。说明测试数据如何准备和清理;不要把数据库写入过程整体模拟掉。

接下来学什么