JMeter测试计划构建服务

一个通过MCP协议实现AI助手编程式构建和执行JMeter测试计划的服务,支持线程组配置、HTTP采样器添加、断言管理等核心功能。

  • by aravindksk7
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 aravindksk7/Jmeter-MCP

使用说明

JMeter Architect MCP服务器

一个模型上下文协议(MCP)服务器,使AI助手能够以编程方式构建和执行JMeter测试计划。

目录

特性

  • 创建JMeter测试计划:初始化新 .jmx 具有适当XML结构的文件
  • 配置线程组:使用可自定义的线程数、启动时间和循环数设置虚拟用户
  • 添加HTTP采样器:使用域、路径、方法和参数配置HTTP请求
  • 管理邮件头:为身份验证令牌、内容类型等添加HTTP标头管理器。
  • 添加听众:包括摘要报告、汇总报告或查看结果树
  • 配置计时器:在请求之间添加恒定或随机延迟
  • 添加断言:验证响应数据、状态代码或标头
  • 执行测试:在非GUI模式下运行测试计划并获取结果

先决条件

在设置JMeter MCP服务器之前,请确保您已经:

  1. Node.js 18+ - 下载Node.js
  2. VS Code 使用GitHub Copilot扩展
  3. Apache JMeter (可选,仅适用于 jmeter_run_test 工具)- 下载JMeter

安装

  1. 克隆存储库:

    git clone https://github.com/aravindksk7/Jmeter-MCP.git
    cd Jmeter-MCP
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    
  4. 注意完整路径 到 dist/index.js -您将需要它来配置VS代码。


VS代码设置

步骤1:配置MCP设置

打开VS代码设置并配置MCP服务器。您可以通过两种方式做到这一点:

选项A:使用VS代码设置UI

  1. 打开VS代码
  2. 按 Ctrl+Shift+P (Windows/Linux)或 Cmd+Shift+P (macOS)
  3. 键入“首选项:打开用户设置(JSON)”并选择它
  4. 添加MCP配置(见下面的JSON)

选项B:直接编辑settings.json

导航到您的VS代码设置文件:

  • 视窗: %APPDATA%\Code\User\settings.json
  • macOS: ~/Library/Application Support/Code/User/settings.json
  • Linux: ~/.config/Code/User/settings.json

添加以下配置:

Windows配置

{
  "github.copilot.chat.mcpServers": {
    "jmeter-architect": {
      "command": "node",
      "args": [
        "C:\\Users\\YourUsername\\path\\to\\Jmeter-MCP\\dist\\index.js"
      ],
      "env": {
        "PATH": "%PATH%;C:\\apache-jmeter\\bin"
      }
    }
  }
}

macOS配置

{
  "github.copilot.chat.mcpServers": {
    "jmeter-architect": {
      "command": "node",
      "args": [
        "/Users/YourUsername/path/to/Jmeter-MCP/dist/index.js"
      ],
      "env": {
        "PATH": "/usr/local/bin:/usr/bin:/bin:/opt/homebrew/bin:/path/to/apache-jmeter/bin"
      }
    }
  }
}

Linux配置

{
  "github.copilot.chat.mcpServers": {
    "jmeter-architect": {
      "command": "node",
      "args": [
        "/home/YourUsername/path/to/Jmeter-MCP/dist/index.js"
      ],
      "env": {
        "PATH": "/usr/local/bin:/usr/bin:/bin:/opt/jmeter/bin"
      }
    }
  }
}

重要:替换 YourUsername 以及符合您实际值的路径。使用绝对路径,而不是相对路径。

步骤2:重新启动VS代码

添加配置后:

  1. 保存 settings.json 文件
  2. 完全关闭VS代码
  3. 重新打开VS代码

步骤3:验证服务器连接

  1. 打开GitHub Copilot聊天(Ctrl+Shift+I 或 Cmd+Shift+I)
  2. 点击 工具图标 聊天面板中的(扳手/锤子)
  3. 你应该看看 jmeter建筑师 列出了8个可用工具:
    • jmeter_init_plan
    • jmeter_add_thread_group
    • jmeter_add_sampler
    • jmeter_add_header
    • jmeter_add_listener
    • jmeter_add_timer
    • jmeter_add_assertion
    • jmeter_run_test

如果服务器显示绿色指示灯,则表示您已准备好使用它!


可用工具

