把功能要求写成验收项,核心是让每条要求都能被第三方按固定步骤复现并得出通过或不通过。做法是:把“要有什么功能”改写成“在什么条件下执行什么操作,系统返回什么可观察结果”。例如“支持手机号登录”不是验收项;“输入11位有效手机号并获取验证码,60秒内可再次获取按钮保持禁用,验证码正确时进入已登录状态”才是可核对的验收项。
在网站制作流程中,需求文档常写成“后台可管理文章”“用户可收藏”。这类句子描述的是能力方向,无法直接判定完成与否。准备阶段要做的是把每条功能拆成四个要素:前置条件、操作动作、预期结果、判定方式。
以“文章可设置定时发布”为例,可以拆成:前置条件为已创建一篇草稿且发布时间设为未来;操作为保存并等待到设定时间;预期结果为前台可访问该文章,后台状态由“定时”变为“已发布”;判定方式为查看后台列表与前台页面。这样拆完后,验收项就不再依赖“感觉做完了”。
推荐使用统一句式,便于开发和测试对齐:当[前置条件]时,执行[操作],应[结果],通过[证据]确认。这条句式的关键是“应”后面必须写可观察结果,不能写“正常”“友好”“快速”这类主观词。
把模糊要求改成验收项的对照例子:
如果一条要求包含多个动作,应拆成多条验收项。例如“注册后可登录、可改密码、可退出”至少拆成三条,否则部分通过时无法判断整体是否合格。涉及时间的验收项要写明判断窗口,例如“验证码60秒后可再次获取”,而不是“稍后可再次获取”。
验证不是把网站点一遍,而是逐条对照验收项执行。每条记录至少包含:验收项编号、执行环境、操作步骤、实际结果、通过或不通过、证据位置。证据可以是截图、接口返回文本、数据库查询结果或服务器日志片段。
出现不通过时,先区分“可能原因”和“已经定位的原因”。例如提交表单后页面空白,可能原因包括前端脚本报错、接口返回异常、服务器错误;只有在查看浏览器控制台或接口返回后,才能说“已经定位为接口返回500”。不要在没有证据时直接断言是某一方的问题。
对于无法稳定复现的问题,记录发生时间、账号、操作路径和当时的网络环境,并标注“待复现”。这类条目不应直接判为通过,也不应直接判为不通过,而应进入缺陷跟踪,补充证据后再判定。
网站上线后功能会调整,验收项也要同步维护,否则会出现“功能已改、验收项还写旧行为”的情况。每次需求变更时,检查三件事:受影响的验收项编号、需要新增的验收项、需要废弃的验收项。废弃不要直接删除,标记为“已失效”并注明替代项,便于回溯。
维护时还要区分一次性验收和回归验收。一次性验收针对新功能首次交付;回归验收针对已通过的功能在后续改动后重新确认。例如修改了登录逻辑,就要把“手机号登录”“密码登录”“退出登录”等相关验收项重新执行一遍,而不是只测新改的那一处。
下一步可以直接做一件事:从现有需求文档中挑出三条最模糊的功能描述,按“当……执行……应……通过……确认”的句式改写成验收项,然后交给另一个人按字面执行。如果对方能不加询问地得出通过或不通过,说明写法已经可用;如果对方需要反复追问,就继续补充前置条件、操作步骤或判定证据。