第2章 需求条目的核心要素:用户角色、触发条件、行为步骤、期望结果、异常分支
一个可执行、可验证的需求条目,必须包含五个核心要素。缺少任意一个,都会导致开发与测试环节的歧义、返工或遗漏。
核心公式:
需求条目 = 用户角色 + 触发条件 + 行为步骤 + 期望结果 + 异常分支
2.1 五要素拆解说明
| 要素 | 定义 | 常见错误 | 验收价值 |
|---|---|---|---|
| 用户角色 | 执行操作或使用功能的具体人员/系统身份 | 写“用户”太宽泛,未区分管理员、编辑、游客 | 明确权限边界与功能归属 |
| 触发条件 | 启动该需求条目的前置状态或事件 | 遗漏前置条件,导致流程断裂 | 提供测试用例的入口条件 |
| 行为步骤 | 用户或系统为达成目标而执行的动作序列 | 步骤粒度忽大忽小,混入UI细节 | 指导开发实现和用例编写 |
| 期望结果 | 行为执行后系统应产生的可观察、可测量输出 | 写“正常显示”无量化标准 | 验收通过/不通过的唯一判据 |
| 异常分支 | 因输入无效、网络中断、权限不足等导致的非正常流程 | 只写主流程,异常完全空置 | 防止生产环境崩溃与数据错乱 |
2.2 五要素在PRD中的典型结构
标准化写法建议使用“四段式+异常块”格式,每一条目独立编号:
PRD-REQ-0201 | 用户登录失败锁定机制
─────────────────────────────────────
用户角色:已注册但连续输错密码的用户
触发条件:用户在登录页面点击“登录”按钮时密码错误次数 ≥ 3
行为步骤:
1. 系统校验密码错误次数
2. 若次数 ≥ 3,立即锁定账号状态
3. 记录当前锁定时间戳
4. 返回“账号已被临时锁定,请30分钟后再试”
期望结果:
- 账号状态变为“锁定”,锁定时间精确到秒
- 前端展示锁定时长倒计时
异常分支:
- 若用户请求发送验证码解锁,需校验手机号是否匹配(参见PRD-REQ-0202)
- 后端在锁定期间拒绝所有登录接口调用,返回错误码 423
技巧: 期望结果中避免“应该”“可能”等模糊词,使用“返回XXXX”“字段值为YYYY”“弹窗标题为ZZZZ”等可验证描述。
2.3 五要素与用户场景的对应关系
需求条目不是凭空编造,而是从用户场景中精准提取。下面用“供应链库存预警”场景展示映射方法:
- 场景描述:仓库管理员发现某物料库存低于安全水位,需要自动触发采购申请。
- 映射为五要素:
- 用户角色 → 仓库管理员(权限:查看库存、提交采购申请)
- 触发条件 → 系统每日定时扫描所有物料的库存量 < 安全库存阈值
- 行为步骤 → ① 扫描物料表 ② 对比库存与阈值 ③ 生成预警记录 ④ 自动创建采购申请草稿 ⑤ 通知管理员审核
- 期望结果 → 预警表中新增一条记录,采购申请草稿状态为“待审核”,通知发送至管理员消息中心
- 异常分支 → 物料已被停用则跳过;采购申请草稿因预算超限创建失败则记录错误日志并人工干预
常见陷阱: 异常分支不要只写“其他情况”。每个异常分支必须对应一个具体的可观察结果,例如“返回错误码E001”“弹窗提示‘库存数据异常’”“不发送通知但写入失败日志”。没有异常行为的需求条目,相当于没有兜底逻辑的死代码。
2.4 五要素协作关系图
下图展示了五个要素如何在业务流程中相互连接,从角色出发,通过触发条件激活行为步骤,最终走向期望结果或异常分支:
2.5 模板:五要素检查清单
每次编写需求条目时,逐一对照以下项目确保完整性:
- ✅ 用户角色:是否唯一且可识别?是否区分了普通用户/管理员/系统?
- ✅ 触发条件:是定时事件、用户操作还是系统回调?是否有精确的数值/状态表达式?
- ✅ 行为步骤:步骤是否按时间顺序编排?每步是否只描述一个动作?
- ✅ 期望结果:结果是否可观察(界面、数据、日志)?是否有可测量的指标?
- ✅ 异常分支:至少列出2个典型异常(输入非法、网络超时、权限不足、资源不存在)。
实践任务: 选择你负责的一个功能点,按本节五要素模板重写一条需求条目,然后与团队成员评审差异。你会发现“期望结果”和“异常分支”是争议最多的地方,也是质量提升最快的切入点。