工具 说明
jmeter_init_plan 创建一个新的空JMX测试计划文件
jmeter_add_thread_group 添加线程组以定义虚拟用户
jmeter_add_sampler 将HTTP采样器(请求)添加到测试计划中
jmeter_add_header 添加HTTP标头管理器
jmeter_add_listener 添加结果侦听器以收集测试数据
jmeter_add_timer 为请求之间的延迟添加计时器
jmeter_add_assertion 添加响应断言以验证响应
jmeter_run_test 在非GUI模式下执行JMeter测试计划

刀具参数参考

jmeter_init_plan

创建一个新的空JMX测试计划文件。

参数 类型 必填 说明
filename string ✅ 要创建的.jmx文件的名称

jmeter_add_thread_group

添加线程组以定义虚拟用户。

参数 类型 必填 说明
filename string ✅ 要修改的.jmx文件
num_threads 编号 ✅ 虚拟用户数量
ramp_time 编号 ✅ 加速时间(秒)
loops 编号 ✅ 迭代次数(-1表示无限)

jmeter_add_sampler

将HTTP采样器(请求)添加到测试计划中。

参数 类型 必填 说明
filename string ✅ 要修改的.jmx文件
domain string ✅ 服务器域(例如“api.example.com”)
path string ✅ 请求路径(例如,“/api/login”)
method string ✅ HTTP方法(“GET”、“POST”等)
parameters 对象 ✅ 请求参数作为键值对

jmeter_add_header

添加HTTP标头管理器。

参数 类型 必填 说明
filename string ✅ 要修改的.jmx文件
headers 对象 ✅ 标头作为键值对

jmeter_add_listener

添加结果侦听器以收集测试数据。

参数 类型 必填 说明
filename string ✅ 要修改的.jmx文件
listener_type string ✅ “摘要”、“聚合”或“结果树”之一

jmeter_add_timer

为请求之间的延迟添加计时器。

参数 类型 必填 说明
filename string ✅ 要修改的.jmx文件
delay_ms 编号 ✅ 恒定延迟(毫秒)
random_delay_ms 编号 ❌ 随机附加延迟

jmeter_add_assertion

添加响应断言以验证响应。

参数 类型 必填 说明
filename string ✅ 要修改的.jmx文件
test_field string ✅ 'response_data、response_code或response_headers
pattern string ✅ 要匹配的图案
is_regex boolean ❌ 模式是否为正则表达式(默认值:false)

jmeter_run_test

在非GUI模式下执行JMeter测试计划。

参数 类型 必填 说明
filename string ✅ 要执行的.jmx文件
output_file string ❌ 结果文件的路径

使用示例

使用GitHub Copilot聊天

配置后,您可以通过GitHub Copilot Chat中的自然语言与JMeter MCP服务器进行交互。以下是一些示例提示:

创建简单的负载测试

提示:

Create a JMeter test plan called "api-test.jmx" with 50 users, 
10 second ramp-up, running 5 iterations. Test the endpoint 
GET https://jsonplaceholder.typicode.com/posts and add a summary report.

Copilot将做什么:

  1. 呼叫 jmeter_init_plan 创建测试文件
  2. 呼叫 jmeter_add_thread_group 50个线程,10秒加速,5个循环
  3. 呼叫 jmeter_add_sampler 对于GET请求
  4. 呼叫 jmeter_add_listener 附总结报告

基本负载测试

为REST API创建一个简单的负载测试:

User: Create a load test for https://api.example.com/users with 100 concurrent users

Copilot will execute:
├── jmeter_init_plan(filename: "load-test.jmx")
├── jmeter_add_thread_group(filename: "load-test.jmx", num_threads: 100, ramp_time: 30, loops: 10)
├── jmeter_add_sampler(filename: "load-test.jmx", domain: "api.example.com", path: "/users", method: "GET", parameters: {})
└── jmeter_add_listener(filename: "load-test.jmx", listener_type: "summary")

API认证测试

使用标头测试经过身份验证的API终结点:

User: Create a test for our authenticated API. Use Bearer token authentication,
      test POST /api/v1/orders with 20 users, and verify we get 200 response codes.

