把功能要求写成验收项,核心不是把需求描述得更详细,而是把每条要求改写成“给定什么条件、执行什么操作、观察到什么结果”的可判定句式。功能要求回答“要做什么”,验收项回答“做到什么程度算通过”。如果一条要求无法让开发、测试和业务三方得出同一个通过或失败的结论,它就还不算验收项。
很多企业建站项目在需求阶段会把功能拆得很细,例如“新闻模块支持分类、标签、置顶、推荐、搜索”。这看起来已经很具体,但它仍然只是功能清单。问题在于,它没有说明分类为空时列表如何显示、标签最多可选几个、置顶与推荐同时设置时谁优先、搜索无结果时返回什么。开发按自己的理解实现,测试按自己的理解验收,争议就出现在这些空白处。
另一个常见误解是把验收项写成技术实现方式,例如“用缓存提升列表加载速度”。这既限制了实现方案,又无法判定是否达标。验收项应该描述可观察的结果,而不是规定内部怎么做。
一条可执行的验收项,通常包含以下要素:
以“新闻列表支持分页”为例,可以改写成:在前置条件为已发布 25 条新闻、每页显示 10 条的情况下,打开新闻列表页,第一页显示 10 条且出现下一页入口;点击下一页,显示第 11 至 20 条;翻到第三页,显示 5 条且下一页入口不可点击。这样任何一个人都能照着操作并得出相同结论。
如果手上已经有一份功能要求清单,可以按下面步骤逐条处理:
例如“表单支持提交”可以拆成:填写全部必填项后提交,页面提示提交成功且后台出现一条记录;漏填必填项提交,对应字段旁出现提示且不产生记录;连续点击提交两次,只产生一条记录。三条验收项分别覆盖正常、异常和边界情况。
验收项不是越细越好。判断标准是:再往下拆,是否还能产生新的通过或失败结论。如果继续拆只是在描述同一个结果的实现细节,就应该停止。反过来,如果一条验收项里出现“等”“相关”“合理”“尽快”这类无法判定的词,就说明还需要继续拆。
适用条件也要写清楚。同一个功能在不同角色、不同数据量、不同设备下可能表现不同。例如后台管理员能看到全部新闻,普通编辑只能看到自己发布的新闻。这类差异如果不写进前置条件,验收时就会各说各话。对于企业建站中常见的响应式页面,还需要注明验收时使用的浏览器和窗口宽度范围,否则“显示正常”无法判定。
需要提醒的是,验收项通过不等于功能一定符合业务目标。它只保证双方对“做完了没有”有一致判断。业务目标是否达成,需要另外设定可观察的指标,并且这些指标不应写成对排名、收录或收益的保证。
从当前需求文档里挑出过去最容易扯皮的那条功能,按“前置条件—操作—预期结果—判定标准”改写成一条验收项,再让开发和业务分别读一遍,看他们是否得出同一个通过结论。如果两人判断不一致,说明这条验收项还有歧义,继续补充边界条件即可。用这一条作为模板,再批量处理其余功能要求。