# 测试方案 **文档版本**: 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// └── tests/ ├── conftest.py # 公共 fixtures ├── unit/ # 单元测试 │ ├── services/ # 业务逻辑层测试 │ └── api/ # API 路由层测试 └── integration/ # 集成测试 ``` ### 2.3 Mock 策略 | 策略 | 说明 | |------|------| | **数据库隔离** | 每个测试用例使用独立的内存 SQLite | | **文件系统隔离** | 使用 `tmp_path` 创建临时目录 | | **网络隔离** | Mock 所有外部 HTTP 请求 | --- ## 3. 功能测试 --- ## 4. 集成测试 ### 4.1 测试范围 | 范围 | 说明 | 关联 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): 初始化模板