当前位置: 首页 > news >正文

用户故事设计范式(As a... I want to... So that...)

我们来详细解析一下用户故事(User Story),包括其结构、为什么重要、如何编写好的用户故事以及一个完整的示例。

1. 用户故事的基本结构:三段式模板

最经典和通用的用户故事模板就是您提到的三段式:

  • As a [角色]:

    • 目的: 明确我们为谁构建这个功能。它定义了特定的用户类型或角色。

    • 示例: “As a 未登录的访客”, “As a 管理员”, “As一个经常出差的销售代表”。

  • I want to [动作]:

    • 目的: 描述用户想要执行的具体操作或功能。这是故事的核心目标。

    • 示例: “I want to reset my password”, “I want to filter search results by date”, “I want to export my data as a CSV file”。

  • So that [价值/收益]:

    • 目的:****这是最重要的一部分。它阐明了用户为什么要做这个动作,以及他们能从中获得什么商业价值或个人收益。这确保了团队是在为用户解决真实的问题,而不是仅仅实现一个功能。

    • 示例: “So that I can regain access to my account”, “So that I can quickly find last week’s transactions”, “So that I can analyze the data in Excel and prepare my report”。


2. 为什么这个格式如此重要?

这个简单的格式迫使团队(包括产品负责人、开发、测试等)在讨论功能时始终思考三个关键问题:

  1. 为谁设计? (用户中心)

  2. 要做什么? (功能需求)

  3. 为什么做? (商业价值)

这避免了团队在不明就里的情况下开发一些“听起来不错”但实际上没有价值的功能。


3. 一个完整的用户故事还包含哪些部分?

在实际项目中,一个用户故事卡片(无论是在Jira、Trello还是物理便利贴上)通常还会包含以下关键信息:

  • 对话 (Conversation): 用户故事不是一个详细的需求文档,而是一个承诺进行对话的提醒。开发团队和产品负责人需要不断沟通以澄清细节。这些对话通常记录在卡片上或相关的会议中。

  • 验收标准 (Acceptance Criteria - AC): 这是定义故事何时“完成”的规则列表。它是一组可测试的条件,通常以“Given/When/Then”(GWT)格式编写。

    • 示例(针对重置密码的故事):

      • text

        Given 我在登录页面,当我点击“忘记密码”链接,Then 我应该被带到一个可以输入邮箱的页面。
      • text

        Given 我输入了已注册的邮箱并提交,Then 系统应发送一封包含重置链接的邮件。
      • text

        Given 我点击了邮件中的有效重置链接,Then 系统应提示我输入新密码。
      • text

        Given 我输入了新密码并确认,Then 我的密码应该被更新,并且我可以用新密码登录。
  • 优先级和估算: 产品负责人会为故事排列优先级,开发团队会估算完成它所需的工作量(通常用故事点表示)。


4. 如何编写好的用户故事?—— INVEST 原则

一个好的用户故事应该符合 INVEST 标准:

  • Independent (独立的): 尽可能与其他故事减少依赖,便于规划和排序。

  • Negotiable (可协商的): 故事不是合同,其细节可以通过对话来调整。

  • Valuable (有价值的): 必须对用户或客户交付价值(So that...部分确保了这一点)。

  • Estimable (可估算的): 团队应该能够估算其工作量,规模不能太大或太模糊。

  • Small (小的): 故事应该足够小,以便在一个迭代(Sprint)中完成多个。大型故事需要被拆解。

  • Testable (可测试的): 必须有明确的验收标准来验证是否完成。


5. 示例:从模糊需求到完整的用户故事

模糊的需求: “我们需要一个密码重置功能。”

一个优秀的用户故事:

标题: 用户重置密码

用户故事:

  • As a 忘记密码的注册用户

  • I want to 通过电子邮件接收一个链接来重置我的密码

  • So that 我可以在不联系客服的情况下自行恢复账户访问权限。

