第 10 卷 · 测试、Git、代码质量与团队交付
2026/9/23...大约 7 分钟
本卷的定位与入口
先修:10.01 的业务案例不要求先会测试;10.03 在会编辑文件后从工作区、暂存区与提交讲起。10.02 自行讲解测试入口,使用前补齐函数、指针与方法,表驱动再依赖集合。按学习路线贯穿 S0–S7,避免把“已经掌握测试”作为测试课程的入口。
本卷按起步、原理、工程和进阶分层;首次进入时按阶段学习路线选取当前需要的章节。
已完成的独立章稿
| 正文 | 怎样进入 | 本章成果 |
|---|---|---|
| 10.01 可验证需求 | 01.03 起步语法之后,不要求自动测试 | 需求、状态、决策表、24 条用例和 14 道练习 |
| 10.02 测试基本方法 | 10.01 的预期和 01.01–01.09 的函数、集合、方法、错误与包 | 测试入口、表驱动、状态断言、证据层次与 20 道练习 |
| 10.03 Git 状态与版本记录 | 会编辑文件和使用终端后即可进入 | 工作区/索引/提交模型、独立练习流程与 15 道练习 |
| 10.04 测试替身与设计 | 10.02 的测试方法、01.06 的接口与 01.12 的本地 CLI | 8 节讲解、22 道练习;小接口、fake/stub/spy/mock、时间与分层证据 |
| 10.05 重构与模块边界 | 01.09 的包、01.12 的 CLI 合同和 10.01–10.04 的测试前置 | 8 节讲解、22 道练习;行为保持、小步改造、包边界与评审证据 |
| 10.06 代码审查与合并 | 10.03 的 Git 状态/分支与 10.05 的小步重构 | 8 节讲解、22 道练习;差异审查、三方合并、冲突、rebase 与回归 |
| 10.07 并发与属性验证 | 10.02/10.04 的可控测试与 05.09/09.10 的并发、输入和协议前置 | 8 节讲解、22 道练习;Go fuzz、race、无数据竞争的重复受理与连接状态机 |
| 10.08 依赖与质量工具 | 01.09 的模块、09.10 的协议兼容与 10.07 的工具证据前置 | 8 节讲解、22 道练习;MVS、go.sum、生成代码、gofmt/vet/govulncheck 边界 |
| 10.09 持续集成与制品 | 10.01–10.06 的需求、测试、Git 与评审;S2 内存版 IM 合同 | 8 节讲解、22 道练习;工作流、分层检查、隔离环境、缓存与制品身份 |
| 10.10 持续交付与版本管理 | 10.09 制品身份、09.10 协议矩阵、08.10 演进/回退 | 8 节讲解、22 道练习;扩展迁移收缩、灰度门、在途排空与多层回退 |
| 10.11 技术写作与协作 | 10.01 需求、10.10 发布门与 07.12/11.03 消息证据 | 8 节讲解、22 道练习;需求/ADR、m-9 手册、虚构复盘与跨团队交接 |
| 10.12 维护性评估 | 10.01 需求、10.05 重构、09.10 兼容与 10.10 发布门 | 8 节讲解、22 道练习;R9 影响图、版本政策、技术债排序与渐进偿还 |
本卷十二章均已独立展开。Git 起步可以提前学;10.02 在相应函数、指针和方法基础具备后学习,10.04 再进入可控依赖,10.05–10.06 用这些证据守护重构与合并。10.09 在 S2 用内存版 IM 合同设计最小 CI;章号用于定位。
IM 主线中的位置
用消息规则建立测试与版本记录,用异常输入、重连、重复和权限用例深化契约、评审、CI 与维护。
主参照与源码入口见 OpenIM 阅读地图。各章区分公开项目事实与虚构教学规则,在具备先修后对照固定源码。
参考材料怎样进入课程
采用经典资料的知识覆盖与递进思路,结合 Go 和虚构 IM 重新组织。下表对应本卷已完成的十二章;按先修选择章节并完成独立变式。
起步层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 10.01 可验证需求 | 示例、边界、不变量、失败承诺与验收;测试的真值来源。 | 从消息字节上限或发送权限推导正常与失败案例,说明预期从哪条需求获得。 |
| 10.02 测试基本方法 | 从 _test.go、Test 函数、testing.T、失败报告和一次 go test 讲起;再学单元/集成/端到端、表驱动与子测试。 | 从普通校验函数学习测试,再比较表驱动、接口集成和端到端消息证据。 |
| 10.03 Git 的状态模型 | 工作区、暂存区、提交、分支、远端与历史图。 | 解释一次消息规则修改的工作区、暂存、提交与历史;区分丢弃、回退和远端。 |
原理层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 10.04 测试替身与设计 | 接口边界、fake/stub/mock、依赖注入、确定性和时间控制。 | 为消息存储或时间依赖设计可控替身,避免复制实现逻辑当作验证。 |
| 10.05 重构与模块边界 | 保持行为、小步修改、信息隐藏、命名和注释的职责。 | 在行为约定不变时拆分消息规则与I/O,说明接口怎样减少变更影响。 |
| 10.06 代码审查与合并 | 差异、冲突、merge/rebase、提交粒度、评审理由与回归风险。 | 评审一次消息格式或错误处理变更,解释提交范围、冲突与合并风险。 |
工程层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 10.07 并发与属性验证 | race、性质、模糊测试、状态机、可控制故障与回归用例。 | 为解码、去重或连接生命周期定义性质,构造模糊输入和受控并发交错。 |
| 10.08 依赖与质量工具 | 格式、静态分析、漏洞信息、版本固定、生成代码与兼容。 | 为教学IM记录格式、分析、依赖版本与漏洞信息,说明工具检查覆盖什么。 |
| 10.09 持续集成与制品 | CI 阶段、环境隔离、缓存、可重现构建、测试数据与制品身份。 | 设计从提交到测试、制品和失败反馈的CI流程,控制环境与数据依赖。 |
进阶层
| 章节 | 要详细讲解的内容 | IM 练习与验收目标 |
|---|---|---|
| 10.10 持续交付与版本管理 | 发布节奏、变更记录、数据库迁移、回滚与版本支持窗口。 | 为旧客户端兼容与历史格式迁移制定发布、观察、回滚和支持窗口。 |
| 10.11 技术写作与协作 | 需求记录、设计说明、ADR、运行手册、复盘和跨团队沟通。 | 撰写消息保证、设计取舍、运行手册与复盘,使未参与讨论的人可以复核。 |
| 10.12 维护性评估 | 变更影响、重复与耦合、测试成本、技术债排序和渐进偿还。 | 用实际消息规则变化评估耦合、测试成本与技术债,给出渐进改进顺序。 |
本卷综合任务
围绕同一教学 IM 完成需求、测试、重构、评审、CI 设计与版本记录,让一次消息规则或协议变更可以被解释。
任务由学习者在具备环境时执行。理论推导、参考示例、个人实现和真实运行记录分别保存,故障与反例属于必需部分。
达到的能力
能帮助团队安全改变系统,能用清晰证据进行评审、定位和知识传递。
用解释、最小实现、失败变式、业务取舍四类证据评审。只有目录、术语定义或参考代码通过,不能直接记为掌握本卷。
本卷章节展开规则
每章从一个明确问题开始,先补齐本章所需定义,再推导机制;至少含一条完整执行过程、一个反例、分层练习、反馈与业务迁移。复杂章节拆成多课,不把整卷知识压成一次速读。
当前编写状态和章节深度要求见课程编写与能力验收。