Token导航 LogoToken导航TokenDH.com
Java Testing Agent logo
安全风控stdio官方级别未说明来源级核验

Java Testing Agent

MCP Server

一个自动化Java Maven项目测试工作流的工具,提供决策表测试生成、安全漏洞扫描、覆盖率分析和Git自动化功能。

工具数

9

提示词数

0

GitHub Stars

0

资源数

0
测试自动化安全JavaVS CodeVS Code

安装说明

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

作者 / 组织

ALGeek01

提供方

ALGeek01

最后核验

2026/5/17 20:20

运行时

Python

快速接入

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

命令预览

python server.py

详细介绍

Armin Tavassoli-SE333最终项目

具有决策表测试生成和安全扫描的测试代理

对于我的SE333最终项目,我构建了一个MCP(模型上下文协议)服务器,它有助于自动化Java Maven项目的测试工作流程。主要功能是基于决策表的测试生成和安全漏洞扫描,以及覆盖率分析和Git自动化工具。

这有什么作用

该代理提供了一些关键功能:

  1. 基于决策表的测试生成:通过分析方法逻辑和创建涵盖不同决策路径的测试矩阵来生成JUnit测试用例
  2. 安全漏洞扫描:扫描Java代码以查找常见的安全问题,如SQL注入、XSS、命令注入等。
  3. 覆盖率分析:查找缺少测试覆盖率的代码,并建议测试什么
  4. Git自动化:处理常见的Git工作流,如暂存、提交和创建PR

特性

覆盖工具

  • find_jacoco_path:查找JaCoCo覆盖率报告的位置(HTML、XML或exec文件)
  • missing_coverage:查看JaCoCo XML报告以查找未覆盖的代码并显示覆盖率统计数据

测试生成

  • generate_decision_table_tests:使用决策表创建JUnit测试。它

- 查看方法签名和逻辑 - 查找决策点(if/else、switch语句、三元运算符) - 构建一个包含以下内容的测试矩阵: - 空输入 - 空输入 - 有效输入 - 边界条件 - 边缘案例 - 异常情况

安全扫描

  • scan_security_vulnerabilities:扫描Java源代码以查找:

- SQL注入风险 - 命令注入漏洞 - 路径遍历问题 - 硬编码的秘密/密码 - 不安全的随机数生成 - 反序列化风险 - XSS漏洞 - 每个发现都按严重程度(高、中、低)分类

Git工具

  • git_status:显示上演、未上演和未跟踪的内容
  • git_add_all:分阶段进行所有操作(跳过构建工件)
  • git_commit:创建包含覆盖率统计信息的提交
  • git_push:推送到远程仓库
  • git_pull_request:创建PR(需要GitHub CLI,也可以手动完成)

设置

你需要的

  • Python 3.12或更高版本
  • Node.js 18+(LTS版本效果最好)
  • VS代码与聊天视图
  • Java 11+和Maven 3.6+
  • Git和GitHub帐户
  • uv包管理器(在此处安装)

安装步骤

  1. 安装uv
   # macOS/Linux
   curl -LsSf https://astral.sh/uv/install.sh | sh

   # Windows
   powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  1. 设置Python环境
   cd Armin_Tavassoli_SE333_Final_project
   uv init
   uv venv
   source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 安装依赖项
   uv sync
   # Or if that doesn't work:
   uv add mcp fastmcp httpx pypdf python-dotenv
  1. 将VS代码连接到MCP服务器

- 以HTTP模式启动服务器:

     python server.py

服务器将于启动 http://localhost:8001/sse (如果未设置MCP_port,则为端口8000) - 备注:VS Code的HTTP MCP客户端与FastMCP的SSE传输存在已知的兼容性问题。对于VS Code,您可以: - 选项A(建议用于VS代码):通过设置使用stdio模式 MCP_USE_STDIO=true 并配置VS Code以使用本地进程(请参阅 .vscode/settings.json) - 选项B:使用HTTP模式-服务器根据需要在HTTP上运行,但VS Code可能存在连接问题。HTTP模式适用于其他MCP客户端或使用curl进行测试。 - 在VS Code中,按 CTRL+SHIFT+P (或 CMD+SHIFT+P 在Mac上)并搜索“MCP:添加服务器” - 输入服务器URL: http://localhost:8001 (或 http://localhost:8000 如果使用默认端口) - 请将其命名为“SE333测试试剂” - 确保工具显示在聊天视图中

  1. 启用自动批准

