Skip to content

第十讲 — 12维场景探索

L01 > L02 > L03 > L04 > L05 > L06 | L07 > L08 > L09 > [ L10 ] L11 > L12

"快乐路径只是12个维度中的一个。" — 每次迭代覆盖一个维度,直到所有情境都被探索。

本讲核心/autoresearch:scenario 如何用12个维度框架,把"随机想场景"变成系统性全覆盖。

代码示例:code/
配套项目:项目五 — 安全审计流水线


问题

功能通常只为"快乐路径"而设计和测试。边界情况、并发、滥用、恢复——这些往往只在生产环境出了问题才被发现。

手动场景编写的问题不是懒,是系统性盲点:你不会主动想到"两个用户同时结账最后一件商品",除非你有意识地思考"并发"维度。

解决方案

功能/系统描述
      |
      v
12个维度框架
┌─────────────────────────────────┐
│ 1.正常路径  │ 2.错误条件  │ 3.边界情况 │
│ 4.滥用情况  │ 5.规模压力  │ 6.并发    │
│ 7.时间性   │ 8.数据变体  │ 9.权限差异 │
│ 10.第三方  │ 11.恢复场景 │ 12.状态转换│
└─────────────────────────────────┘
      |
每次迭代生成一个维度的一个场景
(有条不紊,不随机)
      |
      v
输出格式按需适配:
  --format test-scenarios  → pytest/jest 测试用例
  --format user-stories    → 敏捷用户故事
  --format threat-scenarios → 安全威胁场景

工作原理

12个维度,各有侧重

#维度你容易忘记的场景
1正常路径基础用例(但要明确写出来)
2错误条件数据库超时、网络断开
3边界情况空列表、最大值、零值
4滥用情况恶意输入、超速调用
5规模压力10x 流量时会怎样?
6并发两个用户同时操作同一资源
7时间性定时任务、会话过期、时区
8数据变体中文字符、null、超长字符串
9权限差异普通用户 vs 管理员 vs 未登录
10第三方集成支付 API 超时、OAuth 失败
11恢复场景崩溃后重启、部分写入
12状态转换订单从"待付款"到"已取消"

领域特定维度优先级

python
# 不同领域重点不同
软件开发 = [错误条件, 并发, 规模, 恢复]        # 高优先
安全审计 = [滥用情况, 权限, 数据变体, 第三方]   # 高优先
产品测试 = [正常路径, 用户故事, 权限, 时间性]   # 高优先

链式到下游命令

bash
# 场景 → 测试
/autoresearch:scenario --format test-scenarios --chain debug

# 场景 → 安全审计
/autoresearch:scenario --format threat-scenarios --chain security

变更内容

方式手动场景编写12维系统探索
覆盖保证无,取决于当天灵感12个维度每个都有场景
并发/时间性容易忘强制维度,不会漏
输出格式固定按需适配测试/故事/威胁
与工具链接手动--chain debug/security

试一试

运行场景优先级计算器,看不同领域的维度权重:

sh
cd docs/zh/lectures/lecture-10-twelve-dimension-scenarios/code
python scenario_priority.py software
python scenario_priority.py security

思考题:

  1. 对比 softwaresecurity 的输出,哪些维度排序最不同?为什么?
  2. 选一个你最近开发的功能,在"并发"维度下能想到什么场景?
  3. "两个用户同时删除同一条记录"属于哪个维度?你的代码处理了这个情况吗?
  4. 如果你的项目是一个支付系统,你会优先覆盖哪3个维度?

下一讲第十一讲 — 通用发布流水线