麦瓣健康麦瓣健康
首页
  • APP产品开发方案
  • 商业调查报告
  • 后端技术架构
  • Docker Compose部署指南
  • 技师端-功能模块与微服务对应关系
  • 数据库设计
  • 分布式事务一致性
  • 日志管理与配置
  • Netdata监控系统
  • 系统总览
  • 文档导航
  • 代码审计智能体
  • 测试生成智能体
  • 运维诊断智能体
  • APP测试智能体
  • API自动化测试多智能体协作系统
  • 项目规划
  • 开发工作手册
  • 开发周期管理
  • 任务看板总览
  • Week 3任务看板
  • Week 3周例会
  • Week 4任务看板
  • Week 5任务看板
  • Week 6任务看板
  • APP测试设备采购清单
  • 用户端APP
  • 用户端APP功能脑图
  • 技师端APP
  • 技师端APP功能脑图
  • 后台管理
  • 大数据屏幕
  • 技师端-账户系统需求明细
原型图(Demo)
GitHub
首页
  • APP产品开发方案
  • 商业调查报告
  • 后端技术架构
  • Docker Compose部署指南
  • 技师端-功能模块与微服务对应关系
  • 数据库设计
  • 分布式事务一致性
  • 日志管理与配置
  • Netdata监控系统
  • 系统总览
  • 文档导航
  • 代码审计智能体
  • 测试生成智能体
  • 运维诊断智能体
  • APP测试智能体
  • API自动化测试多智能体协作系统
  • 项目规划
  • 开发工作手册
  • 开发周期管理
  • 任务看板总览
  • Week 3任务看板
  • Week 3周例会
  • Week 4任务看板
  • Week 5任务看板
  • Week 6任务看板
  • APP测试设备采购清单
  • 用户端APP
  • 用户端APP功能脑图
  • 技师端APP
  • 技师端APP功能脑图
  • 后台管理
  • 大数据屏幕
  • 技师端-账户系统需求明细
原型图(Demo)
GitHub
  • AI智能体系统

    • /技术架构/AI智能体系统/README.html
    • AI智能体系统 - 文档导航
    • 代码审计智能体设计文档
    • 测试生成智能体设计文档
    • 运维诊断智能体设计文档
    • APP测试智能体设计文档
    • /技术架构/AI智能体系统/API自动化测试多智能体协作系统架构方案.html

测试生成智能体设计文档

智能体名称: 测试生成智能体 (Test Generation Agent) 优先级: ⭐⭐⭐⭐ (高优先级) 技术栈: Python 3.11 + LangGraph + Claude 3.5 Sonnet 文档版本: v1.0 最后更新: 2025-10-28


一、功能概述

基于LangGraph构建的测试生成智能体,自动分析代码逻辑并生成高质量、可运行的测试用例,覆盖单元测试、集成测试和端到端测试。

核心价值

  • 提升效率: 减少70%的测试编写时间
  • 提高覆盖率: 自动识别未覆盖的代码路径并补充测试
  • 保证质量: 生成的测试代码可编译可运行,符合团队规范
  • 持续改进: 基于测试执行结果自动优化测试用例

二、LangGraph工作流设计

2.1 状态定义

输入状态:

  • source_code: 源代码内容
  • language: 编程语言(Java/Python/JavaScript)
  • test_framework: 测试框架(JUnit5/TestNG/Pytest)
  • coverage_requirement: 覆盖率要求(如80%)
  • existing_tests: 现有测试代码(可选)

中间状态:

  • code_structure: 代码结构分析结果(类、方法、依赖)
  • test_scenarios: 测试场景列表
  • generated_tests: 生成的测试代码
  • compilation_result: 编译验证结果
  • coverage_analysis: 覆盖率分析结果

输出状态:

  • final_test_code: 最终测试代码
  • coverage_report: 覆盖率报告
  • improvement_suggestions: 改进建议

2.2 智能体节点

节点1: 代码结构分析节点

  • 解析类结构、方法列表、参数类型、返回值类型
  • 识别依赖关系(注入的Service、DAO等)
  • 分析方法复杂度和调用关系

节点2: 测试场景识别节点

  • 识别正常流程测试场景
  • 识别边界条件(null、空字符串、极值)
  • 识别异常场景(异常抛出、错误处理)
  • 识别并发场景(如适用)

节点3: 测试代码生成节点

  • 生成测试类和测试方法
  • 自动生成Mock对象
  • 生成测试数据和断言
  • 遵循团队命名规范

节点4: 编译验证节点

  • 尝试编译生成的测试代码
  • 识别编译错误(导入缺失、类型错误等)
  • 失败时触发修复节点

节点5: 测试执行节点

  • 运行生成的测试用例
  • 收集测试结果(通过/失败)
  • 收集覆盖率数据

节点6: 覆盖率分析节点

  • 分析代码覆盖率
  • 识别未覆盖的代码路径
  • 判断是否需要补充测试

节点7: 补充测试节点

  • 针对未覆盖路径生成额外测试
  • 循环直到达到覆盖率要求

节点8: 优化建议节点

  • 分析测试质量(断言充分性、Mock合理性)
  • 提供测试改进建议
  • 推荐测试工具和最佳实践

2.3 工作流路由

开始
  ↓
[1. 代码结构分析] → 解析类和方法
  ↓