- 按 CTRL+SHIFT+P 然后搜索“聊天:设置” - 启用自动批准 - 检查所有工具是否突出显示

  1. 设置Maven项目
   cd codebase
   mvn clean install
   mvn test jacoco:report

如何使用

基本工作流程

  1. 检查覆盖范围

- 使用 find_jacoco_path 查找报告 - 使用 missing_coverage 查看未涵盖的内容

  1. 生成测试

- 使用 generate_decision_table_tests 具有类名和方法名 - 例子: generate_decision_table_tests(class_name="org.apache.commons.lang3.StringUtils", method_name="isEmpty")

  1. 扫描安全问题

- 使用 scan_security_vulnerabilities 检查代码库 - 从高严重性问题开始

  1. Git工作流

- git_statusgit_add_allgit_commitgit_pushgit_pull_request

示例:生成测试

# In VS Code Chat:
generate_decision_table_tests(
    class_name="org.apache.commons.lang3.StringUtils",
    method_name="isEmpty",
    input_parameters='{"str": "String"}'
)

这将:

  1. 查看方法签名和代码
  2. 在逻辑中找到决策点
  3. 生成测试用例
  4. 为您提供可以保存的JUnit测试代码

示例:安全扫描

scan_security_vulnerabilities(
    class_name="org.apache.commons.lang3.StringUtils",
    severity="high"
)

您将返回JSON:

  • 发现了哪些漏洞
  • 它们在哪里(文件和行)
  • 它们有多严重
  • 代码片段
  • 如何修复它们

项目结构

Armin_Tavassoli_SE333_Final_project/
├── codebase/                     # Apache Commons Lang3 Maven project
│   ├── pom.xml                   # Maven config with JaCoCo
│   ├── src/
│   │   ├── main/java/            # Source code
│   │   └── test/java/            # Test code
│   └── target/
│       └── site/jacoco/          # Coverage reports
├── .github/
│   └── prompts/
│       └── tester.prompt.md     # Agent prompt config
├── server.py                     # MCP server code
├── pyproject.toml                # Python dependencies
├── README.md                     # This file
├── demo/                         # Demo materials
│   └── final_presentation.mp4   # Video (if applicable)
├── report/                       # Written report
│   └── reflection.pdf           # LaTeX reflection report
└── docs/                         # Extra docs

工具参考

find_jacoco_path

查找JaCoCo覆盖率报告在Maven项目中的位置。

输入:无

退货:报告文件的路径,如果尚未生成报告,则显示错误消息

示例:

find_jacoco_path()

______________________________________________________________________

缺失_平均值

查看JaCoCo XML报告以查找测试未涵盖的代码。

输入:

  • class_name (可选):要检查的特定类

退货:JSON格式:

  • 覆盖率摘要(行、分支、方法、类)
  • 低覆盖率班级列表
  • 关于测试内容的建议

示例:

missing_coverage(class_name="org.apache.commons.lang3.StringUtils")

______________________________________________________________________

生成决策表测试

使用决策表生成JUnit测试用例。

输入:

  • class_name (必填):完整类名,如 org.apache.commons.lang3.StringUtils
  • method_name (必填):测试方法
  • input_parameters (可选):描述参数的JSON

退货:字符串形式的JUnit测试代码

示例:

generate_decision_table_tests(
    class_name="org.apache.commons.lang3.StringUtils",
    method_name="isEmpty"
)

______________________________________________________________________

扫描安全漏洞

扫描Java代码是否存在安全问题。

输入:

  • class_name (可选):要扫描的特定类
  • severity (可选):按“全部”、“高”、“中等”或“低”筛选

退货:JSON格式:

  • 漏洞总数
  • 按严重程度细分
  • 每个的详细信息:

- 文件和行号 - 漏洞类型 - 严重性 - 描述 - 代码片段 - 如何修复它

示例:

scan_security_vulnerabilities(severity="high")

______________________________________________________________________

Git工具

git_status

显示哪些文件已暂存、未暂存或未跟踪。

git_add_all

分阶段进行所有更改(构建工件除外)。

git_comit(消息)

创建一个commit。该消息将包括覆盖率统计数据(如果可用)。

git_push(远程,分支)

将提交推送到远程仓库。

