189 lines
4.6 KiB
Markdown
189 lines
4.6 KiB
Markdown
# 测试方案
|
|
|
|
**文档版本**: 1.0.0
|
|
**最后更新**: 2026-04-19
|
|
**维护者**: 项目开发团队
|
|
|
|
---
|
|
|
|
## 目录
|
|
|
|
1. [测试策略总览](#1-测试策略总览)
|
|
2. [单元测试](#2-单元测试)
|
|
3. [功能测试](#3-功能测试)
|
|
4. [集成测试](#4-集成测试)
|
|
5. [系统测试](#5-系统测试)
|
|
6. [接口测试](#6-接口测试)
|
|
7. [端到端测试](#7-端到端测试)
|
|
8. [验收测试](#8-验收测试)
|
|
9. [测试环境](#9-测试环境)
|
|
10. [覆盖率要求](#10-覆盖率要求)
|
|
|
|
---
|
|
|
|
## 1. 测试策略总览
|
|
|
|
### 1.1 测试目标
|
|
|
|
确保系统在功能正确性、安全性、性能、可靠性等方面满足需求规格。
|
|
|
|
### 1.2 测试原则
|
|
|
|
| 原则 | 说明 |
|
|
|------|------|
|
|
| **分层测试** | 按测试金字塔模型,单元测试数量最多、执行最快 |
|
|
| **模块独立** | 各模块测试完全独立,跨模块交互通过集成测试覆盖 |
|
|
| **可重复性** | 所有测试使用隔离环境,确保可重复执行 |
|
|
| **自动化优先** | 所有测试自动化执行 |
|
|
|
|
### 1.3 测试级别定义
|
|
|
|
| 级别 | 职责 | 执行频率 | 工具 |
|
|
|------|------|----------|------|
|
|
| **单元测试** | 验证单个函数/类的行为正确性 | 每次提交 | pytest, pytest-cov |
|
|
| **功能测试** | 验证用户操作流程和 UI 交互 | 每次提交 | pytest, Playwright |
|
|
| **集成测试** | 验证跨组件、跨模块交互 | 每日/PR | pytest, FastAPI TestClient |
|
|
| **系统测试** | 验证部署、性能、安全、兼容性 | 每个迭代 | Docker, wrk |
|
|
| **接口测试** | 验证 REST API 契约一致性 | 每次提交 | pytest, httpx |
|
|
| **E2E 测试** | 验证完整用户旅程 | 每个迭代 | Playwright |
|
|
| **验收测试** | 验证需求验收标准 | 发布前 | 手动 + 自动化 |
|
|
|
|
### 1.4 覆盖率要求概览
|
|
|
|
| 模块类别 | 最低覆盖率 | 适用范围 |
|
|
|----------|-----------|----------|
|
|
| 核心模块 | >90% | <!-- 填写 --> |
|
|
| 重要模块 | >85% | <!-- 填写 --> |
|
|
| 其他模块 | >75% | <!-- 填写 --> |
|
|
|
|
---
|
|
|
|
## 2. 单元测试
|
|
|
|
### 2.1 测试框架和工具
|
|
|
|
| 工具 | 用途 | 适用范围 |
|
|
|------|------|----------|
|
|
| **pytest** | 测试框架 | 全部 |
|
|
| **pytest-cov** | 覆盖率报告 | 全部 |
|
|
| **pytest-mock** | Mock 和 Patch | 全部 |
|
|
| **faker** | 测试数据生成 | 全部 |
|
|
| **tmp_path** | 临时文件和目录 | 文件操作 |
|
|
|
|
### 2.2 测试文件组织
|
|
|
|
```
|
|
apps/<module>/
|
|
└── tests/
|
|
├── conftest.py # 公共 fixtures
|
|
├── unit/ # 单元测试
|
|
│ ├── services/ # 业务逻辑层测试
|
|
│ └── api/ # API 路由层测试
|
|
└── integration/ # 集成测试
|
|
```
|
|
|
|
### 2.3 Mock 策略
|
|
|
|
| 策略 | 说明 |
|
|
|------|------|
|
|
| **数据库隔离** | 每个测试用例使用独立的内存 SQLite |
|
|
| **文件系统隔离** | 使用 `tmp_path` 创建临时目录 |
|
|
| **网络隔离** | Mock 所有外部 HTTP 请求 |
|
|
|
|
---
|
|
|
|
## 3. 功能测试
|
|
|
|
<!-- 按模块填写功能测试策略 -->
|
|
|
|
---
|
|
|
|
## 4. 集成测试
|
|
|
|
### 4.1 测试范围
|
|
|
|
| 范围 | 说明 | 关联 FR |
|
|
|------|------|---------|
|
|
| <!-- 范围1 --> | <!-- 说明 --> | <!-- FR --> |
|
|
| <!-- 范围2 --> | <!-- 说明 --> | <!-- FR --> |
|
|
|
|
---
|
|
|
|
## 5. 系统测试
|
|
|
|
### 5.1 性能测试策略
|
|
|
|
| 测试项 | 性能指标 | 目标值 | 验证方式 |
|
|
|--------|----------|--------|----------|
|
|
| <!-- 测试项 --> | <!-- 指标 --> | <!-- 目标 --> | <!-- 方式 --> |
|
|
|
|
### 5.2 安全测试策略
|
|
|
|
| 测试项 | 验证方式 |
|
|
|--------|----------|
|
|
| <!-- 测试项 --> | <!-- 方式 --> |
|
|
|
|
---
|
|
|
|
## 6. 接口测试
|
|
|
|
<!-- 填写接口测试策略 -->
|
|
|
|
---
|
|
|
|
## 7. 端到端测试
|
|
|
|
### 7.1 核心用户旅程
|
|
|
|
```
|
|
<!-- 填写核心用户旅程步骤 -->
|
|
```
|
|
|
|
---
|
|
|
|
## 8. 验收测试
|
|
|
|
### 8.1 验收标准来源
|
|
|
|
| 来源 | 文档 | 验收标准 |
|
|
|------|------|----------|
|
|
| **用户需求** | `01-用户需求.md` | SC-001 ~ SC-NNN |
|
|
| **用户故事** | `04-用户故事.md` | 用户场景验证 |
|
|
|
|
---
|
|
|
|
## 9. 测试环境
|
|
|
|
| 配置项 | 要求 |
|
|
|--------|------|
|
|
| **操作系统** | <!-- 填写 --> |
|
|
| **Python 版本** | 3.12+ |
|
|
| **数据库** | SQLite 3.45+ |
|
|
|
|
---
|
|
|
|
## 10. 覆盖率要求
|
|
|
|
### 10.1 覆盖率标准
|
|
|
|
| 模块 | 最低覆盖率 | 适用范围 |
|
|
|------|-----------|----------|
|
|
| 核心模块 | >90% | <!-- 填写 --> |
|
|
| 重要模块 | >85% | <!-- 填写 --> |
|
|
| 其他模块 | >75% | <!-- 填写 --> |
|
|
|
|
### 10.2 覆盖率统计方法
|
|
|
|
```bash
|
|
# 生成覆盖率报告
|
|
uv run pytest tests/ --cov=src --cov-report=term-missing
|
|
|
|
# 生成 HTML 覆盖率报告
|
|
uv run pytest tests/ --cov=src --cov-report=html
|
|
```
|
|
|
|
---
|
|
|
|
**版本历史**:
|
|
- v1.0.0 (2026-04-19): 初始化模板
|