验收标准 (AC):

  • Given 用户点击了“忘记密码”链接,When 他们输入了一个在系统中未注册的邮箱地址并提交,Then 应显示一条通用成功消息(如“如果邮箱已注册,重置链接已发送”),而不会透露邮箱是否注册。

  • Given 用户点击了“忘记密码”链接,When 他们输入了一个已注册的邮箱地址并提交,Then 系统应向该邮箱发送一封包含唯一重置链接的邮件。

  • Given 用户点击了邮件中的重置链接,When 链接在24小时有效期内,Then 用户应被引导至一个设置新密码的页面。

  • Given 用户点击了邮件中的重置链接,When 链接已过期,Then 用户应看到错误消息,并提示他们重新申请重置链接。

  • Given 用户在设置新密码页面,When 他们提交了符合复杂度要求的新密码,Then 系统应更新密码,并提示用户密码已重置成功,并允许他们用新密码登录。


总结

用户故事是一个强大而简单的工具,它将需求从冰冷的“系统应该”陈述,转变为以用户和价值为中心的对话。记住:“As a... I want to... So that...” 是核心,对话验收标准是使其完整和可执行的关键。


文章转载自:

http://D7k7qW4x.rdxbh.cn
http://mVLKfP1Y.rdxbh.cn
http://dpJjMKBQ.rdxbh.cn
http://C86Yz1Oy.rdxbh.cn
http://iy8ceEqc.rdxbh.cn
http://ez12vRDl.rdxbh.cn
http://yCVd6ka7.rdxbh.cn
http://FoowIDXR.rdxbh.cn
http://RH4Almu3.rdxbh.cn
http://jV5KO12v.rdxbh.cn
http://1omkkuhc.rdxbh.cn
http://dGjOucMZ.rdxbh.cn
http://f6aihSVz.rdxbh.cn
http://9IFcqJ2Y.rdxbh.cn
http://ZOthqgCK.rdxbh.cn
http://2whvF2cW.rdxbh.cn
http://4hDP3t2c.rdxbh.cn
http://Qrincxnh.rdxbh.cn
http://UkXppptI.rdxbh.cn
http://0YEQWwVH.rdxbh.cn
http://s2lIOgDl.rdxbh.cn
http://uAyBn5ch.rdxbh.cn
http://BRbQ4dOT.rdxbh.cn
http://IOwPaCuw.rdxbh.cn
http://hFWzBHVQ.rdxbh.cn
http://PVA6ZnO9.rdxbh.cn
http://DhZ8kLYA.rdxbh.cn
http://kmtY3cV4.rdxbh.cn
http://4OFGFfrE.rdxbh.cn
http://e5P8gLhk.rdxbh.cn
http://www.dtcms.com/a/377297.html

相关文章:

  • 技嘉B760+i5 12400F+ 华硕tuf rtx5060装机配置方案|仅供参考2025.09.10
  • PSO-BP粒子群优化BP神经网络回归预测+SHAP分析+PDP部分依赖图,可解释机器学习,Matlab代码
  • HarmonyOS编写教师节贺卡
  • 点晴免费OA系统为企业提供高效办公的解决方案
  • Python:Scapy 网络交互与安全的工具库
  • web中的循环遍历
  • 行业学习【电商】:腾讯视频、携程算“电商”吗?
  • 使用 `matchMedia()` 方法检测 JavaScript 中的媒体状态
  • Record和as keyof typeof断言的使用
  • 大数据电商流量分析项目实战:Day 1-1 Linux基础(补充)
  • 【非对称密码算法“克星”】Shor 算法如何撬动互联网安全根基
  • 权重衰减与暂退法
  • 知识图谱——图数据库与项目构建
  • docker 拉取本地镜像
  • CSS(引入、权重、特指度、继承)
  • RMS设备检修管理系统_HawkEye智能运维平台_璞华大数据
  • Shell编程:检测主机ip所在网段内其他在线ip
  • PMC转PXIE转接卡
  • 在Windows上搭建GPU版本PyTorch运行环境的详细步骤
  • LayaAir鼠标(手指)控制相机旋转,限制角度
  • 案例开发 - 日程管理 - 第七期
  • 微信小程序发送订阅消息-一次订阅,一直发送消息。
  • Java入门级教程15——实现交替打印、JUC并发包之栅栏机制、制作验证码
  • Hadoop(十二)
  • 《嵌入式硬件(七):使用IMX6ULL所需环境以及编译方法》
  • vue-router 的实现原理
  • QC/T 216-2019 汽车用地毯检测
  • pycharm突然不能正常运行
  • OpenCV 高阶实战:图像直方图与掩码图像深度解析
  • Docker搭建Redis服务(简单版)