JMeter测试生成与执行服务

JMeter MCP Server是一个自动化的JMeter测试生成与执行解决方案,支持Docker集成和全面的性能分析,适用于API和UI测试。

  • by chandanvars
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 chandanvars/jmeter-mcp-server

使用说明

🎯 JMeter MCP服务器

一个强大的模型上下文协议(MCP)服务器,用于通过Docker集成和全面的性能分析自动生成和执行JMeter测试。

🌟 概述

JMeter MCP Server是一个简化的、生产就绪的测试解决方案,与MCP兼容的客户端(如Claude Desktop、VS Code)集成,生成复杂的JMeter测试计划,并通过Docker自动执行,并进行全面的性能分析。

🚀 主要特点:

  • 2基本工具:简化以实现最高效率
  • 完全Docker自动化:无需人工干预
  • 多格式报告:HTML、Markdown和JSON输出
  • 交互式可视化:Chart.js驱动的性能图表
  • 专业分析:趋势检测和瓶颈识别
  • API和UI测试:支持API和web界面测试
  • 实时执行:装有实时结果的集装箱JMeter

🛠️ 核心工具

1. 🚀 generate_jmeter_script -高级测试生成

创建具有现代功能的全面JMeter测试计划:

特征:

  • 具有可配置模式的多线程负载模拟
  • 数据驱动测试的CSV数据参数化
  • 响应关联和提取(JSON路径、正则表达式)
  • 多种定时器类型和真实的负载模式
  • 自定义标头、身份验证和会话管理
  • 响应断言和全面验证
  • 自动生成文件 output/ 目录

例子:

{
  "testName": "API Performance Test",
  "baseUrl": "https://api.example.com",
  "threadGroup": { 
    "numThreads": 50, 
    "rampUpTime": 120, 
    "loops": 10 
  },
  "requests": [
    {
      "name": "Login",
      "method": "POST", 
      "path": "/auth/login",
      "headers": { "Content-Type": "application/json" },
      "body": "{\"username\":\"${username}\",\"password\":\"${password}\"}",
      "extractors": [
        {
          "variableName": "authToken", 
          "jsonPath": "$.token"
        }
      ],
      "assertions": [
        {
          "type": "responseCode",
          "value": "200"
        }
      ]
    }
  ],
  "csvDataSet": {
    "fileName": "users.csv", 
    "variableNames": "username,password",
    "delimiter": ","
  }
}

2. 🐳 execute_jmeter_script -Docker执行引擎

在容器化环境中自动执行JMeter测试,并进行全面分析:

特征:

  • Docker自动化:用途 justb4/jmeter:latest 用于一致执行
  • 数据载体安装:主机和容器之间无缝的数据交换
  • 资源管理:可配置的CPU和内存限制
  • 性能分析:多维性能指标
  • HTML报告:带有Chart.js可视化的交互式仪表板
  • 趋势分析:自动瓶颈检测和建议
  • 多种格式:HTML、Markdown和JSON报告

例子:

{
  "jmxFile": "API_Performance_Test.jmx",
  "generateReports": true,
  "resourceAnalysis": true,
  "cpuLimit": "2",
  "maxMemory": "2g"
}

📊 性能分析功能

执行引擎提供全面的性能分析:

🎯 关键指标

  • 响应时间统计(最小值、最大值、平均值、百分位数)
  • 吞吐量分析(请求/秒,字节/秒)
  • 错误率跟踪和分类
  • 资源利用监控
  • 负载模式分析

📈 交互式报告

  • HTML仪表板:使用Chart.js的交互式图表
  • 趋势分析:随时间变化的性能趋势
  • 瓶颈检测:自动问题识别
  • 建议:基于AI的优化建议
  • 原始数据:用于自定义分析的JTL文件

🎨 可视化类型

  • 随时间变化的响应时间折线图
  • 吞吐量指标的条形图
  • 用于误差分布的饼图
  • 响应时间分布直方图

