把功能要求写成验收项,核心做法是先把“做完之后用户能做什么、系统给出什么结果”写成可观察的交付结果,再倒推需要哪些资料、谁负责、在什么条件下算通过。验收项不是把需求原句抄一遍,而是把模糊描述转成可执行、可检查、可判定通过或失败的条目。
网站开发岗位常见的需求写法是“支持用户上传头像”。这句话无法直接验收,因为它没有说明格式、大小、失败提示和存储结果。改成验收项时,应先写结果:用户选择一张符合格式要求的图片后,页面显示上传成功,并在个人资料页展示新头像;选择不符合要求的文件时,页面给出明确错误提示且不保存文件。
交付结果要能被外部观察。内部实现方式、代码结构、用了哪个库,通常不作为验收项的主句;它们可以作为约束条件写在补充说明里。判断标准是:测试人员不读源码,只操作页面或调用接口,能不能得出通过或失败的结论。
一个完整验收项至少需要四类信息,缺哪类就补哪类:
倒推的顺序是:先确定最终用户看到的结果,再确定为了产生这个结果需要哪些输入,最后确定这些输入由谁在什么时间提供。
“快速”“友好”“兼容”“合理”这类词不能直接进入验收项。替换方法不是追求绝对精确,而是给出可判定的边界。例如:
如果某个边界暂时无法确定,就把它写成待确认项,并指定确认人和截止时间。不要把待确认项伪装成已确定的验收标准。
假设功能要求是“后台可以导出订单”。按交付结果倒推,可以写成这样一条验收项:
前置:管理员已登录且订单列表中存在至少一条记录。操作:进入订单列表,点击导出,选择当前筛选结果。预期:生成一份包含当前筛选字段的文件,字段顺序与列表一致,记录数与列表显示一致;无数据时给出明确提示且不生成空文件。资料:字段清单由产品提供,样例数据由测试准备。责任:开发自测后交给测试,产品确认字段。
这条验收项可以直接执行,也能在失败时定位是筛选逻辑、字段映射还是空数据处理出了问题。适用条件是功能边界相对清晰;如果导出涉及权限分级或大数据量分页,还需要拆成多条验收项,分别覆盖权限、分页和超时情况。
写完一组验收项后,逐条检查:是否只描述外部可观察结果;是否有明确前置条件;是否能被不同的人重复执行;失败时是否能判断失败原因;资料和责任是否落到具体角色。检查结果如果是“无法执行”或“结果不可观察”,就退回重写,而不是留到开发完成后再补。
下一步,选当前迭代中争议最大的一条功能要求,按“前置条件—操作步骤—预期结果—所需资料—确认责任”五栏写成一条验收项,交给开发和测试各读一遍。如果两人对通过条件的理解不一致,说明这条验收项还需要继续拆分或补充边界。