软件测试过程与治理
把 SDLC 中测试的放置位置、静态与动态测试、测试过程、缺陷管理、度量与 whole-team approach 串起来理解。
#type / synthesis
#status / growing
#tech / dev / test
[!info] related notes
- 所属 MOC: Testing MOC
- 相关概念: 软件测试基础, 测试设计技术, 发布与运行期验证
- 相关实践: Monorepo 测试架构, 项目里 CI/CD 怎么做,怎么规划部署
软件测试过程与治理
范围
这篇笔记关心的是:测试如何嵌进 SDLC,以及测试活动本身如何被计划、执行、度量和治理。
为什么要把这些内容放在一起理解
很多团队一谈测试就只剩“写用例”和“跑脚本”,结果容易遗漏两件事:
- 测试在项目生命周期里应该何时开始、何时结束
- 测试过程本身也需要工程化治理
如果没有这两层,测试往往会变成补洞式劳动,而不是系统化反馈系统。
测试在 SDLC 里放在哪里
成熟工程里,测试从需求和设计阶段就开始,而不是代码写完才启动。
需求与设计阶段
这一阶段更适合做:
- review
- walkthrough
- technical review
- inspection
- acceptance criteria 澄清
- product risk 识别
这类活动属于静态测试,因为它们不需要执行系统。
编码与开发阶段
这一阶段会引入:
- TDD / ATDD / BDD
- 组件测试
- 静态分析
- CI 快速反馈
这里的关键是左移,但左移不是“后面的测试都不要了”,而是更早开始。
集成、系统与验收阶段
这时要继续补:
- 组件集成
- 系统测试
- 系统集成测试
- 验收测试
- 非功能测试
也就是说,shift-left 的前提是“更早开始”,不是“后面可以省掉”。
发布与运行阶段
测试并不会在发布那一刻结束。运行期的:
- outage
- incident
- user feedback
- 线上缺陷
都应该继续回流成新的回归测试、风险项和改进行动。
测试的四个常见维度
按时机
- 静态测试:不执行软件,关注 review 和 analysis
- 动态测试:执行软件,观察真实行为
按层次
- 组件
- 组件集成
- 系统
- 系统集成
- 验收
按目标
- 功能测试:系统做什么
- 非功能测试:系统做得怎么样
按变更目的
- 确认测试:确认 bug 真的修好了
- 回归测试:确认改动没把别的地方带坏
- 维护测试:覆盖增强、热修、迁移、环境升级等变化
测试过程本身怎么拆
一个更完整的测试过程通常包括:
- 计划
- 监控与控制
- 分析
- 设计
- 实现
- 执行
- 完成
它们看起来像线性流程,但在真实项目里往往是并行和迭代进行的。
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
这不是二选一,而是协作分工问题。
最短记忆方式
测试既要左移,也要闭环;既要做执行,也要做治理。