⚡ 快速开始

🖥️ 安装

# Clone the repository
git clone https://github.com/chandanvars/jmeter-mcp-server.git
cd jmeter-mcp-server

# Install dependencies  
npm install

# Start the MCP server
npm start

🐳 Docker要求

确保Docker已安装并在您的系统上运行:

# Verify Docker installation
docker --version
docker pull justb4/jmeter:latest

🚀 基本用法

生成JMeter测试:

# Using the MCP tool
generate_jmeter_script({
  "testName": "API Load Test",
  "baseUrl": "https://httpbin.org",
  "requests": [
    {
      "name": "Get Request",
      "method": "GET",
      "path": "/get"
    }
  ]
})

执行测试:

# Using the MCP tool
execute_jmeter_script({
  "jmxFile": "API_Load_Test.jmx",
  "generateReports": true
})

🏗️ 建筑

graph TB
    subgraph "User Layer"
        USER[👤 User]
        CLAUDE[🤖 Claude Desktop]
        VSCODE[📝 VS Code]
        API[🔗 API Client]
    end

    subgraph "MCP Server"
        SERVER[🏗️ MCP Server]
        TOOL1[⚡ generate_jmeter_script]
        TOOL2[🐳 execute_jmeter_script]
        HANDLER[🎯 JMeter Handler]
    end

    subgraph "Docker Engine"
        DOCKER[🐳 Docker]
        JMETER[⚙️ JMeter Runtime]
        VOLUMES[🔗 Volume Mounts]
    end

    subgraph "Analysis Engine"
        PARSER[📊 JTL Parser]
        ANALYZER[📈 Stats Analyzer]
        GENERATOR[📋 Report Generator]
    end

    subgraph "Report Outputs"
        HTML[🌐 HTML Report]
        MD[📝 Markdown]
        JSON[📊 JSON Data]
        DASHBOARD[📈 JMeter Dashboard]
    end

    USER --> SERVER
    SERVER --> TOOL1
    SERVER --> TOOL2
    TOOL2 --> DOCKER
    DOCKER --> JMETER
    JMETER --> PARSER
    PARSER --> ANALYZER
    ANALYZER --> GENERATOR
    GENERATOR --> HTML
    GENERATOR --> MD
    GENERATOR --> JSON
    JMETER --> DASHBOARD

📁 项目结构

jmeter-mcp-server/
├── 📁 src/                         # Source code
│   ├── 🚀 index.js                 # MCP server entry point
│   ├── 📁 handlers/                # Request handlers
│   │   └── 🎯 jmeterHandler.js     # Core JMeter logic
│   └── 📁 utils/                   # Utility functions
│       ├── 📂 fileWriter.js        # File operations
│       └── 📝 promptGenerator.js   # Prompt utilities
├── 📁 output/                      # Generated JMX files
├── 📁 sample_data/                 # Test data files
├── 📁 jmeter-results/              # Test execution results
│   ├── 🌐 performance-analysis.html
│   ├── 📝 performance-analysis.md
│   ├── 📊 performance-analysis.json
│   └── 📁 reports/                 # JMeter dashboards
├── 🐳 docker-entrypoint.sh        # Docker execution script
├── 📄 ARCHITECTURE.mermaid         # System architecture
├── 📋 package.json                # Project configuration
└── 📖 README.md                   # This file

🔧 配置

环境变量

NODE_ENV=production          # Environment mode
PORT=3000                   # HTTP server port
DEBUG=true                  # Enable verbose logging

Docker配置

服务器自动配置Docker执行:

  • 图像: justb4/jmeter:latest
  • 卷装载:测试文件和结果的自动映射
  • 资源限制:可配置的CPU和内存分配
  • 网络:用于外部API访问的桥接网络

📊 生成的报告

