在敏捷开发中,用户故事是向客户交付价值的基本构建模块。这些对期望功能的简洁描述捕捉了功能或需求的‘谁’、‘什么’和‘为什么’。然而,为了确保用户故事既可操作又可测试,敏捷团队通常采用一种称为“给予/当/则”(GWT)的验收标准技术。这种方法有助于以清晰且无歧义的方式定义用户故事的预期行为。

什么是验收标准?
验收标准是用户故事必须满足的条件或规则,才能被视为完成。它们在产品负责人愿景与开发团队的实现之间起到了桥梁作用。本质上,它们定义了每个用户故事的边界和期望。如果没有明确的验收标准,用户故事可能会产生歧义,导致误解和潜在的返工。
“给予/当/则”验收标准的结构
“给予/当/则”是一种借鉴自行为驱动开发(BDD)的验收标准编写格式。它鼓励以更结构化且易于理解的方式表达用户故事的预期行为。该格式包含三个部分:
- 给予:此部分描述系统的初始上下文或状态。它为所描述的场景设定背景。本质上,它提供了理解该场景所必需的背景信息。
- 当:此部分代表触发用户故事中描述行为的操作或事件。它是用户执行的具体操作,或系统内部发生的特定事件。
- 则:此部分概述了‘当’部分所描述操作或事件的预期结果。它定义了该操作发生后应产生的结果,通常以系统或应用程序中可观察到的变化来表示。
“给予/当/则”验收标准的优势
- 清晰性:GWT格式提供了一种结构化且易于理解的方式来表达用户故事的预期行为。这减少了歧义,确保开发团队中的每个人,包括开发人员、测试人员和产品负责人,都能清楚地了解需要完成的内容。
- 可测试性:该格式天然适合转化为测试用例。每个‘给予’、‘当’和‘则’部分都可以转化为具体的测试场景,从而更容易验证用户故事是否被正确实现。
- 一致性:GWT验收标准鼓励团队成员之间的协作。产品负责人、开发人员和测试人员可以共同制定和优化标准,确保所有人对故事的范围和期望达成一致。
“给予/当/则”验收标准的示例
让我们以一个电子商务网站的简单示例来说明:
用户故事:作为一名顾客,我希望能够将商品添加到购物车中,以便之后购买。
验收标准(GWT):
- 给予 我位于商品页面
- 当 我点击某个商品的“加入购物车”按钮
- 则 产品应添加到我的购物车中
- 并且 导航栏中的购物车图标应显示更新后的项目数量
- 并且 我应该看到一条确认消息,表明产品已添加到购物车
在这个例子中,验收标准提供了对用户故事期望内容的清晰理解,使其具有可操作性和可测试性。
问题描述案例研究:
让我们以Uber这类流行的拼车应用为例进行案例研究。当前的问题是通过引入一项功能来改善用户体验,使乘客能够提前预定特定日期和时间的行程。
带有GWT验收标准的用户故事:
用户故事1:提前预约行程
作为一名乘客,我希望能够提前预定特定日期和时间的行程,以便我能更好地规划我的行程.
验收标准(GWT):
- 前提条件我已经安装了拼车应用并且已登录
- 当我打开应用并输入我的目的地、日期和行程时间
- 那么应用应显示所选日期和时间的可用司机
- 并且我应该能够确认并预约行程
- 并且我应该收到一条包含预约行程详情的确认通知
用户故事2:编辑或取消已预约的行程
作为一名乘客,我希望可以有编辑或取消已预约行程的选项,以防我的计划发生变化.
验收标准(GWT):
- 给定我有一个已预约的行程
- 当我打开应用程序并导航到我的预约行程
- 那么我应该能看到我即将进行的预约行程列表
- 并且我应该能够选择一个行程来修改日期和时间或取消它
- 并且如果我修改行程,应用程序应显示更新后的日期和时间下可用的司机
- 并且对于任何已做的更改,我应该收到确认通知
用户故事3:通知司机预约行程
作为一名司机,我希望在乘客预约与我同行的行程时收到通知,以便我可以安排我的可用时间.
验收标准(GWT):
- 给定我是一名活跃的司机,且共享乘车应用程序处于打开状态
- 当乘客为特定日期和时间预约与我同行的行程
- 那么我应该收到一条实时通知,包含预约行程的详细信息
- 并且应用程序应在我的司机仪表板上显示该预约行程
- 并且我应在合理的时间范围内接受或拒绝该预约行程
用户故事4:为预约行程提供反馈
作为一名乘客,我希望能够在完成预约行程后对司机进行评价并提供反馈,以帮助维持服务质量.
验收标准(GWT):
- 给定我已经完成了一次预约行程
- 当我在行程完成后打开应用程序
- 那么我应该能够对司机进行评分并提供反馈
- 并且司机的评分应根据我的反馈进行更新
- 并且我应该收到一条感谢我提供反馈的消息
这些用户故事及其相关的“给定/当/那么”验收标准解决了在共享出行应用中引入行程预约功能的问题。通过遵循这种结构化方法,开发团队可以确保对需求和新功能预期行为有清晰的理解,最终带来更佳的用户体验。
结论
“给定/当/那么”验收标准为敏捷开发中定义用户故事预期行为提供了一种结构化方法。通过将标准分解为三个不同部分——给定、当和那么——团队可以实现更高的清晰度、可测试性和一致性,最终推动产品开发更加成功。将此格式融入您的敏捷流程,有助于团队交付符合用户期望的高质量软件。











