11 KiB
复盘文档 - 测试执行(重构版)
元数据
- 需求编号:002-03
- 复盘时间:2026-02-04
- 复盘人:AI Assistant
- 状态:已完成
- 版本:v2.0.0
复盘概述
本次复盘对 Salesforce Apex 测试执行功能的重构过程进行全面回顾。重构的主要目标是优化数据库表结构、统一错误码体系、完善日志记录和监控、提升批量插入性能。通过重构,我们成功提升了代码质量、可维护性和性能。
目标与实际产出对比
目标
- 优化数据库表结构,减少数据冗余
- 统一错误码体系,覆盖所有异常情况
- 完善日志记录和监控
- 批量插入优化,提升性能
- 修复代码生成过程中的问题
实际产出
- ✅ 成功优化数据库表结构,复用 3 张表,新建 2 张表
- ✅ 统一错误码体系,定义 20 个标准错误码(APEX_TEST_001 ~ APEX_TEST_020)
- ✅ 完善日志记录,使用 Slf4j 日志框架,添加详细的操作日志和错误日志
- ✅ 批量插入优化,使用 MyBatis 批量插入,提升大数据量插入性能
- ✅ 修复 6 个关键问题(VO 字段缺失、方法未实现、依赖注入缺失等)
- ✅ 生成 22 个代码文件,约 1800 行代码
- ✅ 提供 8 个 REST API 接口
成功经验
1. 复用策略的成功应用
经验描述:通过复用 002-02 的 3 张数据库表(ApexTestResult、ApexTestFailure、ApexCodeCoverage),我们成功减少了数据冗余,同时新建 2 张表(ApexTestSuccess、ApexFlowCoverage)满足新需求。这种"复用 + 新建"的混合策略在保证功能完整性的同时,优化了数据库结构。
可推广性:在类似的功能重构中,可以优先考虑复用已有的数据库表和代码,避免重复造轮子。
2. 统一错误码体系的设计
经验描述:定义 20 个标准错误码(APEX_TEST_001 ~ APEX_TEST_020),覆盖参数校验、连接失败、执行失败、数据错误、系统错误等所有场景。每个错误码都有明确的含义和使用场景,便于问题定位和用户体验优化。
可推广性:在复杂功能的开发中,提前设计统一的错误码体系,可以提高代码的可维护性和用户体验。
3. 代码修复的系统性
经验描述:在代码生成后,我们进行了系统性的代码扫描和修复,发现并修复了 6 个关键问题(VO 字段缺失、方法未实现、依赖注入缺失等)。这种系统性的代码审查确保了代码质量。
可推广性:在代码生成后,进行系统性的代码审查和修复,可以显著提高代码质量,减少潜在问题。
4. 详细的会话记录
经验描述:从阶段 1 到阶段 8,我们完整记录了每个阶段的执行过程、关键决策、问题和解决方案。这种详细的会话记录为后续的复盘和知识传承提供了宝贵的资料。
可推广性:在复杂的开发任务中,详细记录会话过程,可以提高项目的可追溯性和知识传承效率。
改进点
1. 代码生成器的配置优化
问题描述:代码生成器生成的代码存在一些问题(如 VO 字段缺失、方法未实现等),需要手动修复。
改进建议:优化代码生成器的模板配置,确保生成的代码更加完整和规范,减少手动修复的工作量。
责任人:项目团队 时间节点:下一个迭代
2. 单元测试的补充
问题描述:当前代码缺少单元测试,测试覆盖率不达标。
改进建议:补充完整的单元测试,确保测试覆盖率不低于 80%,覆盖正常场景、异常场景和边界场景。
责任人:开发团队 时间节点:下一个迭代
3. 集成测试的完善
问题描述:缺少与 Salesforce API 的集成测试,无法验证实际调用效果。
改进建议:补充集成测试,验证与 Salesforce API 的集成效果,确保功能的正确性和稳定性。
责任人:开发团队 时间节点:下一个迭代
4. API 文档的自动化生成
问题描述:API 文档需要手动编写,耗时且容易出错。
改进建议:探索使用 Swagger 等工具自动生成 API 文档,提高文档的准确性和维护性。
责任人:项目团队 时间节点:下一个迭代
问题分析
问题 1:VO 类字段不匹配
问题描述:RunTestsResultVo 缺少 successes 和 flowCoverage 字段,TestFailureVo 字段与 Salesforce API 不匹配。
根因分析:
- 代码生成器的模板配置不完整,没有包含所有必要的字段
- 手动实现的代码与 Salesforce API 的字段映射不准确
解决方案:
- 修复 RunTestsResultVo,添加 successes 和 flowCoverage 字段
- 修复 TestFailureVo,确保字段与 Salesforce API 匹配
- 在代码生成器的模板中增加字段完整性检查
预防措施:
- 在代码生成前,详细检查 Salesforce API 的字段定义
- 在代码生成后,进行系统性的字段匹配检查
问题 2:Service 层方法缺失
问题描述:ApexTestServiceImpl 缺少成功详情转换逻辑,queryTestFailureList 和 queryCodeCoverage 方法未实现。
根因分析:
- 代码生成器生成的 Service 层代码不完整
- 手动实现的代码遗漏了部分方法
解决方案:
- 补充 ApexTestServiceImpl 的成功详情转换逻辑
- 实现 queryTestFailureList 和 queryCodeCoverage 方法
- 在代码生成器的模板中增加方法完整性检查
预防措施:
- 在代码生成前,详细检查设计文档中的方法定义
- 在代码生成后,进行系统性的方法完整性检查
问题 3:依赖注入缺失
问题描述:缺少 IDataiApexTestFailureService 和 IDataiApexCodeCoverageService 注入。
根因分析:
- 代码生成器生成的 Controller 层代码不完整
- 手动实现的代码遗漏了部分依赖注入
解决方案:
- 补充 IDataiApexTestFailureService 和 IDataiApexCodeCoverageService 的依赖注入
- 在代码生成器的模板中增加依赖注入完整性检查
预防措施:
- 在代码生成前,详细检查设计文档中的依赖关系
- 在代码生成后,进行系统性的依赖注入检查
行动计划
| 序号 | 行动项 | 责任人 | 时间节点 | 优先级 |
|---|---|---|---|---|
| 1 | 优化代码生成器模板配置 | 项目团队 | 下一个迭代 | 高 |
| 2 | 补充单元测试,确保覆盖率不低于 80% | 开发团队 | 下一个迭代 | 高 |
| 3 | 补充集成测试,验证与 Salesforce API 的集成 | 开发团队 | 下一个迭代 | 中 |
| 4 | 探索使用 Swagger 自动生成 API 文档 | 项目团队 | 下一个迭代 | 中 |
| 5 | 完善代码审查流程,增加字段和方法完整性检查 | AI Assistant | 立即执行 | 高 |
| 6 | 完善依赖注入检查流程 | AI Assistant | 立即执行 | 高 |
提取模式
有效的 Prompt 技巧
1. 引用真源
技巧描述:在提示词开头引用需求文档、设计文档、决策记录等真源文档的链接,可以确保生成的代码符合需求和设计要求。
应用示例:
## 引用真源
- **需求文档**:[测试执行需求](../../requirements/sub/2026-01-28-002-03-测试执行.md)
- **设计文档**:[测试执行设计(重构版)](../../design/2026-02-04-002-03-测试执行-设计.md)
- **决策记录**:[测试执行技术选型(重构版)](../../decisions/2026-02-04-002-03-ADR-测试执行技术选型.md)
2. 详细的输出格式要求
技巧描述:在提示词中明确指定需要生成的文件、路径、格式等,可以提高生成代码的准确性和规范性。
应用示例:
## 输出格式要求
### 1. Controller 层
- **文件路径**:`datai-salesforce-apex/src/main/java/com/datai/apex/controller/ApexTestController.java`
- **类名**:`ApexTestController`
- **方法**:`runAllTests()`、`runTestsByClasses()`、`runTestsByPackages()`、`runTestsByMethods()`
3. 统一错误码体系
技巧描述:在提示词中定义统一的错误码体系,可以确保生成的代码有完善的错误处理机制。
应用示例:
## 统一错误码体系
- APEX_TEST_001:参数校验失败
- APEX_TEST_002:连接失败
- APEX_TEST_003:执行失败
- ...
避免的坑
1. 不要忽略代码生成后的审查
坑描述:代码生成器生成的代码可能存在不完整或不准确的问题,如果忽略代码生成后的审查,会导致代码质量问题。
避免方法:
- 代码生成后,进行系统性的代码审查
- 检查字段完整性、方法完整性、依赖注入完整性
- 修复发现的问题
2. 不要忽略测试要求
坑描述:在提示词中忽略测试要求,会导致生成的代码缺少单元测试,降低代码的质量和可靠性。
避免方法:
- 在提示词中明确指定测试要求
- 要求生成单元测试代码
- 确保测试覆盖率不低于 80%
3. 不要违反项目规则
坑描述:在代码生成过程中违反项目规则(如不遵循若依框架规范),会导致生成的代码不符合项目要求,需要重新生成。
避免方法:
- 在提示词中明确指定项目规则
- 要求遵循若依框架规范
- 进行代码规范检查
模板迭代
经过本次复盘,发现当前的提示词模板在以下方面可以优化:
1. 代码生成后的审查清单
在提示词模板中增加代码生成后的审查清单,包括:
- 字段完整性检查
- 方法完整性检查
- 依赖注入完整性检查
- 异常处理完整性检查
- 日志记录完整性检查
2. 测试要求的具体化
在提示词模板中增加更具体的测试要求,包括:
- 单元测试覆盖率要求(不低于 80%)
- 测试场景要求(正常场景、异常场景、边界场景)
- 测试框架要求(JUnit 5 + Mockito)
3. 代码规范的具体化
在提示词模板中增加更具体的代码规范要求,包括:
- 若依框架的包结构规范
- 若依框架的注解使用规范
- 若依框架的异常处理规范
- 若依框架的权限控制规范