Writing Effective Use Cases

编写有效用例 · 核心精华

Alistair Cockburn 经典著作重构

1
用例到底是什么?
📜
行为契约
点击翻转

Use Case = Contract

用例不仅仅是功能描述,它是利益相关者(Stakeholders)之间关于系统行为的契约。系统必须保护这些利益。

🎯
用户目标

User Goal

用例围绕一个特定的、即时的目标展开。
判断标准:“咖啡休息测试” —— 主角完成这件事后,是否可以心满意足地去喝杯咖啡?

🎬
场景集合

Scenarios

一个用例包含多个场景:
1. 主成功场景 (MSS):一切顺利。
2. 扩展 (Extensions):发生异常、失败或分支。这是最有价值的部分!

2
写作实验室:怎么写?(How to Write)

编写用例步骤的黄金法则:保持简单,使用主动语态。

标准句式: [主语/执行者] + [谓语/动作] + [宾语/对象]
原则 (Principle) ❌ 糟糕的写法 (The Bad) ✅ 优秀的写法 (The Good)
上帝视角
Bird's Eye View
"输入卡号和密码..."
(这就不知道是谁在做)
"顾客输入卡号和密码。"
(明确主语,谁拿着球?)
显示意图,而非动作
Intention over UI
"用户按下Tab键,点击确定按钮。"
(这是UI设计,不是需求)
"用户确认提交订单。"
(描述意图,保持界面独立性)
验证而非检查
Validate vs Check
"系统检查密码是否有效。"
(暗示了if-else,导致主流程分叉)
"系统验证密码有效。"
(主场景只写成功;失败去扩展写)
推进一步
Move Forward
"系统显示欢迎界面。"
(原地踏步)
"系统向用户展示账户概览。"
(信息传递,流程推进)
💡 关键技巧:处理扩展 (Extensions)
不要在主流程里写 IF-ELSE。主流程只写最顺畅的那一条路(MSS)。
所有“如果...”、“但是...”、“或者...”全部扔进扩展部分。
格式: 3a. 密码错误:系统提示用户重试。
3
对需求的意义:Hub & Spoke 模型
用例不是需求的全部,但它是需求的核心骨架。
数据格式 (Data Formats)
业务规则 (Business Rules)
用例
(Use Cases)
界面设计 (UI Design)
非功能需求 (Performance)
4
项目中的生命周期 (Lifecycle)

用例不是一次性写完的文档,它是随项目演进的“不断展开的故事”。

阶段 1: 初始/发现 (Inception/Discovery)
低精度 宽范围

重点: 识别所有执行者(Actors)和他们的目标(Goals)
产出: Actor-Goal List (执行者-目标列表)。不需要写步骤,只需要划定系统边界(Scope)。

阶段 2: 细化/规划 (Elaboration)
高精度 关键路径

重点: 选取高风险或高价值的用例,编写主成功场景(MSS)
产出: 包含主要步骤的用例草稿,开始头脑风暴可能的失败扩展。

阶段 3: 构建 (Construction)
全套 (Fully Dressed)

重点: 补全所有扩展(Extensions)和错误处理。这是开发人员编码和测试人员编写测试用例的依据。
意义: 此时用例即需求规格说明书。

阶段 4: 交付与维护 (Delivery)

用途: 用例转变为用户手册的基础,也是验收测试(UAT)的标准。
状态: 如果业务逻辑变更,必须先更新用例,再修改代码。

原文

源链接