把功能要求写成验收项,核心做法是先把“用户能做什么”改写成“在什么条件下执行什么操作、系统返回什么可观察结果”,再为每个结果规定通过标准。常见误解是:功能描述写得越详细,就越像验收项。实际上,详细描述往往仍在讲实现方式,而验收项必须能由非开发人员独立判断通过或失败。
功能要求通常写成“支持手机号登录”“后台可以导出订单”“文章支持定时发布”。这些句子说明了系统应该具备什么能力,但没有回答三个关键问题:
缺少这三项,测试人员只能凭经验猜测,开发人员也只能按自己的理解实现。结果是功能“做出来了”,但验收时双方对“算不算完成”争执不下。验收项不是把功能描述写长,而是把判断标准从主观感受变成可重复执行的检查。
假设需求是“用户可以通过邮箱重置密码”。下面给出两种处理方案,并说明各自适用条件。
方案一:保留功能描述,作为需求背景
写法示例:系统应支持用户通过注册邮箱重置密码,保证账户安全。
适用条件:用于早期需求沟通、产品范围说明、向非技术干系人解释功能价值。判断结果:这类文字可以帮助理解目标,但不能直接作为验收依据,因为“保证账户安全”无法被稳定判定通过或失败。
方案二:改写成可执行验收项
写法示例:
适用条件:用于开发完成后的功能验收、测试用例编写、上线前检查。判断结果:每个条目都能由测试人员独立执行,并通过观察页面提示、登录结果来判断通过或失败。
两种方案并非互相替代。功能描述回答“为什么做”,验收项回答“做到什么程度算完成”。把功能描述直接当验收项,是常见误解的根源。
可以按以下顺序处理一条功能要求:
例如,把“后台可以导出订单”改写为:给定管理员已登录且拥有导出权限,当在订单列表选择日期范围并点击导出,系统生成包含该范围内订单的文件,文件字段包含订单号、金额、下单时间;当日期范围为空时,点击导出显示“请选择日期范围”。这样,正常路径和异常路径都有可判断的结果。
写完一组验收项,可以用下面的检查项快速复核:
如果某条验收项无法判断通过或失败,通常不是测试人员能力问题,而是这条验收项仍然停留在功能描述层面。回到前置条件、动作、可观察结果三项,把它拆开重写。
从当前需求文档中挑一条最容易引起争议的功能要求,按“前置条件—动作—可观察结果”写成一条验收项,再让另一位同事只看这条文字执行一次。如果对方能给出明确的通过或不通过结论,这条验收项就达到了可用标准;如果对方仍需追问,继续拆分,直到判断结果不再依赖解释。