77 lines
3.1 KiB
Markdown
77 lines
3.1 KiB
Markdown
---
|
||
title: "Curiosity-Driven Bug Discovery"
|
||
type: concept
|
||
tags: []
|
||
last_updated: 2026-05-02
|
||
---
|
||
|
||
## Definition
|
||
|
||
通过主动追问系统假设(而非被动等待测试失败)来发现高危 Bug 的方法论——将"未言明的假设"显式化,并在它们导致故障前将其消灭。
|
||
|
||
## Overview
|
||
|
||
大多数生产环境中的严重 Bug 并非来自代码错误,而是来自未被显式记录的**假设**。这些假设在代码编写时被默许存在,随着系统演进逐渐失效,最终在生产环境中引发故障。Curiosity-Driven Bug Discovery 是一套系统化的追问框架,在工作流设计阶段就将这些假设显式化。
|
||
|
||
## Four Question Dimensions
|
||
|
||
### 1. 数据持久化假设(Data Persistence Assumptions)
|
||
- 数据存储在哪里?存储是持久化还是临时性的?
|
||
- 重启后数据是否仍然存在?
|
||
- 数据在什么条件下被清理?
|
||
|
||
**追问模板**:
|
||
> "Where is this data stored? Is the storage durable or ephemeral? What happens on restart?"
|
||
|
||
### 2. 网络连通性假设(Network Connectivity Assumptions)
|
||
- Service A 能否实际到达 Service B?
|
||
- 它们在同一个网络段吗?是否有防火墙规则?
|
||
- 服务之间是否存在 DNS 解析延迟?
|
||
|
||
**追问模板**:
|
||
> "Can service A actually reach service B? Are they on the same network? Is there a firewall rule?"
|
||
|
||
### 3. 时序假设(Ordering/Timing Assumptions)
|
||
- 当前步骤假设前一个步骤已完成——但它们是并行运行的吗?
|
||
- 什么机制确保时序正确?(健康检查?轮询?事件?锁?)
|
||
- 超时值是否合理?
|
||
|
||
**追问模板**:
|
||
> "This step assumes the previous step completed — but they run in parallel. What ensures ordering?"
|
||
|
||
### 4. 认证授权假设(Authentication/Authorization Assumptions)
|
||
- 此端点在启动时被调用——但调用方是否经过身份验证?
|
||
- 什么防止未授权访问?
|
||
- 凭证在何时何地可用?
|
||
|
||
**追问模板**:
|
||
> "This endpoint is called during setup — but is the caller authenticated? What prevents unauthorized access?"
|
||
|
||
## Application in Workflow Architect
|
||
|
||
在 `Discovery Audit Checklist` 中,每发现一个隐式工作流,Workflow Architect 必须主动用四个追问维度扫描一遍。发现的高危假设记录在 `Reality Checker Findings` 表中,标注 severity 为 Critical 或 High。
|
||
|
||
## Why "Curiosity-Driven"
|
||
|
||
"Curiosity-driven" 强调这是**主动探索**而非**被动验证**:
|
||
- **被动验证**:已有 bug 报告 → 查找原因
|
||
- **主动探索**:无 bug 报告 → 追问假设 → 发现潜在 bug
|
||
|
||
这套方法论的核心洞察:**最危险的 bug 是那些从未有人怀疑其存在的假设**。
|
||
|
||
## Success Criteria
|
||
|
||
- 每个工作流的 Assumptions 表都被填满(非空白)
|
||
- 假设表中的假设在后续 Sprint 中被逐一验证或修正
|
||
- 好奇心驱动发现的 bug 数量 ≥ 被动测试发现的 bug 数量
|
||
|
||
## Related Concepts
|
||
- [[Workflow-Tree-Spec]]:假设记录的载体(Assumptions 节)
|
||
- [[Reality-Checker]]:验证假设真实性的 Agent
|
||
- [[Discovery-Audit]]:发现隐式工作流的入口
|
||
|
||
## Aliases
|
||
- Assumption Mining
|
||
- Hypothesis-First Bug Discovery
|
||
- Proactive Assumption Surfacing
|