[2. 测试场景识别] → 识别测试场景
  ↓
[3. 测试代码生成] → 生成测试代码
  ↓
[4. 编译验证] → 编译检查
  ↓ 失败
修复代码 → 重新生成
  ↓ 成功
[5. 测试执行] → 运行测试
  ↓
[6. 覆盖率分析] → 检查覆盖率
  ↓ 不达标
[7. 补充测试] → 生成补充测试
  ↓ 达标
[8. 优化建议] → 提供改进建议
  ↓
结束

三、测试类型支持

3.1 单元测试生成

Java + JUnit 5 + Mockito

  • 测试类命名: XxxTest
  • 测试方法命名: should_ExpectedBehavior_When_StateUnderTest
  • Mock框架: Mockito
  • 断言库: AssertJ

Python + Pytest

  • 测试文件命名: test_xxx.py
  • 测试方法命名: test_xxx_should_xxx
  • Mock框架: unittest.mock
  • 断言: pytest原生断言

JavaScript + Jest

  • 测试文件命名: xxx.test.js
  • 测试方法命名: describe/it结构
  • Mock框架: Jest内置Mock
  • 断言: Jest Matchers

3.2 集成测试生成

Spring Boot Test

  • 使用@SpringBootTest注解
  • 自动配置测试环境
  • 支持@MockBean模拟外部依赖
  • 生成API接口测试

Django Test

  • 使用TestCase或APITestCase
  • 自动创建测试数据库
  • 生成API端点测试

3.3 端到端测试生成

基于用户故事生成测试

  • 输入: 用户故事或需求描述
  • 生成: Selenium/Playwright测试脚本
  • 包含: 页面操作、断言、截图

四、Prompt模板

4.1 单元测试生成Prompt

你是一个资深的测试工程师,请为以下代码生成完整的单元测试。

## 源代码
{source_code}

## 代码结构分析
- 类名: {class_name}
- 方法列表: {methods}
- 依赖关系: {dependencies}

## 测试场景
{test_scenarios}

## 要求
1. 使用{test_framework}框架
2. 使用Mockito模拟依赖
3. 使用AssertJ进行断言
4. 测试方法名清晰表达测试意图
5. 覆盖所有公共方法
6. 包含正常流程、边界条件、异常场景
7. 添加必要的注释

## 输出格式
只输出完整可运行的测试代码,不要包含其他说明。

4.2 测试修复Prompt

以下测试代码编译失败,请修复编译错误:

## 测试代码
{test_code}

## 编译错误
{compilation_errors}

## 要求
1. 修复所有编译错误
2. 保持测试逻辑不变
3. 只输出修复后的完整代码

4.3 测试补充Prompt

当前测试覆盖率不足,请补充测试用例:

## 源代码
{source_code}

## 现有测试
{existing_tests}

## 未覆盖的代码路径
{uncovered_paths}

## 覆盖率报告
- 当前覆盖率: {current_coverage}%
- 目标覆盖率: {target_coverage}%

## 要求
1. 针对未覆盖路径生成新的测试用例
2. 保持与现有测试一致的风格
3. 确保新测试可运行

五、集成方案

5.1 触发方式

Git Hook触发

  • 提交代码时自动检测是否有测试
  • 缺少测试时自动生成并提交

CLI命令触发

# 为指定文件生成测试
maiban-ai test generate --file src/service/UserService.java

# 为整个模块生成测试
maiban-ai test generate --module user-service

# 补充测试提升覆盖率
maiban-ai test supplement --coverage 80

IDE插件触发

  • 右键菜单: "Generate Tests with AI"
  • 快捷键触发
  • 实时预览生成的测试

5.2 与CI/CD集成

GitLab CI Pipeline

ai-test-generation:
  stage: test
  script:
    - maiban-ai test generate --source-dir=src/
    - mvn test
    - maiban-ai test analyze-coverage --min-coverage=80%
  artifacts:
    reports:
      coverage_report:
        coverage_format: cobertura
        path: target/site/jacoco/jacoco.xml

六、成本控制

成本目标: <$5/次生成

优化策略:

  1. 缓存代码结构分析结果(7天)
  2. 批量生成多个方法的测试(减少API调用)
  3. 简单方法使用Claude Haiku($0.25/1M)
  4. 复杂业务逻辑使用Claude Sonnet($3/1M)
  5. 生成失败后重试最多2次

七、数据存储

测试生成任务表 (test_generation_tasks)

  • 任务ID、源代码文件、语言、框架
  • 生成状态、生成耗时、Token消耗
  • 测试代码、覆盖率、质量评分

测试用例库 (test_cases_library)

  • 通用测试模板和最佳实践
  • 按语言和框架分类
  • 向量化存储,支持相似场景检索

八、效果评估

效率指标:

  • 测试编写时间: 减少70%
  • 测试生成成功率: >90%
  • 生成的测试可运行率: >95%

质量指标:

  • 测试覆盖率: 平均提升至85%
  • 断言充分性: >90%
  • Bug发现能力: 与人工测试相当

文档维护者: AI团队 技术负责人: 待定 创建日期: 2025-10-28 最后更新: 2025-10-28

在 GitHub 上编辑此页
最后更新: 2025/11/10 10:53
贡献者: David, Claude Code
Prev
代码审计智能体设计文档
Next
运维诊断智能体设计文档