把功能要求写成验收项,核心做法是:每一条要求都写成“前置条件 + 操作动作 + 可观察结果 + 判定标准”四段式,并明确它属于必须通过还是可以协商。在网站建设中,这意味着把“支持会员登录”这类描述,改写成“未登录用户点击登录,输入正确账号密码后,页面跳转到个人中心且顶部显示用户名”。只有能被人按步骤复现、结果只有通过或不通过两种状态的条目,才算合格的验收项。
拿到功能清单后,不要直接逐条改写,先做一次拆分。判断粒度是否够细,可以用一个简单检查:这条要求能否由两个不同的人分别操作,得到完全一致的结论。如果答案是否定的,说明还需要拆。
拆分时同步记录两类信息:一是依赖条件,比如需要测试账号、需要预置数据;二是边界情况,比如空列表、超长文本、重复提交。边界情况往往是最容易在验收时产生争议的地方,提前写进条目比事后争论更省成本。
具体改写时,推荐固定句式:当(前置条件)时,执行(操作),系统应(可观察结果),判定为通过;否则不通过。下面用同一功能演示两种处理方案的差别。
假设需求是“用户可以找回密码”。
方案A:描述式验收项。“系统应支持密码找回功能,保证用户能正常重置密码。”这种写法读起来完整,但无法执行:找不回时,是功能没做,还是邮件没发出去,还是链接过期,无法判断。
方案B:条件式验收项。“当用户使用已注册邮箱提交找回申请时,系统应在页面给出已发送提示;使用该邮件中的链接,在有效期内可以设置新密码;新密码设置成功后,旧密码不再能登录。”这种写法每一步都有可观察结果,通过与否可以直接判定。
两种方案的适用条件不同。方案A适合早期意向沟通、需求方向尚未确定时使用,作用是快速对齐范围。方案B适合进入开发与验收阶段使用,作用是作为付款、上线和争议处理的依据。判断标准很简单:如果这条内容会被用来决定“做完了没有”,就必须用方案B。
实施时最关键的一步,是为每条验收项补上判定标准。没有标准的条目等于没有验收项。例如“页面显示正常”不是标准,“在约定浏览器中,主要按钮可见且可点击,文字不重叠”才是标准。涉及时间的条目要写清测量方式,涉及数量的条目要写清统计口径。
验证不是重新读一遍需求文档,而是按条目逐项操作。建议每条验收项对应一行记录,包含四项内容:条目编号、实际结果、是否通过、备注。实际结果只写观察到的事实,不写推测。
遇到不通过时,区分三种情况分别处理:
第三种情况最容易被忽略。如果验证过程中频繁出现“这个算不算通过”的讨论,说明准备阶段的拆分没有做到位,应回到条目本身修改,而不是在现场临时达成口头共识。
网站上线后功能仍会调整,验收项如果不同步更新,就会逐渐失去作用。维护时把握两个动作:新增功能时补写对应条目;修改功能时先改条目再改实现,避免出现“代码已经变了、文档还是旧的”这种状态。
另外,把验收项按模块归类存放,并标注最后确认时间。当出现争议时,以双方确认过的版本为准,而不是以聊天记录中的某句话为准。对于已经废弃的功能,保留条目但标记为停用,不要直接删除,这样后续追溯时仍有依据。
下一步可以做的,是从现有功能清单中挑出三条最模糊的要求,按四段式改写成验收项,然后请一位不参与开发的人按条目操作一遍。如果他能独立判断通过或不通过,说明写法已经可用;如果还需要你口头补充,就继续拆。