把功能要求写成验收项,核心做法是让每一条都包含可观察的操作、明确的输入、预期结果和判定标准。商城网站开发中,需求文档里常见的“支持优惠券”“购物车好用”“后台能管理订单”都不算验收项,因为它们无法判断通过还是不通过。时间和人手有限时,最先处理的不是把所有需求写漂亮,而是把影响下单、支付、发货、退款这几条主链路的条目改成可验证形式,其余功能可以后补。
逐条读需求,遇到下面几类表述就标记出来:
判断方法很简单:把这条需求交给一个没参与讨论的人,问他“你按什么步骤操作、看到什么算通过”。如果他答不出来,这条就还不能进入验收。
可执行的结构是:前置条件 + 操作步骤 + 预期结果 + 判定标准。以商城网站开发中的优惠券为例,可以写成:
前置:购物车已有商品,金额100元,账户已领取满100减10券。操作:进入结算页,选择该券,提交订单。预期:订单应付金额显示90元,订单详情记录用券信息。判定:金额计算正确且券状态变为已使用;若金额不符或券仍显示未使用,则不通过。
这里的关键是把“支持优惠券”拆成金额、状态、记录三个可检查点。适用条件是这条券规则已经确定;如果满减门槛、叠加规则还没定,就先不要写验收项,而应先把规则定下来,否则验收时双方会各说各话。
不要平均用力。按对交易的影响排序,优先把下列链路写成验收项:
判断依据是:这条链路出问题会不会导致用户下不了单、付不了钱或收不到货。会,就排前面;只是影响展示美观或后台统计,就排后面。每写完一条,立即找开发或测试人员确认能否按步骤执行,不能执行的当场改,不要攒到最后统一评审。
用三个检查项过一遍:
复查时还要注意边界:验收项描述的是“应该发生什么”,不是“用什么技术实现”。例如写“提交订单后库存扣减1件”,不要写“用消息队列扣库存”,后者属于实现方案,换一种实现只要结果一致仍应通过。若某条需求暂时无法确定预期结果,就标注为待定,并写明由谁在什么时间前确认,而不是先写成模糊句子占位。
下一步,从现有需求文档中挑出下单和支付两条链路,按上述四部分各改写三条,改完立刻让开发和测试各读一遍,读不懂的地方就是还需要补充的地方。