Token导航 LogoToken导航TokenDH.com
Se333 Autonomous Testing Agent logo
开发工具stdio官方级别未说明来源级核验

Se333 Autonomous Testing Agent

MCP Server

一个基于模型上下文协议(MCP)的自动化测试代理,用于生成和改进单元测试、测量代码覆盖率、修复缺陷并提交已验证的更改。

工具数

3

提示词数

0

GitHub Stars

0

资源数

0
自动化测试JavaVS CodeVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Daniel-Carbajal

提供方

Daniel-Carbajal

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run main.py

详细介绍

SE333最终项目——基于MCP的自主测试代理

概述

该项目实现了 自主、覆盖驱动的测试代理 使用 模型上下文协议(MCP)代理迭代地生成和改进Java应用程序的单元测试,使用JaCoCo测量代码覆盖率,修复发现的缺陷,并使用基于主干的工作流将经过验证的更改提交到GitHub。

该系统展示了一个端到端的自动化测试循环:

Generate tests → Run tests → Measure coverage → Identify gaps → Improve tests → Fix bugs → Commit → Repeat

______________________________________________________________________

建筑

1.MCP服务器(Python、FastMCP)

提供代理可通过SSE传输调用的工具:

  • jacoco_parser(xml_path) --解析JaCoCo XML并返回每个包/类/方法的覆盖率和需要测试的目标
  • scan_maven_vulbility(pom_path) --查询OSV的Maven依赖漏洞(安全预检查)
  • 添加(a,b) --示例第1阶段工具(连接验证)

运输: SSE (VS代码MCP兼容)

______________________________________________________________________

2.代理工作区(Java+提示配置)

包含:

  • Spark Java mini web应用程序正在测试中
  • 代理生成/改进的JUnit测试套件
  • JaCoCo构建集成
  • MCP提示配置

密钥文件:

.github/prompts/tester.prompt.md

此提示定义了测试代理的自主行为,包括工具:

  • 模型+MCP工具和用法
  • 迭代测试工作流程
  • Git自动化规则
  • 覆盖率驱动的决策逻辑

______________________________________________________________________

3.迭代测试流程

每次代理迭代执行:

  1. 依赖关系的安全预检查
  2. 运行Maven测试
  3. 查找JaCoCo XML报告
  4. 通过MCP工具分析覆盖率
  5. 选择低覆盖率方法/类别
  6. 生成或改进测试
  7. 重新运行测试
  8. 如果需要,修复失败的代码
  9. 提交功能分支上的更改
  10. 公开公关→ 合并到主

______________________________________________________________________

存储库结构

MCP Server/                # MCP server workspace
  main.py -> mcp server
  pyproject.toml
  uv.lock

Agent Workspace (se333-Demo)/              # Agent + Java app workspace
  src/main/java/
  src/test/java/
  pom.xml
  .github/prompts/tester.prompt.md

______________________________________________________________________

安装说明

先决条件

  • Python 3.11+
  • Node.js(用于VS Code MCP扩展运行时)
  • Java 17+
  • Maven 3.9+
  • 带有MCP扩展的VS代码
  • Git+GitHub账号

______________________________________________________________________

MCP服务器设置

cd MCP Server
uv sync
uv run main.py

服务器启动时间:

http://127.0.0.1:8000/sse

配置VS代码MCP:

