---
title: "第九章：功能测试与自动化"
---

# 第九章：功能测试与自动化

![img](/images/Advanced/mll04yup-21b2fa96acf26358.jpg)

## 序言

小明的"个人豆瓣"越来越像样了。用户系统跑通了，CRUD 没问题，安全也做了基本防护。他决定加一个期待已久的功能：电影评分。用户可以给每部电影打 1 到 5 颗星，页面上显示均分。

功能不复杂。他告诉 Claude Code 需求，很快就跑通了——点星星、提交、页面上出现均分。他自己试了几遍，没问题，很满意。

第二天，朋友发来消息："搜索坏了。输入关键词点搜索，页面一片空白。"

小明一头雾水。他昨天只改了评分功能，压根没碰搜索。他打开代码一看，评分功能新加的数据查询函数改了一个公共的数据库查询模块——搜索功能也依赖这个模块。改评分的时候，搜索被"误伤"了。

他花了半小时修好搜索。第二天又有人说："电影详情页打不开了。"他去查，发现昨天修搜索的时候，不小心改了路由配置。修好详情页，当天晚上自己一测——评分功能本身又坏了。

三天，三个 bug，每个都是修前一个 bug 时引入的。他在"打地鼠"——锤下去一个，旁边又冒出来一个。

老师傅看他焦头烂额，说了一句："你需要的不是更快的反应速度，而是一张安全网。想象一下，每次你改完代码，有个东西自动帮你把所有功能都检查一遍——搜索还能用吗？详情页还能打开吗？评分还正常吗？哪个坏了，它立刻告诉你。你不用等朋友来报 bug，改完代码的那一秒就知道有没有误伤别的功能。"

小明问："这个东西叫什么？"

老师傅说："自动化测试。"

---

本章从小明的"打地鼠"困境出发，带你理解测试的核心价值，掌握 API 测试和 E2E 测试的实战方法，最终建立一套自动化工作流——让机器帮你记住"每次都要检查"这件事。

## 本章小节

| 小节 | 内容 |
|------|------|
| [9.1 为什么需要测试](./01-testing-strategy.md) | 回归测试、测试金字塔、何时自动化、AI 辅助测试的正确姿势 |
| [9.2 API 测试与 E2E 测试](./02-api-and-e2e-testing.md) | API 测试实战、Playwright E2E 测试、Flaky 测试排查、日志阅读 |
| [9.3 自动化工作流](./03-automation-workflow.md) | Git Hooks、GitHub Actions CI、TDD 入门、测试成熟度 |

---

**上一章**：[第八章：安全与用户认证](../08-auth-security/index.md)

**下一章**：[第十章：Localhost 与公网访问](../10-localhost-public-access/index.md)
