You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9.8 KiB
9.8 KiB
测试文档结构优化 - 混合方案
日期: 2026-02-02
类型: Documentation Optimization
影响范围: 测试规范文档、文档结构
概述
优化 testing.md 文档结构,将详细内容拆分到专题文件,提高文档可读性和 AI 加载效率。
背景
问题
testing.md 文件大小达到 80K(3009 行),存在以下问题:
-
文件过大:
- 80K 是所有 reference 文件中最大的
- 超过了 backend.md(63K)
- 可能影响 AI 加载和理解效率
-
内容重复:
- 事件循环修复方案在多个地方重复
- 代码示例重复出现
- 最佳实践分散在多个章节
-
结构复杂:
- 章节嵌套较深
- 交叉引用较多
- 难以快速定位信息
对比其他文件
| 文件 | 大小 | 行数 |
|---|---|---|
| backend.md | 63K | ~2400 |
| database.md | 40K | ~1500 |
| infrastructure.md | 24K | ~900 |
| testing.md | 80K | 3009 |
优化方案
方案选择
评估了三种方案:
- 方案 1:拆分文件 - 拆分为多个独立文件
- 方案 2:精简内容 - 保持单文件,删减内容
- 方案 3:混合方案 - 主文件 + 专题文件(✅ 采用)
采用方案 3 的理由
优点:
- 平衡详细性和可读性
- 核心内容集中在主文件
- 高级内容独立成专题
- 易于维护和扩展
实施策略:
- 保留 testing.md 作为主文件(核心配置和最佳实践)
- 创建专题文件 testing-event-loop-fix.md(详细原理和深入讲解)
- 利用 Changelog 记录历史演进
实施内容
1. 创建专题文件:testing-event-loop-fix.md
文件大小:14K(546 行)
内容结构:
# FastAPI + asyncpg + httpx.AsyncClient 事件循环修复详解
## 目录
- 问题描述
- 根本原因分析
- 完整修复方案
- 修复效果对比
- 技术原理深入
- 常见误区
- 验证方法
包含内容:
- ✅ 完整的问题分析(错误信息、表现、典型场景)
- ✅ 根本原因深入讲解(4 个关键点)
- ✅ 详细的修复步骤(5 个步骤,每步都有详细说明)
- ✅ 技术原理深入(事件循环作用域、asyncpg 绑定机制)
- ✅ 常见误区(3 个误区及正确做法)
- ✅ 验证方法(3 种验证方式)
2. 精简主文件:testing.md
优化前:80K(3009 行)
优化后:76K(2858 行)
减少:4K(151 行,5%)
精简内容:
- ❌ 移除详细的原理说明(保留在专题文件)
- ❌ 移除重复的代码示例
- ❌ 移除过于详细的修复过程(保留摘要)
保留内容:
- ✅ 快速参考的核心配置
- ✅ 核心 Fixtures 使用指南
- ✅ 常见问题快速解决方案
- ✅ 指向详细文档的链接
新增内容:
## FastAPI + asyncpg + httpx.AsyncClient 事件循环修复
### 快速参考
**问题**:`RuntimeError: Task got Future attached to a different loop`
**核心解决方案**:使用 session 级别的事件循环和数据库引擎
[核心代码示例...]
**完整文档**:请参考 [FastAPI + asyncpg + httpx.AsyncClient 事件循环修复详解](./testing-event-loop-fix.md)
**相关文档**:
- [pytest 事件循环修复 Changelog](../../../docs/server/changelogs/2026-02-02-pytest-event-loop-fix.md)
- [事件循环修复详解](./testing-event-loop-fix.md)
3. 更新交叉引用
主文件 → 专题文件:
**完整文档**:请参考 [FastAPI + asyncpg + httpx.AsyncClient 事件循环修复详解](./testing-event-loop-fix.md)
专题文件 → 主文件:
**相关文档**:
- [测试规范主文档](./testing.md)
- [pytest 事件循环修复 Changelog](../../../docs/server/changelogs/2026-02-02-pytest-event-loop-fix.md)
常见问题 → 专题文件:
**完整修复方案**:请参考 [FastAPI + asyncpg + httpx.AsyncClient 事件循环修复](#fastapi--asyncpg--httpxasyncclient-事件循环修复) 章节。
优化效果
文件大小对比
| 文件 | 优化前 | 优化后 | 变化 |
|---|---|---|---|
| testing.md | 80K (3009 行) | 76K (2858 行) | -4K (-151 行, -5%) |
| testing-event-loop-fix.md | - | 14K (546 行) | +14K (+546 行) |
| 总计 | 80K | 90K | +10K (+12.5%) |
说明:
- 主文件减少 5%,更易于快速查找
- 新增专题文件 14K,提供深入学习
- 总大小增加 12.5%,但结构更清晰
- 内容没有丢失,只是重新组织
结构优化
主文件(testing.md)
定位:快速参考和核心配置
内容:
- ✅ 测试金字塔
- ✅ 测试目录结构
- ✅ 事件循环修复快速参考(新增)
- ✅ 常用 Fixtures 使用指南
- ✅ 集成测试认证模式
- ✅ API 响应格式处理
- ✅ 常见字段名称规范
- ✅ 测试类型和策略
- ✅ 共享 Fixtures
- ✅ 测试环境
- ✅ 最佳实践
- ✅ 故障排查
- ✅ 持续集成
- ✅ 测试代码最佳实践
- ✅ 常见问题与解决方案
- ✅ 测试覆盖率要求
特点:
- 聚焦常用内容
- 快速查找
- 清晰的导航
专题文件(testing-event-loop-fix.md)
定位:深入学习和技术原理
内容:
- ✅ 问题描述(错误信息、表现、典型场景)
- ✅ 根本原因分析(4 个关键点)
- ✅ 完整修复方案(5 个步骤)
- ✅ 修复效果对比
- ✅ 技术原理深入(事件循环作用域、asyncpg 绑定机制)
- ✅ 常见误区(3 个误区及正确做法)
- ✅ 验证方法(3 种验证方式)
特点:
- 完整的技术细节
- 深入的原理讲解
- 独立的目录结构
用户体验改进
1. 快速查找(主文件)
场景:开发者需要快速查找测试配置
改进前:
- 需要在 3009 行中查找
- 详细内容干扰快速定位
- 重复内容增加阅读负担
改进后:
- 在 2858 行中查找(减少 5%)
- 核心配置一目了然
- 清晰的导航链接
2. 深入学习(专题文件)
场景:开发者需要理解事件循环修复的原理
改进前:
- 内容分散在主文件多个章节
- 难以系统学习
- 缺少完整的技术细节
改进后:
- 独立的专题文件
- 完整的技术细节
- 系统的学习路径
3. AI 加载效率
改进前:
- 单个 80K 文件
- 加载时间较长
- 上下文冗余
改进后:
- 主文件 76K(减少 5%)
- 专题文件 14K(按需加载)
- 减少上下文冗余
导航路径
主文件(testing.md)
├─ 快速参考 → 专题文件(深入学习)
├─ 快速参考 → Changelog(历史记录)
└─ 常见问题 → 专题文件(完整方案)
专题文件(testing-event-loop-fix.md)
├─ 返回 → 主文件(概览)
└─ 参考 → Changelog(历史记录)
技术细节
文件组织原则
-
主文件(testing.md):
- 核心配置和最佳实践
- 快速参考指南
- 目标:40-50K(当前 76K,仍有优化空间)
-
专题文件(testing-event-loop-fix.md):
- 深入的技术原理
- 完整的修复方案
- 目标:10-20K(当前 14K,符合预期)
-
Changelog 文档:
- 历史演进记录
- 详细的修复过程
- 目标:按需查阅
内容分配策略
| 内容类型 | 主文件 | 专题文件 | Changelog |
|---|---|---|---|
| 核心配置 | ✅ | ❌ | ❌ |
| 快速参考 | ✅ | ❌ | ❌ |
| 代码示例 | ✅ 简化 | ✅ 完整 | ✅ 完整 |
| 原理说明 | ❌ | ✅ | ✅ |
| 技术细节 | ❌ | ✅ | ✅ |
| 常见误区 | ✅ 摘要 | ✅ 详细 | ❌ |
| 验证方法 | ❌ | ✅ | ❌ |
| 历史记录 | ❌ | ❌ | ✅ |
影响范围
受益对象
-
新加入的开发者:
- 快速了解测试配置(主文件)
- 深入学习技术原理(专题文件)
- 避免常见问题
-
现有团队成员:
- 快速查找配置(主文件)
- 参考完整方案(专题文件)
- 提高开发效率
-
AI 助手:
- 更快的加载速度
- 更清晰的上下文
- 更准确的理解
文档更新
- ✅
.claude/skills/jointo-tech-stack/references/testing.md- 精简主文件 - ✅
.claude/skills/jointo-tech-stack/references/testing-event-loop-fix.md- 新建专题文件 - ✅
docs/server/changelogs/2026-02-02-testing-best-practices-integration.md- 更新 - ✅
docs/server/changelogs/2026-02-02-testing-documentation-optimization.md- 本文档
后续优化建议
短期(1-2 周)
- 监控团队使用反馈
- 评估主文件是否需要进一步精简
- 考虑创建更多专题文件(如 testing-best-practices.md)
中期(1-2 月)
- 评估其他大型文档是否需要类似优化
- 建立文档大小监控机制
- 制定文档拆分标准(如 > 60K 考虑拆分)
长期(3-6 月)
- 建立文档结构最佳实践
- 定期审查和优化文档结构
- 培训团队文档编写规范
相关文档
总结
通过采用混合方案优化测试文档结构,我们成功:
- ✅ 减少主文件大小 5%(80K → 76K)
- ✅ 创建专题文件提供深入学习(14K)
- ✅ 保持内容完整性(无内容丢失)
- ✅ 提高文档可读性和导航性
- ✅ 改善 AI 加载效率
- ✅ 建立清晰的文档组织模式
- ✅ 为未来文档优化提供参考
这种混合方案平衡了详细性和可读性,既保留了完整的技术细节,又提供了快速参考的便利性,为团队提供了更好的文档体验。