{
  "servers": {
    "se333-mcp-server": {
      "type": "sse",
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

启用 YOLO/自动批准 工具执行模式。

______________________________________________________________________

Java项目设置

cd Agent Workspace (se333-Demo)
mvn clean test

JaCoCo报告生成于:

target/site/jacoco/jacoco.xml

______________________________________________________________________

运行自治代理

在VS Code中打开项目并运行MCP提示符:

.github/prompts/tester.prompt.md

代理人将:

  • 运行测试
  • 解析覆盖率
  • 生成新测试
  • 提高覆盖率
  • 修复bug
  • 提交更改

______________________________________________________________________

Git工作流

代理使用基于中继的开发:

  • 每次迭代创建分支
  • 提交测试/代码改进
  • 打开拉取请求
  • 验证后合并

历史进程示例:

test: add AuthenticationController edge cases
coverage: increase HTMLRenderer branch coverage
fix: resolve null handling in DashboardController

______________________________________________________________________

覆盖率驱动的决策

代理优先考虑:

  • 未发现的方法
  • 分支覆盖率低
  • 控制器和服务
  • 错误/边缘路径

选择来源: jacoco_parser MCP工具输出。

______________________________________________________________________

技术文档

MCP工具API参考

jacoco_parser(xml_path)

解析JaCoCo XML覆盖率报告并提取覆盖率统计信息

输入:

xml_path: string

JaCoCo XML文件的路径(通常在target/site/jaco/JaCoCo.XML中)

输出: 返回结构化覆盖数据,包括:

{
  packages: [...],
  classes: [...],
  methods: [...],
  methods_needing_coverage: [...]
}

用于识别未发现的方法、针对测试生成和优先考虑覆盖率改进。

scan_maven_vulbility(pom_path)

使用OSV数据库执行依赖性漏洞扫描。

输入:

pom_path: string

Maven之路 pom.xml文件 文件。

输出: 返回检测到的漏洞,包括:

{
  dependency: "...",
  version: "...",
  cve: "...",
  severity: "...",
  description: "..."
}

用于测试生成前的安全预检查,识别有风险的依赖关系,并演示具有安全意识的自主工具。

添加(a,b)

MCP连接工具示例。

输入:

a: number
b: number

输出:

sum = a + b

用于第一阶段MCP连接测试,并确保MCP服务器和代理可以在其他MCP工具可用之前进行通信。

______________________________________________________________________

代理决策逻辑

测试代理遵循覆盖率引导的推理过程。

决策优先事项包括:

  1. 覆盖率为0%的方法
  2. 分支覆盖率低的方法
  3. 控制器端点
  4. 服务逻辑
  5. 边缘案例和零处理

代理使用以下反馈信号: - 低覆盖率->生成新测试 - 失败测试->检查代码并应用修复 - 发现新分支->生成其他测试 - 安全问题->标记并修复依赖关系

______________________________________________________________________

再现迭代

要重现项目中显示的结果:

  1. 启动MCP服务器
cd MCP Server
uv sync
uv run main.py
  1. 构建Java项目
cd Agent Workspace (se333-Demo)
mvn clean test
  1. 运行代理

从VS Code聊天窗口执行提示:

.github/prompts/tester.prompt.md

请遵循以下流程:

  1. 测试执行
  2. 覆盖率解析
  3. 目标选择
  4. 测试生成
  5. 覆盖率提高
  6. Bug检测和修复
  7. Git提交已创建

______________________________________________________________________

结果

该系统实现了:

  • 自动生成测试
  • 迭代中的覆盖率提高
  • 自主错误检测和修复
  • 可复制的MCP驱动工作流程
  • Git可审计的进化
  • Maven依赖漏洞预检查

查看覆盖范围的改进 在这里

______________________________________________________________________

常见问题排查

MCP工具未出现在VS代码中

检查:

  • MCP服务器仍在运行
  • URL与配置匹配
  • SSE端点可访问

''' http://127.0.0.1:8000/sse '''

未找到JaCoCo XML

确保测试成功运行: ''' mvn清洁测试 ''' 预期文件: ''' target/site/jaco/jacoco.xml '''

MCP服务器无法启动

检查Python环境: ''' python--版本 ''' 然后重新安装依赖关系: ''' UV同步 '''

______________________________________________________________________

反思

本项目演示了MCP如何实现:

  • 工具增强LLM开发
  • 反馈驱动的测试循环
  • 自主软件和安全维护
  • 测试与DevOps的集成

关键见解:覆盖率反馈似乎足以指导迭代测试生成,而无需人工提示。我仍然认为在发出合并拉取请求之前进行审查很重要,因此我在这个阶段允许人工审查以及防止LLM使用外部工具的最佳做法之一是在提示中设置停止条件。

深度反射 '报告/SE333最终反思.pdf'

限制和挑战

目前,我认为LLM生成的测试仍然需要偶尔进行人工审查,特别是在投入生产之前。此外,并非所有覆盖率指标都能始终反映测试的行为正确性。 法学硕士有时喜欢“做自己的事”。在其发展轨迹中,它可能会尝试使用外部工具或创建自己的工具,这需要得到提示。

未来工作

我认为未来的一些改进是切实可行的:

  • 使用CodeQL(SAST)在代码库中进行静态分析安全漏洞检查
  • 与突变检测相结合
  • 使用GitHub Actions实现CI/CD自动化

______________________________________________________________________

作者

丹尼尔·卡巴哈尔 SE333——软件测试和质量保证 德保罗大学

______________________________________________________________________

许可证

学术项目——仅供教育使用。

目录标签

目录标签

自动化测试JavaVS Code混合部署代码覆盖率单元测试MCP协议JaCoCo

支持客户端

VS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP