跳转到内容

Phase 4: 测试 + 迭代

目标:用 AI 建立测试体系,然后基于反馈持续改进产品。

预计时间:1-1.5 小时

前置:Phase 3 的可运行代码

工具:Claude Code(主力)

因为它们是一个循环:

开发 → 测试 → 发现问题 → 修复 → 测试
↑ ↓
← ← ← 新需求 ← 用户反馈 ← 上线 ← ←

测试保证”现在没问题”,迭代保证”未来能进化”。AI 在两个环节都能大幅提效。

环节你做AI 做
测试用例设计补充业务边界场景生成测试代码
覆盖率分析判断哪些需要补分析报告 + 补测试
安全检查确认修复优先级扫描 + 报告
需求变更决定做不做影响分析
重构确认方案分析 + 执行

AI 生成测试的核心技巧:不要说”帮我写测试”,要告诉 AI 测什么、边界在哪、用什么框架。

三种测试,AI 都能生成:

类型测什么输入给 AI 的内容框架
单元测试单个函数的逻辑函数代码 + 边界条件Go testing
集成测试API 端到端API 设计 + 数据模型httptest + testDB
E2E 测试用户完整操作流程用户故事Playwright

场景:测试任务状态变更逻辑(只允许特定的状态转换)

请为以下任务状态变更函数写单元测试。
## 函数代码
[粘贴状态变更函数]
## 状态转换规则
- 待办 → 进行中 ✅
- 进行中 → 测试中 ✅
- 测试中 → 已完成 ✅
- 测试中 → 进行中 ✅(打回)
- 已完成 → 待办 ❌(不允许倒退)
- 任意 → 已取消 ✅
## 要求
- 使用 Go 的 table-driven test 格式
- 覆盖所有合法转换(正向)
- 覆盖所有非法转换(反向)
- 覆盖边界情况:空状态、不存在的状态值

场景:测试创建任务 API

请为 POST /api/projects/:id/tasks 写集成测试。
## API 行为
- 需要认证(JWT)
- 验证项目存在
- 验证用户是项目成员
- 创建任务并返回
## 测试用例要求
- 正常创建(200)
- 未认证(401)
- 项目不存在(404)
- 非项目成员(403)
- 缺少必填字段(400)
- 分配人不是项目成员(400)
## 技术要求
- 使用 httptest
- 使用测试数据库(不是 mock)
- 每个测试用例前清理数据
- 参考项目中已有的测试结构

场景:测试完整的看板操作流程

请用 Playwright 写一个 E2E 测试,测试以下用户故事:
## 用户故事
作为项目成员,我想在看板上管理任务。
## 测试步骤
1. 登录系统
2. 进入"测试项目"
3. 在"待办"列创建新任务(标题:"完成用户模块")
4. 验证任务出现在"待办"列
5. 将任务状态改为"进行中"
6. 验证任务出现在"进行中"列
7. 将任务状态改为"已完成"
8. 验证任务出现在"已完成"列
## 技术要求
- 使用 Playwright
- 使用 Page Object 模式
- 包含截图步骤(每次状态变更后截图)

AI 生成的测试常见问题:

  • 有没有漏掉异常路径?(AI 倾向于只测 happy path)
  • 测试之间有没有依赖?(一个测试的数据影响另一个)
  • 测试数据是否清理?(避免测试间污染)
  • 断言是否足够具体?(assert(resp.StatusCode == 200) 不够,还要检查响应体)

更多测试模式参考 项目实战 - 阶段 7: 测试


测试不是写得越多越好,而是要覆盖关键路径。用覆盖率报告找到盲区,让 AI 针对性补测试。

Step 1:生成覆盖率报告

Terminal window
# Go 后端
cd server && go test ./... -coverprofile=coverage.out
go tool cover -func=coverage.out

Step 2:让 AI 分析并补测试

以下是测试覆盖率报告,请分析并补充测试。
[粘贴 coverage.out 输出]
## 要求
1. 找出覆盖率最低的 3 个文件
2. 分析这些文件中未覆盖的代码路径
3. 为最关键的未覆盖路径生成测试用例
4. 关键 = 涉及数据修改或权限校验的代码
  • 覆盖率分析报告
  • 新增的测试用例

在功能开发完成后、上线前,让 AI 做一次安全扫描。核心是用 OWASP Top 10 作为检查框架。

请对项目管理工具做一次安全审查,按 OWASP Top 10 逐项检查。
## 重点关注
1. SQL 注入:所有数据库查询是否用了参数化?
2. XSS:用户输入(任务标题、描述)在前端渲染时是否转义?
3. 认证:JWT 过期时间合理吗?有没有刷新机制?
4. 权限:非项目成员能不能通过直接调 API 访问数据?
5. CSRF:状态修改接口有 CSRF 防护吗?
## 输出格式
每一项:
- 风险等级(高/中/低)
- 当前状态(安全 ✅ / 有风险 ⚠️ / 存在漏洞 🚨)
- 具体问题描述
- 修复建议(附代码)