HTML交互式仪表板

  • 实时图表:响应时间、吞吐量、错误
  • 交互式导航:深入挖掘能力
  • 性能趋势:基于时间的分析
  • 导出选项:PNG、CSV、pdf

Markdown文档

  • 执行摘要:关键绩效指标
  • 详细分析:综合指标细分
  • 建议:性能优化建议
  • 历史比较:随时间变化的趋势分析

JSON机器数据

  • 原始指标:所有性能数据均为JSON格式
  • API集成:易于与监控工具集成
  • 自定义分析:自定义报告工具的数据
  • 自动化:CI/CD管道的机器可读性

🚀 高级示例

API认证测试

{
  "testName": "Authenticated API Test",
  "baseUrl": "https://api.github.com",
  "threadGroup": {
    "numThreads": 10,
    "rampUpTime": 30,
    "loops": 5
  },
  "requests": [
    {
      "name": "Get User Profile",
      "method": "GET",
      "path": "/user",
      "headers": {
        "Authorization": "Bearer ${token}",
        "Accept": "application/vnd.github+json"
      },
      "assertions": [
        {
          "type": "responseCode",
          "value": "200"
        },
        {
          "type": "jsonPath",
          "value": "$.login"
        }
      ]
    }
  ],
  "csvDataSet": {
    "fileName": "github_tokens.csv",
    "variableNames": "token"
  }
}

UI测试工作流程

{
  "testName": "E-commerce UI Flow",
  "baseUrl": "https://demo.opencart.com",
  "threadGroup": {
    "numThreads": 5,
    "rampUpTime": 60,
    "loops": 3
  },
  "requests": [
    {
      "name": "Homepage",
      "method": "GET",
      "path": "/",
      "assertions": [
        {
          "type": "containsText",
          "value": "OpenCart"
        }
      ]
    },
    {
      "name": "Product Search",
      "method": "GET",
      "path": "/index.php?route=product/search&search=macbook",
      "assertions": [
        {
          "type": "responseTime",
          "value": "3000"
        }
      ]
    }
  ]
}

🔧 发展

开发设置

# Clone and install
git clone https://github.com/chandanvars/jmeter-mcp-server.git
cd jmeter-mcp-server
npm install

# Run in development mode
npm run dev

# Run tests
npm test

可用脚本

npm start                   # Start MCP server
npm run dev                # Development mode with debugging
npm test                   # Run test suite
npm run clean              # Clean output directories

📚 示例和文件

  • 基本用法:简单的API测试示例
  • 高级场景:复杂的多步骤工作流
  • 性能测试:负载测试最佳实践
  • 用户界面测试:Web应用程序测试模式
  • 认证:各种身份验证方法示例

🤝 贡献

我们欢迎捐款!拜托:

  1. 复刻仓库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

🆘 支持

有关支持和问题:

🗺️ 路线图

当前版本功能

  • ✅ 流线型架构:2个基本工具
  • ✅ 完全Docker自动化:零人工干预
  • ✅ 多格式报告:HTML、Markdown、JSON
  • ✅ 交互式仪表板:Chart.js可视化
  • ✅ 性能分析:综合指标
  • ✅ 架构文档:美人鱼图

未来的增强功能

  • [ ] WebSocket测试:实时连接测试
  • [ ] GraphQL支持:原生GraphQL测试生成
  • [ ] 数据库测试:SQL性能测试
  • [ ] 云集成:AWS/Azure监控
  • [ ] CI/CD模板:管道集成示例
  • [ ] 移动测试:移动应用程序性能测试

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

  • Apache JMeter团队 -对于令人难以置信的测试框架
  • 模型上下文协议 -通信标准
  • Docker社区 -集装箱化技术
  • Chart.js团队 -为了获得美观的可视化效果
  • 测试社区 -获取反馈和贡献

🎯 由...制作❤️ 对于测试社区 钱丹·瓦尔什尼

自动化JMeter测试,集成Docker和专业性能分析!