5.1 质量属性与质量模型 安检的第一步不是拦人,是定标准——不知道查什么,安检就只剩随机翻包。本节用国际通行的质量模型把"质量"这个词拆开,教你为一类系统挑出真正重要的属性,并把它们写成带数字的目标。这是全章的地基:评审的判据、度量的对象,全部从这里长出来。 把"质量不好"翻译成人话 "这系统质量不行"是一句无法行动的抱怨。质量模型的作用就是给它做切片:国际标准 ISO 25010 把软件产品质量拆成八个特性——功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性,每个特性下再分子特性。
安检的第一步不是拦人,是定标准——不知道查什么,安检就只剩随机翻包。本节用国际通行的质量模型把"质量"这个词拆开,教你为一类系统挑出真正重要的属性,并把它们写成带数字的目标。这是全章的地基:评审的判据、度量的对象,全部从这里长出来。
"这系统质量不行"是一句无法行动的抱怨。质量模型的作用就是给它做切片:国际标准 ISO 25010 把软件产品质量拆成八个特性——功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性,每个特性下再分子特性。挑最常打架的几个说明它们各在考什么:
| 属性 | 考什么 | 典型验收问句 |
|---|---|---|
| 功能性 | 该做的做了、不该做的没做 | 需求基线逐条对得上吗 |
| 性能效率 | 时间与资源够不够省 | 峰值并发下响应还达标吗 |
| 可靠性 | 出故障的频率与恢复速度 | 连续跑一个月不出致命错吗 |
| 信息安全性 | 数据防窃、防篡改、可审计 | 越权访问被拦住了吗 |
| 易用性 | 用户能不能顺利办成事 | 新司机无培训能完成查询吗 |
| 维护性 | 改起来快不快、稳不稳 | 加一条补贴规则要动几处 |
属性之间经常打架:安全加严,易用性受损(多一道验证);性能拉满,维护性遭殃(黑科技优化没人看得懂)。质量设计的本质是排序——不可能全都要,回答"哪个属性让位"比"哪个属性重要"更见功力。
排序不能拍脑袋,常用工具是"重要度—现状"二维图:重要度问业务(这个属性掉链子,业务疼不疼),现状问度量(现在做到什么程度)。两者一交叉,改进优先级自己浮出来:

这张图每半年重画一次。云梯的司机端易用性起初躺在机会区——直到司机离职率因为工具难用而抬头,它的重要度被调高,下一步就进了立刻投入区。属性的坐标是业务的函数,业务变了图必须重画。
选出了优先属性,还要写成可验收的目标。三个可套用的句式:
⚠️ 质量目标最常见的死法是"全员指标":每个属性都要最好,等于没有目标。一张质量目标清单超过五个条目,评审时就没有人真正记得住——克制是目标清单的美德。
属性取舍最好用真实冲突来教。云梯遇过一场典型的拉锯:性能诉求要求司机端查询接口缓存 aggressively(激进缓存),安全侧则指出缓存会放大越权风险——缓存的响应可能绕过每次请求的权限校验。两边的诉求都正当,硬选边必输一头。最终的结构化解法是把冲突拆解成技术题:接口鉴权提前到缓存之前(校验结果可缓存、数据响应按用户分片缓存),既保住了大部分性能收益,又不让缓存成为权限的旁路。这个案例的通用启示:属性冲突先别急着牺牲哪边,先把冲突翻译成技术结构题——很多"二选一"其实是"当前方案不够好",翻译到位后往往存在第三条路;翻译完仍要牺牲时,牺牲哪边也变成了有依据的决策而非嗓门比拼。
质量目标最终要与业务方对表确认,谈判技巧决定对表质量。有效的问法是把技术属性翻译成业务后果:"响应从两秒放宽到四秒,估计司机会有百分之几放弃自助查询转人工?"——业务方对百分比未必有精确答案,但这个问法能逼出"四秒会影响谁、影响多大"的实质讨论,比"性能目标能不能降一降"有效十倍。对表后形成的质量目标清单要随章程一起签认,成为验收的一部分——质量目标没有签认,就只是工程师的单方面许愿,验收时必起争端。
质量目标定下后,会自然传导成测试策略的重心分布——这也是属性排序最大的实用价值。以云梯为例:计费准确性排第一位,测试策略就向"账目守恒类断言"倾斜——分摊守恒、汇总核对、历史账单回放这三类用例优先建设;对账性能排第二,压测环境与大数据量样本就提前申请;易用性暂居机会区,就不在本期投入专门的可用性测试,只在班次评审时请真实用户摸一遍。反过来做一遍验证:如果一个属性号称最重要,测试策略里却找不到它的影子——没有对应的用例类型、没有验收动作、没有监控指标——那它就不是目标,是口号。传导是否落地,看的是预算与用例的去向,不是文档里的排序表。
质量属性清单不是立一次管终身的宪法。云梯的维护节奏是每半年一次"属性对表会":产品、架构、客服代表到场,带三份数据——最近半年的缺陷与投诉按属性归类、竞品在这几个属性上的公开表现、业务路线图上的新要求。对表会的典型产出包括:某个属性的象限迁移(易用性从机会区升级)、某条目标的量化修订(并发上限从峰值翻倍后的重新测算)、以及一两条被证明"从来没人检查过"的目标的删除。清单保持五六条的新鲜度,比攒成十几条的百科全书有用得多——安检标准常新,安检才有牙齿。
问:初创期什么都要求快,质量目标是不是可以不设? 可以少设,不能不设。哪怕清单上只有一条——"计费与钱的正确性永不妥协"——也是质量目标,它划出了快速试错的底。真正危险的不是目标少,而是没有底线目标导致团队在每次赶工时重新谈判一遍"这次能不能糊弄"。
问:质量属性目标是定给谁看的? 表面上给测试与验收看,实际最大的读者是设计者。每条质量目标都是一条结构约束——"五万行三十秒"逼着设计阶段就考虑分页与异步,而不是上线后再补救。目标定得早,是给设计者的设计输入;定得晚,就只剩给测试者的判卷功能了。
标准立好了,下一节看安检活动怎么把不合格品拦在离站之前。