AI 的安全审查结果需要你判断:

  • 10 人内部工具,某些风险可以接受(如 CSRF 对内部工具威胁较低)
  • 但 SQL 注入和权限校验必须修复,无论规模大小
  • 先修高风险,低风险的放到后续迭代

更多安全模式参考 项目实战 - 阶段 6: 安全加固代码审查清单


产品上线后,需求变更是常态。关键不是”做不做”,而是”做了会影响什么”。让 AI 帮你做影响分析,你再决策。

场景:老板说”加个甘特图”。

老板要在项目管理工具中加一个甘特图功能。请做影响分析。
## 当前系统
- 数据模型:[粘贴当前 schema 或让 AI 读项目文件]
- 已有功能:项目 CRUD、任务 CRUD、看板视图、成员管理
## 请分析
1. 数据模型需要改吗?(任务需要新增哪些字段?)
2. 需要新增哪些 API?
3. 前端需要新增/修改哪些页面?
4. 有没有破坏性变更?(改了现有接口的返回格式?)
5. 预估工作量(小/中/大)
6. 建议的实施方案(分几步做?先做什么?)
  • AI 是否低估了工作量?(甘特图的时间轴交互比看起来复杂得多)
  • 是否有更简单的替代方案?(也许一个时间线视图就够了)
  • 破坏性变更是否可以避免?(新增字段比修改字段安全)

一份 影响分析报告 + 实施方案


代码随着功能增加会变乱——这是正常的。重构的时机是:你感觉”加新功能越来越费劲”。

核心原则:先分析再动手,小步重构,每步验证。

Step 1:让 AI 分析代码结构

请分析项目管理工具的代码结构,找出需要重构的地方。
## 关注点
1. 重复代码:有没有多个地方写了相似的逻辑?
2. 函数过长:有没有超过 50 行的函数?
3. 职责不清:有没有一个文件做了太多事?
4. 错误处理:是否统一?有没有漏掉错误检查?
## 输出
- 问题清单(按严重程度排序)
- 每个问题的重构建议
- 建议的重构顺序(先改哪个影响最小、收益最大?)

Step 2:分步执行

选择最重要的 1-2 个重构点,让 AI 分步执行:

请执行重构方案 #1:提取通用的分页查询逻辑。
## 要求
- 不改变任何 API 的输入输出行为
- 重构完成后所有现有测试必须通过
- 每一步改完告诉我需要验证什么
  • 重构前后行为一致(测试全过)
  • 没有引入新 Bug
  • 代码确实变简单了(不是换了一种复杂方式)

性能优化的顺序:量化 → 定位 → 优化 → 验证。不要凭感觉优化。

Step 1:量化

Terminal window
# 测量 API 响应时间
curl -w "\n%{time_total}s\n" http://localhost:8080/api/projects/1/tasks
# 或者用 hey 做压测(10 人工具不需要高并发,但可以发现慢查询)
hey -n 100 -c 5 http://localhost:8080/api/projects/1/tasks

Step 2:让 AI 分析

以下 API 响应较慢(平均 800ms,期望 < 200ms)。
API:GET /api/projects/1/tasks(获取项目下所有任务 + 分配人信息)
请分析可能的原因:
1. 检查 SQL 查询(是否有 N+1 问题?)
2. 检查是否缺少索引
3. 检查是否做了不必要的数据加载
[粘贴相关 handler 代码]

Step 3:验证优化效果

Terminal window
# 优化后再次测量
curl -w "\n%{time_total}s\n" http://localhost:8080/api/projects/1/tasks

走完 4 个 Phase,你用 AI 完成了一个项目的完整开发流程:

Phase 1 Phase 2 Phase 3 Phase 4
一句话需求 → 设计文档 → 可运行的代码 → 有测试保障的产品
用户反馈
Phase 4.4-4.6
需求变更/重构/优化
回到 Phase 1(新功能)
阶段你的核心工作AI 的核心工作关键产出
需求分析回答关键问题、做决策发散需求、结构化分析需求文档
设计审核模型和 API生成 Schema、架构图、原型设计文档
开发验证功能、判断方案写代码、调试、审查可运行的代码
测试补充业务场景、确认修复生成测试、分析覆盖率测试套件
迭代决定方向、确认方案影响分析、重构、优化改进后的产品
陷阱症状对策
只测 happy pathAI 生成的测试全是正常场景Prompt 中明确要求测异常路径
过度优化10 人工具花 2 天优化到 10ms先定性能目标,达标就停
重构改太多一次重构改了 20 个文件小步重构,每步不超过 3 个文件
跳过影响分析新需求直接开始写代码先跑 4.4,5 分钟省 5 小时
安全检查只做一次上线前查一次就不管了每次加新功能后再查一次认证和权限

基于 Phase 3 实现的代码,完成以下任务:

  1. ✅ 为任务状态变更写单元测试(4.1)
  2. ✅ 为创建任务 API 写集成测试(4.1)
  3. ✅ 跑覆盖率报告,让 AI 补测试到 60%+(4.2)
  4. ✅ 做一次安全检查,修复高风险项(4.3)
  5. ✅ 模拟一个需求变更(如”加截止日期提醒”),走影响分析流程(4.4)