本章导读:验收标准是需求可测试化的“翻译层”,贯穿用户故事拆分、测试设计、QA验证全流程。本章从定义出发,厘清其与需求的本质差异,给出质量属性分类框架,并建立可测试性评判准则。
产品验收标准与QA协同质量门禁 - 第1节
1.1 适用场景
验收标准并非对所有需求场景同等适用。以下场景必须显式定义验收标准:
- 用户故事(User Story):在Sprint计划中,每个故事必须附带验收标准才能进入开发。
- 功能需求:新增/变更的功能点,需通过验收标准明确“做完”的定义。
- 非功能需求:性能、安全、可用性等维度,必须用可量化的验收标准约束。
- 缺陷修复:修复验证的标准需要与原始需求验收标准对齐。
- 第三方集成:接口对接、数据同步等边界场景,验收标准是联调通过的依据。
1.2 前置条件
制定验收标准前,团队需具备以下条件:
- 需求已通过需求评审,核心业务逻辑无二义性。
- 产品负责人(PO)与开发、QA三方已对齐需求上下文。
- 团队已确定本次迭代的DoD(完成的定义)基线。
- 具备可用的测试环境或测试桩说明。
1.3 验收标准核心定义
验收标准是一组可执行的断言集合,用于判断一个需求是否满足预期。它不是需求的复述,而是需求的可测试化映射。
| 对比维度 | 需求 | 验收标准 |
|---|---|---|
| 语言风格 | 自然语言、业务描述 | 结构化、条件化、可验证 |
| 粒度 | 宏观功能或用户目标 | 原子级场景/规则 |
| 立场 | 用户/业务视角 | QA/测试验证视角 |
| 可测性 | 可能模糊、抽象 | 必须可验证通过/失败 |
| 变更频率 | 随产品规划调整 | 需求确认后锁定,变更走评审 |
经验卡:验收标准写得好不好,用一个问题检验——“QA是否能在不看需求文档的情况下,仅凭验收标准设计出完整的测试用例?” 如果可以,说明标准已经到位。
1.4 质量属性分类框架
验收标准需要覆盖以下七个质量属性维度。每个维度对应不同的验证方法:
- 功能正确性:输入→输出逻辑正确,包括边界值、异常流。
- 性能:响应时间、吞吐量、并发数等量化指标。
- 安全性:权限校验、数据加密、防注入等。
- 可用性:UI交互符合预期,错误提示清晰。
- 兼容性:浏览器/设备/系统版本覆盖。
- 可维护性:日志输出、错误码规范、配置分离。
- 可靠性:异常恢复、数据一致性、无崩溃。
常见反模式:验收标准只写“功能正确性”,忽略“性能”和“安全性”,导致上线后出现慢查或数据泄漏。分类框架是检查清单,缺一不可。
1.5 操作步骤:制定验收标准的标准流程
- 步骤一:解析需求——从需求中提取触发条件、执行动作、期望结果。
- 步骤二:按质量属性分类——将提取的要素归入1.4节中的七个维度。
- 步骤三:为每个属性编写断言——使用“如果…那么…”句式,确保无歧义。
- 步骤四:边界与异常补充——至少写出3个正常流 + 2个异常流验收标准。
- 步骤五:三方评审(PO+Dev+QA)——确保PO认可业务、Dev认可可实现、QA认可可测试。
1.6 输入输出物
| 类型 | 物项 | 说明 |
|---|---|---|
| 输入 | 需求文档 / 用户故事卡 | 包含功能描述、UI原型、业务规则 |
| 输出 | 验收标准清单(.md / 任务关联字段) | 结构化列表,每条标注所属质量属性 |
| 输出 | 验收标准评审记录 | 三方确认签字,作为需求冻结依据 |
1.7 责任边界
- 产品负责人(PO):负责验收标准的业务正确性和完整性。
- 开发工程师(Dev):负责判断验收标准技术可行,并据此编写代码。
- 测试工程师(QA):负责验收标准的可测试性审核,并将标准转化为测试用例。
- Scrum Master:监督验收标准是否在Sprint计划阶段完成,避免事后补充。
1.8 记录材料
以下为验收标准记录的示范模板,建议存储在文档库或任务管理工具中:
# 验收标准清单 - [需求ID/故事名称]
## 功能正确性
- AC01:输入合法A值,系统应返回正确计算结果。
- AC02:输入非法字符,系统应提示“格式错误”并阻止提交。
## 性能
- AC03:在100ms内完成单次请求响应(95分位)。
## 安全性
- AC04:未登录用户无法访问API接口,返回401。
## 兼容性
- AC05:在Chrome 110+、Edge 110+、Safari 16+中UI渲染一致。
1.9 异常处理
| 异常场景 | 处理策略 |
|---|---|
| 需求变更导致验收标准过时 | 触发变更评审,更新验收标准并重新三方确认 |
| 验收标准存在二义性 | PO立即澄清,修改为“如果…那么…”的确定句式 |
| QA无法根据验收标准设计用例 | 标记为“不可测试”,退回给PO/Dev补充环境依赖或数据说明 |
| 开发实现与验收标准矛盾 | 识别矛盾点,逐条对齐;不能解决的升级至架构师决策 |
1.10 可测试性原则
任何一条验收标准必须通过“SMART”检验:
- S(Specific):具体,不笼统。 ❌“系统响应快” → ✅“95%请求在200ms内完成”。
- M(Measurable):可度量。 ❌“体验好” → ✅“首次内容绘制时间小于1.5s”。
- A(Achievable):可达成。 ❌“100%无故障运行10年” → ✅“无故障运行48小时”。
- R(Relevant):与需求相关。 ❌“数据库使用MySQL 8.0” → ✅(只在架构决策中出现,不在验收标准中重复)。
- T(Testable):可验证。 ❌“系统应当安全” → ✅“未授权用户访问控制台,应在3秒内被拒绝并记录日志”。
校验工具:将每条验收标准代入“如果…那么…”模板。如果“那么”部分无法写成一个明确的pass/fail判断,则这条标准不满足可测试性,需要重写。
1.11 本章验收标准检查清单
本章内容本身也需满足验收标准。以下是自检得分卡:
| 检查项 | 标准 | 通过条件 |
|---|---|---|
| 概念定义 | 验收标准与需求的差异已明确 | 读者能说出≥3个差异点 |
| 质量属性 | 七大分类无遗漏 | 可闭眼列举全部分类 |
| 可测试性 | SMART原则可解释 | 每条标准能代入“如果…那么…”检验 |
| 流程步骤 | 五步法清晰可执行 | QA可直接按步骤产出验收标准 |