把功能要求写成验收项,核心是让每条要求都能被独立触发、观察并判定通过或失败。做法是把“要有什么功能”改写成“在什么条件下执行什么操作,系统出现什么可观察结果”。如果一条要求只能靠“感觉没问题”来判断,它就还不是验收项,只是愿望。
功能描述回答“这个网站要做什么”,验收项回答“做到什么程度算做完”。例如“用户能提交留言”是功能描述;“用户在留言框输入50字并点击提交后,页面显示提交成功提示,后台留言列表新增一条内容一致的记录”才是验收项。前者无法判定完成,后者有输入、动作和两个可检查的输出。
写验收项时,每条只覆盖一个可独立验证的行为。把“注册、登录、找回密码都要正常”合成一条,测试时任何一项失败都会让整条结论含糊,也难以定位原因。
推荐按“前提—操作—预期—判定”四段组织。前提写清初始状态,操作写清具体动作,预期写清可观察结果,判定写清通过条件。下面是一个假设示例,用于说明格式,不代表任何真实项目:
四段式的价值在于把“可能原因”和“已经定位的原因”分开。测试失败时,先确认是操作没触发、预期写得不清楚,还是后台确实没写入,再决定改代码还是改验收项。
只写正常流程的验收项,上线后容易在边界处出问题。每个关键功能至少补三类条目:
边界值要写具体数字,例如“标题输入80字”和“标题输入81字”分别作为两条,而不是写“超长时给出提示”。数字来自实际字段限制,若限制尚未确定,先把验收项标为待定,不要凭感觉填。
验收项写完后,用三个检查项自查:
如果某条要求依赖第三方服务或外部接口,验收项里要写明观察点,例如“提交后页面显示排队中,后台任务状态由等待变为完成”。外部服务不可控时,把验收范围限定在自己系统能观察到的状态变化,不把对方是否及时响应写成通过条件。
拿你当前网站建设介绍里最模糊的一条功能要求,按“前提—操作—预期—判定”写成一条验收项,再补一条边界输入和一条失败路径。写完让另一位同事按步骤执行一次,如果两人对通过与否的判断不一致,就回到预期和判定两段继续改,直到结论唯一。