把功能要求写成验收项,核心是让每条要求都具备可观察的结果、可复现的操作路径和明确的通过标准。也就是说,不写“支持用户登录”,而写“用户输入已注册邮箱和正确密码后,点击登录,页面跳转到个人中心;输入错误密码时,页面停留在登录页并显示错误提示”。前者是愿望,后者才是验收项。
网站设计方案里的功能要求通常来自业务方、产品经理或客户,写法偏概括,例如“会员可以收藏文章”“后台可以导出订单”“首页要能轮播”。这些句子描述的是系统应该具备什么能力,但还没有回答“做到什么程度算完成”。
验收项则是从功能要求中拆出来的检查条件。它至少要包含四个要素:角色、操作、预期结果、判断边界。缺少任何一项,开发和测试就容易各按各的理解推进,最后在验收会上争论“这算不算实现了”。
一个简单判断方法:把要求读给没参与需求讨论的人听,如果对方能按这句话独立操作并判断通过与否,它就更接近验收项;如果对方还要追问“点哪里”“看到什么算对”“异常情况怎么办”,说明它还停留在功能要求阶段。
以“会员可以收藏文章”为例,可以按下面的方式拆解。这里只演示写法,不代表任何具体项目的真实需求。
这五条里,每条都有操作和可观察结果。第4条涉及数据同步,第5条涉及异常边界。它们不是“多写几条显得详细”,而是把原来一句话里隐藏的判断条件摊开。代价是需求文档会变长,评审时间会增加;收益是开发、测试和验收三方对“完成”的理解趋于一致。
不是所有内容都值得拆到同等细度。可以按风险和不确定性来分配精力:
如果时间有限,先把高风险功能写成验收项,低风险功能保留为普通功能要求,并在设计方案中注明后续补充。这样比平均用力更实际。
第一,把技术实现当成验收标准。“使用某框架的某组件实现轮播”是方案选择,不是验收项。验收项应该写“轮播图在桌面端和手机端均可手动切换,切换后图片与对应链接匹配”。技术选型可以另列,不要混在一起。
第二,只写正常路径。只写“输入正确密码可以登录”,没有写密码错误、账号不存在、连续失败、验证码过期等情况。验收时一旦遇到异常路径,就没有判断依据。建议每条核心功能至少配一条异常或边界验收项。
第三,验收项没有负责人和确认方式。写完验收项后,要明确由谁在什么环境里、用什么数据检查。是开发自测、测试执行,还是业务方在预发布环境点一遍?确认方式不同,验收项的写法也要调整。业务方参与的验收项,尽量少用技术术语,多用页面上的可见结果来描述。
如果这是第一次接触这个问题,可以按下面四步开始:
下一步,从你手上现有的功能要求里挑一条涉及权限或金额的,按上面的格式改写一次,再拿给开发和测试各看一遍,收集他们追问的问题。那些被追问的地方,就是原要求里还没写清楚、需要补成验收项的部分。