Copilot will execute:
├── jmeter_init_plan(filename: "auth-api-test.jmx")
├── jmeter_add_thread_group(filename: "auth-api-test.jmx", num_threads: 20, ramp_time: 10, loops: 5)
├── jmeter_add_header(filename: "auth-api-test.jmx", headers: {
│     "Authorization": "Bearer ${token}",
│     "Content-Type": "application/json"
│   })
├── jmeter_add_sampler(filename: "auth-api-test.jmx", domain: "api.example.com", 
│     path: "/api/v1/orders", method: "POST", 
│     parameters: {"item": "product-123", "quantity": "1"})
├── jmeter_add_assertion(filename: "auth-api-test.jmx", test_field: "response_code", pattern: "200")
└── jmeter_add_listener(filename: "auth-api-test.jmx", listener_type: "aggregate")

带有断言的压力测试

用思考时间和断言创建一个全面的压力测试:

User: Build a stress test for our checkout API with these requirements:
      - 200 concurrent users over 60 seconds
      - Random delay of 500-1500ms between requests
      - Test POST /checkout endpoint
      - Assert response contains "success"
      - Include both summary and aggregate reports

Copilot will execute:
├── jmeter_init_plan(filename: "stress-test.jmx")
├── jmeter_add_thread_group(filename: "stress-test.jmx", num_threads: 200, ramp_time: 60, loops: -1)
├── jmeter_add_header(filename: "stress-test.jmx", headers: {"Content-Type": "application/json"})
├── jmeter_add_timer(filename: "stress-test.jmx", delay_ms: 500, random_delay_ms: 1000)
├── jmeter_add_sampler(filename: "stress-test.jmx", domain: "api.example.com", 
│     path: "/checkout", method: "POST", parameters: {"cart_id": "${cartId}"})
├── jmeter_add_assertion(filename: "stress-test.jmx", test_field: "response_data", 
│     pattern: "success", is_regex: false)
├── jmeter_add_listener(filename: "stress-test.jmx", listener_type: "summary")
└── jmeter_add_listener(filename: "stress-test.jmx", listener_type: "aggregate")

运行测试

创建测试计划后,您可以运行它:

User: Run the stress-test.jmx test plan

Copilot will execute:
└── jmeter_run_test(filename: "stress-test.jmx", output_file: "results.jtl")

备注:The jmeter_run_test 该工具需要安装Apache JMeter并在您的PATH中。


故障排除

服务器未出现在VS代码中

  1. 检查路径:确保路径 dist/index.js 绝对正确
  2. 重建项目:运行 npm run build 再次
  3. 检查settings.json语法:确保有效的JSON(没有尾随逗号)
  4. 重新启动VS代码:完全关闭并重新打开

“找不到命令:节点”

确保Node.js已安装并在系统PATH中:

node --version  # Should show v18 or higher

JMX文件未创建

  1. 检查工作目录是否具有写入权限
  2. 确保文件名以结尾 .jmx
  3. 检查VS Code的输出面板是否有错误消息

运行测试时“jmeter:找不到命令”

这 jmeter_run_test 该工具需要Apache JMeter:

  1. 下载并安装 Apache JMeter
  2. 添加JMeter bin 目录到您的PATH
  3. 更新 env.PATH 在VS代码设置中

服务器显示红色/已断开连接

  1. 检查VS代码输出面板(视图→ 输出→ 选择“MCP”或“GitHub Copilot”)
  2. 在服务器启动时查找错误消息
  3. 尝试手动运行服务器进行调试:
    node dist/index.js
    

工具无法按预期工作

  1. 确保使用正确的参数类型调用工具
  2. 检查是否提供了所需的参数
  3. 验证.jmx文件名在调用之间是否一致

Claude桌面配置

如果您使用的是Claude Desktop而不是VS Code,请将其添加到您的 claude_desktop_config.json:

视窗

{
  "mcpServers": {
    "jmeter-architect": {
      "command": "node",
      "args": ["C:\\path\\to\\Jmeter-MCP\\dist\\index.js"],
      "env": {
        "PATH": "%PATH%;C:\\apache-jmeter\\bin"
      }
    }
  }
}

macOS

配置位置: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "jmeter-architect": {
      "command": "node",
      "args": ["/path/to/Jmeter-MCP/dist/index.js"],
      "env": {
        "PATH": "/usr/local/bin:/opt/homebrew/bin:/path/to/jmeter/bin"
      }
    }
  }
}

贡献

欢迎投稿!请随时提交拉取请求。

许可证

ISC许可证-请参阅 许可证 文件以获取详细信息。

作者

阿拉温德克7


Made with ❤️ for the performance testing community