把功能要求写成验收项,核心是让每条要求都包含三个可判断的部分:触发条件、预期结果、判定标准。例如“用户提交表单后,页面显示成功提示,且后台新增一条记录”,而不是“表单功能正常”。在已有页面或项目上改进时,先按现状逐条对照,再决定是补验收项、改验收项还是拆验收项。
功能要求回答“要做什么”,验收项回答“做到什么程度算完成”。两者混在一起,是后期扯皮的常见来源。可以用一个简单对照来判断:
如果一句话里只有动词和名词,没有输入、输出和边界,它大概率还停留在功能要求阶段。改造旧项目时,不必推翻原有需求文档,只需在每条要求后面补一列验收项。
推荐用固定字段来写,便于开发和测试双方对齐。字段不必多,但缺了关键项就会产生歧义:
这五项中,前置条件和例外情况最容易被省略,也最容易在验收时引发争议。已有项目改进时,可以优先给涉及金额、权限、数据删除的功能补齐这两项。
“界面友好”“加载较快”“操作流畅”无法验收,因为不同人判断不同。改写方法是把主观词换成可观察、可计数的结果:
这里的“约定”需要项目各方事先确认,不能由开发单方面决定。若暂时无法确定具体数值,可以先写判定方式,例如“由产品、开发和测试三方在测试环境共同确认”,但这类条目不宜过多。
面对已经上线的页面或进行中的项目,可以按以下顺序处理,代价从低到高:
如果项目时间紧,可以先只处理“必须修复”的差异,其余记录在案。判断依据是:该差异是否影响数据正确性、资金安全或用户无法完成核心流程。若不影响,可以降级处理。
假设要给“文章发布”功能补验收项,可以写成:
前置:编辑已登录且有发布权限。操作:填写标题和正文后点击发布。预期:文章状态变为已发布,列表页可见,详情页可访问。例外:标题为空时提示“标题不能为空”且不提交;无发布权限时按钮不可用或提示无权限。
验收时逐项核对:正常发布是否成功、空标题是否被拦截、无权限账号是否无法发布。三项都符合才算通过。若只验证了正常发布,边界和权限问题就会留到线上暴露。
验收项写到多细,取决于项目风险和协作方式。对外交付、涉及资金或多人协作的项目,建议写到操作步骤和预期结果;内部小工具、快速验证阶段,可以只写关键判定标准。判断标准是:如果换一个人来验收,能否仅凭文字得出相同结论。能,就说明粒度足够;不能,就需要补充条件或结果。
下一步,挑出当前项目中最容易出问题的一个功能,按前置条件、操作步骤、预期结果、判定标准、例外情况五项写一条验收项,再让另一位参与者独立判断是否通过,以此检验写法是否清楚。