把功能要求写成验收项,核心是让每条要求都能被第三方独立判断为“通过”或“不通过”。做法是:把“我要一个能提交留言的表单”改写成“访客填写姓名、手机号并点击提交后,后台在10秒内出现该条记录,且手机号格式错误时页面给出文字提示”。前者是愿望,后者是验收项。下面从一个假设的淮北建网站项目展开,说明具体步骤和常见错误。
假设你正在建一个淮北本地服务类网站,已有首页、服务介绍页,现在要加一个“预约咨询”表单。需求方口头说的是:“表单要好用,提交后我能收到。”这句话无法验收。把它拆成验收项,至少要覆盖四个维度:字段、交互、数据落点、异常处理。
这四条都可以由另一个人打开页面、填写、点击、查看后台来验证。验收项写到这个程度,才具备可执行性。
第一步,找出每条要求里的动作和结果。动作是“用户做什么”,结果是“系统或后台出现什么”。例如“提交后我能收到”中,动作是提交,结果是收到。但“收到”太模糊,要追问:收到什么形式、在哪里收到、多久内收到。若约定为后台列表出现记录,就写成可查看的结果;若约定为邮件通知,则要写明收件地址和检查位置。
第二步,给每条验收项补上判断条件。判断条件包括输入、操作和预期输出。以手机号为例:输入“123”,点击提交,预期是页面不刷新且出现错误提示;输入“13800000000”,点击提交,预期是后台新增记录。两种输入对应两种结果,缺一不可。
第三步,区分必须项和可选项。必须项不通过就不能上线,可选项可以后续迭代。例如“表单支持中英文切换”在淮北本地服务场景中通常不是必须项,而“手机号错误时有提示”是必须项。把两者混在一起,会导致验收时争论不休。
第四步,写成固定句式并编号。推荐句式:在[某页面],当[某操作]时,[某对象]应[某结果]。例如:在预约咨询页,当访客未填写姓名就点击提交时,页面应停留在当前页并在姓名字段下方显示“请填写姓名”。编号后便于逐条核对,也便于在原有项目上做改进时对照旧版本。
错误一:只写“表单要有验证”。验证什么、什么时候验证、提示在哪里,都没有说。正确写法要落到具体字段和具体提示位置。
错误二:用“友好”“美观”“快速”作为验收标准。这类词没有判断边界。若确实关心速度,可以写成“在常用宽带环境下,提交后后台列表刷新并出现记录,操作过程中页面不出现超过3秒的无响应状态”。这里说的是可观察现象,不是性能评分。
错误三:把技术实现写进验收项。例如“用AJAX提交”是实现方式,不是验收结果。验收项应写“提交后页面不整体刷新,且后台出现记录”。实现方式可以换,验收结果不变。
错误四:遗漏反向情况。只写“填写正确时能提交”,不写“填写错误时不能提交”。反向情况往往是上线后最容易出问题的地方。
如果网站已经存在,只是要改留言功能,先做一次现状核对,再写验收项。核对清单可以这样列:
这样做的好处是,验收项不会把旧功能重新描述一遍,改进范围清晰。假设现状是“提交后跳转到感谢页,后台无记录”,目标改为“提交后不跳转,后台出现记录”,那么验收项就应围绕跳转行为和后台记录来写,而不是重新定义整个表单。
判断结果的方式也要提前约定。例如“后台出现记录”由谁在哪个后台查看、看哪些列、记录保留多久。若这些没有约定,验收时容易出现“我看到了”和“我没看到”的分歧。把查看位置和查看人写进验收项旁边,能减少返工。
最后一步,把验收项交给实际使用的人试一遍。让不参与开发的人按清单操作,记录哪一条无法判断、哪一条结果与预期不符。无法判断的条目要改写成更具体的动作和结果,结果不符的条目则进入修复列表。这样,功能要求才算真正落地为可验收的条目。