# TestCase设计核心理念
## ✅ TestCase = 验证问题解决得对不对
```markdown
TestCase的本质:验证问题解决方案的正确性
核心思考:这个问题真的被正确解决了吗?
问题导向框架:
📋 提问题层: Epic → Feature → Story (需求定义)
🛠️ 解决问题层: Task (技术实现)
✅ 验证层: TestCase (质量保证) ← 我们在这里
🎯 价值确认层: Milestone (交付确认)
```
**TestCase的职责边界**:
- ✅ 验证Story的验收标准是否达成
- ✅ 确保Task的实现符合预期
- ✅ 保证用户问题得到正确解决
- ✅ 防止新问题的引入(回归测试)
- ❌ 不重新定义需求或实现方案
- ❌ 不改变Story的验收标准
# 测试用例设计流程
```mermaid
flowchart TD
A[Story验收标准] --> B[确定测试层级]
B --> C[设计测试用例]
C --> D[准备测试数据]
D --> E[执行测试验证]
E --> F{测试结果}
F -->|通过| G[Story验收]
F -->|失败| H[缺陷修复]
H --> E
B --> B1[验收测试]
B --> B2[集成测试]
B --> B3[单元测试]
```
## 测试金字塔分层
```mermaid
graph TD
A[手工探索测试 1%] --> B[UI自动化测试 9%]
B --> C[集成测试 20%]
C --> D[单元测试 70%]
style D fill:#90EE90
style C fill:#FFE4B5
style B fill:#FFA07A
style A fill:#FFB6C1
```
### 测试用例设计方法
#### 1. 基于验收标准设计
```
验收标准 → 测试用例转换规则:
Given [前置条件] → 测试前置条件
When [用户操作] → 测试执行步骤
Then [预期结果] → 测试预期结果
```
#### 2. 等价类划分策略
| 等价类类型 | 设计策略 | 示例场景 |
|----------|---------|---------|
| 有效等价类 | 正常业务流程 | 标准输入数据 |
| 无效等价类 | 异常处理验证 | 空值、超长、特殊字符 |
| 边界等价类 | 临界值测试 | 最大值±1、最小值±1 |
#### 3. 场景覆盖矩阵
```mermaid
mindmap
root((测试覆盖))
功能覆盖
正常流程
异常流程
边界条件
用户覆盖
主要角色
次要角色
系统角色
环境覆盖
不同浏览器
不同设备
不同网络
数据覆盖
标准数据
边界数据
异常数据
```
### 测试用例标准模板
```markdown
## TC-{StoryID}-{序号}: {测试目标}
**前置条件**:
- 环境状态
- 测试数据
- 用户权限
**执行步骤**:
1. [操作步骤] → [预期结果]
2. [操作步骤] → [预期结果]
**验证点**:
- [ ] 功能验证
- [ ] 界面验证
- [ ] 性能验证
- [ ] 异常处理
**后置清理**: 清理测试数据
```
### 自动化测试策略
#### 自动化优先级排序
| 优先级 | 测试类型 | 自动化建议 | 维护成本 |
|--------|---------|----------|---------|
| 高 | 回归测试 | 必须自动化 | 低 |
| 高 | API接口测试 | 必须自动化 | 低 |
| 中 | 核心用户流程 | 推荐自动化 | 中 |
| 低 | UI细节测试 | 手工测试 | 高 |
| 低 | 探索性测试 | 手工测试 | - |
#### 自动化工具选型
```mermaid
flowchart LR
A[测试需求] --> B{测试层级}
B -->|单元测试| C[Jest/JUnit/PyTest]
B -->|API测试| D[Postman/RestAssured/Cypress]
B -->|E2E测试| E[Cypress/Playwright/Selenium]
B -->|性能测试| F[JMeter/K6/Artillery]
```
1. **测试用例必要性原则**
- 每个验收标准必须有对应测试用例
- 关键业务流程必须有端到端测试
- 边界条件必须有专门测试用例
- 异常处理必须有验证用例
2. **测试分层强制要求**
- 单元测试覆盖率 > 80%
- 集成测试覆盖关键API
- UI测试仅覆盖核心用户流程
- 手工测试聚焦探索和边界场景
3. **自动化测试规范**
- 回归测试必须100%自动化
- 自动化用例必须稳定可重复
- 执行时间控制在合理范围
- 失败时提供清晰错误信息
4. **测试数据管理规范**
- 使用独立测试数据集
- 实现自动化数据准备和清理
- 避免测试用例间数据污染
- 敏感数据必须脱敏处理
1. **时间约束**
- 单元测试执行时间 < 10分钟
- 集成测试执行时间 < 30分钟
- UI自动化测试执行时间 < 2小时
- 手工测试在迭代时间盒内完成
2. **资源约束**
- 测试环境资源有限
- 自动化维护人力约束
- 测试工具许可证成本
- 测试数据存储空间限制
3. **技能约束**
- 团队自动化技能水平
- 测试工具熟练程度
- 编程能力限制
- 领域知识深度
4. **技术约束**
- 被测系统架构限制
- 第三方服务依赖
- 网络环境稳定性
- 浏览器兼容性要求
| 评价维度 | 优秀标准 | 合格标准 | 不合格标准 |
|---------|---------|---------|-----------|
| 覆盖完整性 | 覆盖所有验收标准和边界条件 | 覆盖主要功能场景 | 覆盖不足缺少关键场景 |
| 用例设计质量 | 步骤清晰预期明确可重复 | 基本可执行有明确结果 | 步骤模糊或结果不明确 |
| 自动化比例 | 关键流程90%+自动化 | 回归测试基本自动化 | 自动化比例过低 |
| 执行效率 | 测试套件执行快速稳定 | 基本满足时间要求 | 执行缓慢或不稳定 |
| 缺陷发现能力 | 能及时发现各类缺陷 | 能发现主要功能缺陷 | 缺陷遗漏率高 |
| 维护成本 | 测试维护成本低更新及时 | 维护成本可接受 | 维护成本过高 |
| 数据管理 | 数据独立清理完整 | 基本数据管理 | 数据污染或泄露 |
| 报告质量 | 测试结果清晰可追溯 | 基本测试报告 | 结果不明确难追溯 |