软件测试过程与治理

把 SDLC 中测试的放置位置、静态与动态测试、测试过程、缺陷管理、度量与 whole-team approach 串起来理解。

#type / synthesis #status / growing #tech / dev / test

[!info] related notes

软件测试过程与治理

范围

这篇笔记关心的是:测试如何嵌进 SDLC,以及测试活动本身如何被计划、执行、度量和治理。

为什么要把这些内容放在一起理解

很多团队一谈测试就只剩“写用例”和“跑脚本”,结果容易遗漏两件事:

  • 测试在项目生命周期里应该何时开始、何时结束
  • 测试过程本身也需要工程化治理

如果没有这两层,测试往往会变成补洞式劳动,而不是系统化反馈系统。

测试在 SDLC 里放在哪里

成熟工程里,测试从需求和设计阶段就开始,而不是代码写完才启动。

需求与设计阶段

这一阶段更适合做:

  • review
  • walkthrough
  • technical review
  • inspection
  • acceptance criteria 澄清
  • product risk 识别

这类活动属于静态测试,因为它们不需要执行系统。

编码与开发阶段

这一阶段会引入:

  • TDD / ATDD / BDD
  • 组件测试
  • 静态分析
  • CI 快速反馈

这里的关键是左移,但左移不是“后面的测试都不要了”,而是更早开始。

集成、系统与验收阶段

这时要继续补:

  • 组件集成
  • 系统测试
  • 系统集成测试
  • 验收测试
  • 非功能测试

也就是说,shift-left 的前提是“更早开始”,不是“后面可以省掉”。

发布与运行阶段

测试并不会在发布那一刻结束。运行期的:

  • outage
  • incident
  • user feedback
  • 线上缺陷

都应该继续回流成新的回归测试、风险项和改进行动。

测试的四个常见维度

按时机

  • 静态测试:不执行软件,关注 review 和 analysis
  • 动态测试:执行软件,观察真实行为

按层次

  • 组件
  • 组件集成
  • 系统
  • 系统集成
  • 验收

按目标

  • 功能测试:系统做什么
  • 非功能测试:系统做得怎么样

按变更目的

  • 确认测试:确认 bug 真的修好了
  • 回归测试:确认改动没把别的地方带坏
  • 维护测试:覆盖增强、热修、迁移、环境升级等变化

测试过程本身怎么拆

一个更完整的测试过程通常包括:

  1. 计划
  2. 监控与控制
  3. 分析
  4. 设计
  5. 实现
  6. 执行
  7. 完成

它们看起来像线性流程,但在真实项目里往往是并行和迭代进行的。

test analysis 和 test design 要分开

这是很多团队最容易混淆的地方。

test analysis 回答“测什么”

它从需求、风险、可测性出发,定义:

  • testable features
  • test conditions
  • coverage criteria

test design 回答“怎么测”

它把测试条件展开成:

  • test cases
  • test data
  • environment requirements
  • scripts
  • suites

如果没有先做 analysis,团队很容易堆出很多存在感很强、但没真正覆盖高风险区域的测试。

缺陷管理不是杂务

一个好的 defect report 至少应讲清:

  • 对象
  • 环境
  • 复现步骤
  • 预期结果
  • 实际结果
  • 严重度与优先级
  • 当前状态
  • 关联测试或日志

修复后,先做 confirmation testing,再做 regression。更进一步,还要做 root cause analysis,把问题沉淀成:

  • 新回归测试
  • 静态检查
  • 设计约束
  • 流程改进

度量与治理

成熟测试治理不应该只盯一个总体覆盖率数字,更应该看:

  • traceability:需求、风险、测试条件、测试用例、结果、缺陷能否串起来
  • impact analysis:变更会影响哪些行为和测试
  • residual risk:剩余风险是否已降到可接受水平

测试计划也不是形式文档,而是为了明确:

  • 目标
  • 范围
  • 约束
  • 风险
  • 环境
  • 预算
  • 进度
  • 沟通方式

whole-team approach 与独立性

质量不应该被外包给单一角色。

更成熟的做法是:

  • 日常开发里,质量是全队责任
  • 高风险、安全关键、强监管场景里,保留足够的 testing independence

这不是二选一,而是协作分工问题。

最短记忆方式

测试既要左移,也要闭环;既要做执行,也要做治理。

参考资料

创建于 2026/4/23 更新于 2026/5/27