把功能要求写成验收项,核心是让每条要求都能被第三方复现并得出“通过/不通过”的结论。做法是:先写清用户能完成什么操作,再写清操作后的可观察结果,最后写明验证所需的前置条件。做不到这三点的句子,只能算需求描述,不能算验收项。
小企业网站建设常见的写法是“联系表单要能正常提交”。这句话无法验收,因为“正常”没有标准。验收项要拆成可观察结果,例如:
判断标准很简单:把这句话交给一个没参与开发的人,他能否只靠文字判断通过还是失败。能,就是验收项;不能,就继续拆。
适用前提是功能边界已经确定,不再讨论“要不要做”,只讨论“做成什么样算完成”。四个要素如下:
如果一条验收项需要多个结果同时成立,就拆成多条。一条验收项只对应一个可判定的结论,验收时不会因为部分通过、部分失败而扯皮。
不要写“表单要有验证”,改写为:手机号输入 10 位数字时提交,页面提示位数不符且不发送数据。适用条件是手机号作为必填项;如果手机号允许留空,这条验收项就要改成“留空时允许提交,填写时按位数校验”。条件变了,验收项也要跟着变。
不要写“列表要支持搜索”,改写为:在搜索框输入一个已存在记录的关键词,点击搜索后,结果条数大于等于 1,且每条结果的标题或摘要包含该关键词。再补一条反向验收:输入一个不存在的关键词,结果显示为空并给出无结果提示。正向和反向各一条,才能覆盖真实使用情况。
不要写“不同角色看到不同内容”,改写为:用普通编辑账号登录,后台导航中不出现“用户管理”入口;直接访问该入口对应的地址时,页面返回无权限提示而不是内容页。这里要区分“入口不显示”和“地址不可访问”,前者是界面表现,后者是权限控制,两者都要验收。
同一句验收项在不同环境下可能得出不同结果。执行验收前先记录:浏览器及版本、是否登录、账号角色、测试数据内容、数据是否可重复使用。涉及金额、日期、库存这类会变化的数据,要写明验收时使用的具体数值,例如“假设商品单价为 100 元、数量为 2”,并标明这是假设值,不是真实报价。
如果验收不通过,先记录现象再判断原因。例如“提交后页面空白”,可能原因包括前端未拦截错误、接口返回异常、网络中断,不能直接断定是某一处的问题。把现象、操作步骤、实际结果、预期结果四项写在一起,开发方才容易定位。
每条验收项对应一个状态:通过、不通过、未执行。不通过时附上复现步骤和截图或文字记录。未执行的条目要写明原因,例如依赖的功能尚未完成。全部条目执行完后,把不通过的条目按影响范围排序:影响访客完成主要操作的和只影响显示文案的,处理优先级不同。
这套写法适用于功能范围已经谈定、准备进入开发或交付阶段的小企业网站项目。如果需求本身还在反复变动,先把范围定下来,再逐条写验收项,否则写完就要改。
下一步:从现有需求文档里挑出一条最模糊的要求,按“前置条件—操作动作—预期结果—判定方式”改写成一条验收项,然后拿给不熟悉该项目的人读一遍,看他能否独立判断通过与否。