软件测试中的 测试边界Seam 是什么?

在软件工程中,**Seam(接缝)**是指代码中可以被替换、隔离或独立验证的边界。这个概念因 Michael Feathers 的《修改代码的艺术》(Working Effectively with Legacy Code)而广为人知。

通俗地说,Seam 就是我们测试系统时选定的“切入点”:

  • 从哪里输入数据;
  • 从哪里观察结果;
  • 哪部分作为一个整体测试;
  • 哪些内部实现细节不需要关注。

示例:小程序登录

微信登录 code
      ↓
   认证模块
      ↓
登录成功 / 需要绑定手机号 / 登录失败

这里可以把“认证模块”作为一个测试边界:

  • 输入微信登录凭证;
  • 检查返回的登录状态和 Token;
  • 不关心模块内部用了几个函数、变量如何命名。

常见的 Seam

  • API 请求层与业务逻辑之间;
  • 服务层与数据库之间;
  • 页面与状态管理模块之间;
  • 第三方服务与应用代码之间;
  • 微信登录接口与认证模块之间。

为什么需要 Seam?

合理选择测试边界可以:

  • 隔离数据库、网络和第三方服务;
  • 让测试更容易编写和定位问题;
  • 避免测试依赖内部实现细节;
  • 让代码重构后仍能保留原有测试;
  • 明确每项测试究竟负责验证什么。

总结

Seam 是代码中可以被隔离、替换或独立验证的接缝,它规定了测试从哪里输入、从哪里观察结果,以及测到