git_pull_request(基础、标题、正文)

创建拉取请求。您需要安装GitHub CLI,也可以手动创建。

故障排除

服务器无法启动

如果 python server.py 失败:

  1. 检查Python版本: python --version (需要3.12+)
  2. 确保已安装依赖项: uv sync
  3. 检查虚拟环境是否已激活
  4. 查看端口8000是否已在使用中

找不到JaCoCo报告

如果 find_jacoco_path 表示未找到报告:

  1. 先运行测试: cd codebase && mvn clean test
  2. 生成报告: mvn jacoco:report
  3. 检查目录是否存在: ls codebase/target/site/jacoco/

VS代码无法连接

如果聊天中没有显示工具:

  1. 确保服务器确实在运行(检查终端)
  2. 在VS代码设置中仔细检查服务器URL
  3. 尝试重新启动VS代码
  4. 确保启用了自动批准
  5. 检查服务器日志是否有任何错误

测试生成失败

如果 generate_decision_table_tests 给出错误:

  1. 确保类名是完全限定的(例如。, org.apache.commons.lang3.StringUtils)
  2. 检查方法名称拼写是否正确
  3. 验证源文件是否存在于 codebase/src/main/java/
  4. 确保文件可读

安全扫描未发现任何内容

如果 scan_security_vulnerabilities 返回空结果:

  1. 如果代码实际上是安全的,这可能没问题
  2. 尝试扫描特定类: scan_security_vulnerabilities(class_name="...")
  3. 尝试 severity="all" 看到一切
  4. 确保Java文件在 codebase/src/main/java/

Git命令失败

如果Git工具返回错误:

  1. 确保Git已初始化: git status
  2. 检查您的Git凭据是否已设置
  3. 对于 git_pull_request:安装GitHub CLI(gh)或手动创建PR
  4. 确保您具有对存储库的写访问权限

开发说明

添加新工具

如果要添加新的MCP工具:

  1. 使用创建函数 @mcp.tool() 装饰器
  2. 写一个好的文档字符串
  3. 将工具名称添加到列表中 tester.prompt.md
  4. 更新此自述文件

测试

要测试代理:

  1. 启动服务器: python server.py
  2. 在VS Code Chat中,逐一尝试每个工具
  3. 检查输出是否正确
  4. 尝试一些无效输入以测试错误处理

跟踪结果

覆盖指标

要跟踪覆盖率的提高,请使用JaCoCo报告。运行后 mvn test jacoco:report,您可以:

  1. 查看HTML报告:打开 codebase/target/site/jacoco/index.html 在浏览器中
  2. 使用MCP工具:

- find_jacoco_path 查找报告 - missing_coverage 获取详细统计数据

报告显示:

  • 线路覆盖率
  • 分行覆盖率
  • 方法覆盖率
  • 班级覆盖率

用于演示:通过以下方式比较承保前后:

  • 运行初始覆盖范围: cd codebase && mvn clean test jacoco:report
  • 使用代理生成测试
  • 再次运行覆盖范围: mvn test jacoco:report
  • 比较指标

信息系统安全度量

跟踪安全改进:

  • 发现的漏洞总数(使用 scan_security_vulnerabilities)
  • 按严重程度细分(高/中/低)
  • 修复进度
  • 受影响的文件

Git提交历史记录

如果你使用Git自动化工具,你可以通过提交历史记录来跟踪改进:

  • 每个提交都包括覆盖率统计数据
  • 查看提交消息以查看随时间推移的进度
  • 使用 git log 查看改进时间表

未来想法

稍后我想补充几点:

  • 与突变检测(PIT)的整合
  • 支持Java以外的其他语言
  • 更好的测试用例优先级
  • 自动化测试重构
  • CI/CD集成
  • 实时覆盖监控
  • 更高级的安全模式检测

许可证

这是我在德保罗大学的SE333课程项目。

代码库(Apache Commons Lang3)使用Apache许可证2.0。

联系

学生:阿明·塔瓦索利\ 课程:SE333-软件代理\ 机构:德保罗大学

目录标签

目录标签

测试自动化安全JavaVS Code本地部署安全扫描代码覆盖率Git自动化Java测试

支持客户端

VS Code

接入字段

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

stdio

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

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiononelocal-only

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

安装前确认

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

来源信息

继续浏览同类 MCP