
第 9 章 软件质量保证与过程改进学习目标区分 QA、QC、测试、审计各自的定位掌握软件质量模型的组成(功能、性能、可靠性、可用性、可维护性、可移植性)理解 ISO/IEC 25010 质量特性掌握 CMMI 的五个等级及含义了解六西格玛与 TQM 在软件中的应用建立度量驱动改进的循环掌握评审体系的设计要点9.0 质量问题的本质质量问题的表象在产品(缺陷、投诉),根因多在过程(过程有洞,产品缺陷只是结果流出)。这决定了质量工作的分层:产品层: 测试(抓流出) —— 第 6 章 过程层: QA(堵源头) —— 本章 组织层: 过程改进(让过程自进化) —— 本章只做产品层的工作 在河边捞鱼;过程层与组织层的工作 治理上游。三层都要做,但层级越高,杠杆越大。9.1 QA、QC、测试、审计概念对象时机典型活动测试(Testing)产品(代码/系统)开发中/发布前用例执行、缺陷报告QC(质量控制)产品 过程工件各阶段检查单、评审、门禁QA(质量保证)过程持续过程定义与遵循度审计、改进推动审计(Audit)过程与工件合规性定期/外部CMMI 评估、ISO 认证审核核心区别:测试找的是产品缺陷,QA 找的是过程缺陷(过程有洞,产品缺陷只是结果)。类比:测试是检测出坏水果,QA 是让果园不再长出坏水果。四者的产出对照角色典型产出消费者测试缺陷报告、测试报告、准出结论开发、PM、业务QC评审问题清单、门禁结论、检查单记录阶段责任方QA过程遵循度报告、改进建议、度量看板PM、管理层审计符合性结论、差距清单、整改跟踪管理层、外部方OOS 实例:QA 月度分析发现集成缺陷占比连续两月 25%“(产品层症状)→ 根因是接口契约无人评审”(过程层漏洞)→ 改进项契约变更强制评审 契约测试(第 12 章)。这条链路就是 QA 区别于测试的地方:从缺陷分布倒推过程漏洞。9.2 软件质量模型ISO/IEC 25010 产品质量特性(7 大特性)功能适合性:完整性、正确性、合适性;性能效率:时间特性、资源利用率;兼容性:共存性、互操作性;可用性(易用性):易学、易操作、防错;可靠性:成熟性、可用性(不中断)、容错、可恢复性;安全性:保密性、完整性、抗抵赖、可核查;可维护性:模块化、可复用、可分析、可修改、可测试;可移植性:适应性、可安装、可替换、共存。质量是多维的:一个系统可以功能全对但不可维护或不安全——质量 ≠ 无缺陷。质量特性 → 验收手段映射(对照 SRS 用):特性验收手段对应章节功能适合性功能用例 UAT第 3、6 章性能效率压测基准对比第 6 章可靠性故障注入、恢复演练第 6、11 章安全性渗透测试、扫描第 6 章可维护性覆盖率、复杂度、评审第 5 章可移植性兼容性矩阵第 6 章质量与过程的关系质量是**内建(built-in)的,不是检出来(inspected)**的;过程稳定 → 产品质量可预期;过程随机 → 质量靠运气;因此 QA 的杠杆在过程:规范的活动、明确的工件、强制的评审、可量化的度量。质量内建的落地机制(按阶段)阶段内建机制需求可验证性标准 评审(第 3 章)设计质量属性战术 ADR 评审(第 4 章)编码单测/TDD 评审 静态分析门禁(第 5 章)集成/系统契约测试 准出标准(第 6 章)发布检查单 金丝雀(第 7、11 章)运行监控 错误预算 事故复盘(第 11 章)检验方法:随机抽一个上线缺陷,问哪一层的内建机制本可以拦住它?——答案的分布就是过程漏洞地图。9.3 软件过程改进改进循环(Plan-Do-Check-Act)现状度量(基线) → 识别瓶颈 → 设定改进目标(可量化) → 试点 → 度量对比 → 推广/调整纪律:没有基线度量就不谈改进(感觉变好了不算);一次只改进 1–2 个过程,避免多线作战无法归因;改进要有 Owner 与退出标准(达到目标或明确失败)。改进项目书模板(一页):改进项: 集成契约测试前置 基线: 集成缺陷占比 25%(近两月) 目标: 两季度内 ≤18% 试点: 订单-支付接口(1 个团队) 动作: 契约变更强制评审 Pact 契约测试进 CI Owner: QA-李 期限: 2026-Q4 成功判据: 试点接口集成缺陷占比 ≤18% 退出条件: 两季度未达 → 复盘终止或调整CMMI(能力成熟度模型集成)CMMI 将组织过程成熟度分为 5 级:等级名称特征典型实践1初始(Initial)混乱、依赖个人英雄无稳定过程,成败靠人2已管理(Managed)项目级过程受控需求管理、项目计划、QA、CM3已定义(Defined)组织级标准过程,项目裁剪使用标准过程库、培训、同行评审4定量管理(Quantitatively Managed)过程与产品质量用统计方法量化控制SPC、过程性能基线5优化(Optimizing)持续优化,基于缺陷预防与技术创新CA 持续分析、根因改进要点:等级是能力描述,不是分数越高越好——等级 2 的纪律可能比名义 4 级但执行空心化更有价值;CMMI 的价值不在认证,而在过程资产的显式化与可传承;常见失败:为评估而评估,过程文档与实际执行两张皮。各级的可观察信号(不靠评估报告):1 级:换个人做同样项目,结果天差地别;2 级:每个项目有自己的计划与变更记录,但做法不一;3 级:组织有标准过程库,项目裁剪而非自创;4 级:过程指标有统计控制(如缺陷密度均值 ± 控制限),异常可预警;5 级:改进由数据与实验驱动,有为什么改的证据链。六西格玛(6σ)与 TQM六西格玛:以 DMAIC(定义-测量-分析-改进-控制)框架追求过程缺陷率极低(3.4 缺陷/百万机会);软件中多用于过程分析(缺陷根因、变更失败率),而非字面追求 6σ 缺陷率;TQM(全面质量管理):质量是全员、全过程、全组织的责任,持续改进 客户导向;共同内核:数据驱动、根因分析、持续循环。DMAIC 在软件中的对应:阶段软件实践Define选定改进项(一页改进书)Measure建基线(缺陷分布、变更失败率)Analyze根因分析(5 Why、鱼骨图、缺陷聚类)Improve试点 A/B 或前后对比Control控制图 门禁固化 定期复审9.4 软件度量体系度量三原则为决策而度量:每个指标绑定一个要回答的问题;相对趋势 绝对值:环比/同比比单点值有意义;不用于个人考核:防古德哈特定律(指标一旦成为目标,就不再是好指标)。常用度量分组维度指标回答的问题效率迭代速度、前置时间、构建时长我们在变快还是变慢?质量缺陷密度、逃逸率、Reopen 率、MTTR质量趋势如何?可靠性(线上)可用性、错误率、P99 延迟用户侧体验达标吗?过程评审缺陷发现率、需求变更率、CR 周期过程哪里漏水?成本实际/计划工时、返工比例我们在超支吗?反例:代码行数作为产出指标 → 催生冗长代码;Bug 数考核开发 → 催生互相甩锅与少报。度量体系设计步骤(可复用)列决策:列出团队每月要做的 5–8 个决策(是否发布、是否加人、改进哪);配指标:每个决策配 1–2 个能回答它的指标(指标总数控制在 ~15 个);定口径:统一定义与数据来源(谁算、怎么算、哪来);建看板:自动采集优先,手工填报的指标 ≤1/3;定节奏:月度回顾看趋势,异常触发专项;季度清理:连续两个季度无人引用的指标下线(指标通胀是度量体系第一杀手)。9.5 评审(Review)体系评审类型时机目的技术评审需求/设计/代码发现技术缺陷,知识共享同行评审(Peer Review)代码合入前质量 传承(代码审查)管理评审里程碑进度/成本/风险决策过程审计定期过程遵循度评审纪律:作者不主持;对事不对人,产出问题清单并闭环;规模控制:一次评审材料 ≤ 一人半天可消化;缺陷发现率是评审有效性的天然度量(长期为 0 说明评审走过场)。正式技术评审(FCR)流程(适用于需求/设计大工件)准备:评审目标 检查单 材料预发(提前 2 天);会前:各自预审并标注重疑点(会上不现场读材料);会中:主持人(非作者)引导,逐条过检查单,问题分级记录;会后:问题清单 48 小时内闭环计划;重大未决项升级;归档:评审记录(日期/参与人/问题/结论)进版本库,作为基线凭证。检查单复用:第 3 章需求评审检查单、第 4 章设计评审检查维度、第 5 章代码评审清单——评审体系 流程 检查单 记录纪律,三者缺一不可。9.6 OOS 的质量与改进实践质量内建:每迭代 DoD 含单测覆盖 ≥80%、无 S1/S2 开放、关键流程 E2E 通过;过程资产:标准过程库(需求模板、评审检查单、发布检查单),新项目裁剪使用;度量看板:速度、逃逸率、变更失败率、MTTR 四指标月度回顾;一次改进试点:发现集成阶段缺陷占比 45% → 试点契约测试 接口评审 → 两季度后集成缺陷占比降至 28%,推广全团队;审计:每年一次内部过程审计,对照标准过程库,输出差距与整改计划。OOS 度量看板示例(月度):指标上月本月趋势解读迭代完成率82%85%↑健康区间(70–90)逃逸率1.8%1.2%↓改进生效变更失败率6%4%↓接近 DORA 目标MTTR55min35min↓告警有效性提升9.7 质量工作的反模式反模式症状对策检出来幻想加测试人力替代过程纪律质量内建映射表(9.2)评估两张皮为 CMMI 补文档,执行照旧审计抽查执行痕迹而非文档指标通胀看板 40 个指标,无人看季度清理(9.4 步骤 6)度量考核指标 KPI 化三原则之第 3 条评审表演0 缺陷评审发现率为零触发重审改进疲劳同时启动 5 个改进项一次 1–2 个 退出标准9.8 本章 FAQQ1:小团队设专职 QA 吗?10 人不必专职,但 QA 职责(度量看板、评审组织、改进跟踪)必须有人轮值承担。QA 是职责不是岗位。Q2:不追求 CMMI 认证,这套东西还有用吗?有。把 CMMI 当过程资产清单用:对照 2–3 级实践逐项自查我有没有显式的过程资产,缺什么补什么,认证不做。Q3:缺陷密度高一定差吗?不一定。高缺陷密度可能是测试很有效(发现了该发现的)。要看:同密度下是否逐月下降、缺陷集中在哪个阶段(左移指标)、同类缺陷是否复发(回归能力)。Q4:如何启动第一次过程审计?范围限定(1 个项目、3 个过程:需求/评审/发布)→ 抽执行痕迹(记录/工件/访谈)→ 对照标准过程库列差距 → 输出 Top3 整改项(带 Owner 与期限)。避免全面审计——第一次审计全面 没有审计。Q5:过程和流程有什么区别?过程是完整定义(活动 角色 工件 验证 度量,第 2 章六问);流程常只是活动序列。有流程没过程的问题:无工件标准、无度量、无人对验证负责——出了偏差不知道断在哪一环。落地建议:把团队现存的每个流程用六问检查一遍,缺产出什么和怎么度量两问的,补上。Q6:如何让管理层支持质量投入?用钱说话:用质量成本四分类(附录 A)呈现——“上季度返工成本 X 人日 ≈ Y 万元,其中 60% 可由 2 人日的契约评审预防”。质量投入不是成本,是失败成本的对冲。呈现方式:成本结构转移曲线,而不是质量很重要的口号——前者是决策,后者是态度。Q7:质量门禁和拖慢速度如何区分?门禁增加的是过程时间,减少的是返工时间。判断式:门禁平均耗时 (拦截缺陷率 × 缺陷逃逸后的修复成本)。若某门禁连续三个季度从未拦下任何缺陷,它应被移除或改造——从不拦截的门禁是纯税收,团队的绕行冲动是理性的,堵不如疏(改门禁)。附录 A:质量成本(Cost of Quality)模型类别定义例子管理目标预防成本防止缺陷发生的投入培训、过程建设、评审、TDD、设计适当增加(ROI 最高)鉴定成本发现缺陷的投入测试执行、审计、扫描、UAT保持(不能为零)内部失败成本发布前发现缺陷的代价返工、回归、进度损失降低(反映过程漏洞)外部失败成本缺陷流到生产后的代价事故、赔偿、口碑、召回最小化(比内部贵一个量级以上)读法:典型的质量有问题的组织,成本结构是高鉴定 高失败 低预防。改进的目标是移动成本结构——把鉴定/失败侧的投入挪到预防侧。OOS契约测试前置改进(附录 B)正是:鉴定成本(集成阶段修缺陷)↓,预防成本(契约评审)↑,总成本↓。估算实践:项目启动时对四项分别估(预防/鉴定占总工时百分比,失败项按预期缺陷数 × 单缺陷成本),项目结束实际对比——偏差最大的项,就是明年改进的起点。附录 B:OOS 改进项目完整走查(“契约测试前置”)PDCA动作数据P(计划)基线:集成缺陷占比 45%(前两个月);目标 ≤18%;试点订单-支付接口改进项目书D(执行)① 契约变更强制评审 ② Pact 契约测试进 CI ③ 接口评审检查单6 周C(检查)试点接口集成缺陷占比:45% → 19%;测试总耗时 8%(可接受)双周跟踪A(处理)推广至全部 4 个接口对;固化进过程库;设控制限:占比连续两期 25% 自动预警Q4持续后续两季度:16%、14%;控制限预警 0 次看板走查三要点:① 目标用占比而非缺陷总数(总数可被压缩范围操纵,占比更诚实);② 试点范围只有一个接口对,归因可控;③ 推广后设控制限接管——改进结束,控制开始,这是 PDCA 与六西格玛 DMAIC 的衔接处,也是改进疲劳(9.7 反模式)的解药:每个改进项的终态都是被监控的常态,而不是又一个新的运动。9.9 小结质量三层:产品(测试)/过程(QA)/组织(改进),层级越高等杆越大;测试找产品缺陷,QA 找过程缺陷,审计查合规;质量是多维的(25010 七特性),质量内建于过程而非检出来;过程改进靠 PDCA:基线 → 瓶颈 → 量化目标 → 试点 → 推广;CMMI 五级描述过程能力,有可观察信号,价值在资产显式化而非认证;度量三原则:为决策、看趋势、不考核;度量体系六步设计 季度清理;评审 流程 检查单 记录纪律,发现率是有效性度量。思考题一个团队单测覆盖 90% 但线上缺陷很多,从 QA 视角应检查哪些过程环节?为什么代码行数和个人 Bug 数都不适合作为考核指标?各给出一个行为扭曲例子。CMMI 3 级与 4 级的本质区别是什么?为什么4 级必须建立在 3 级之上?设计 OOS 的集成缺陷占比改进项目:基线、目标、试点范围、成功判据、退出标准。按 9.4 六步法为你的团队设计度量体系:列出 5 个决策与对应指标,指出最可能通胀的一个。做一次缺陷-过程漏洞回溯:抽 3 个近期缺陷,各回答哪层内建机制本可拦住。你的团队上一次评审的发现率是多少?如果为零,设计一个让它非零且真实的机制(不鼓励凑数)。解释 DMAIC 五阶段与 PDCA 的对应关系,并说明为什么Control阶段最容易被省略。