BlazeMeter + JMeter Cloud Testing: Scale Performance Tests Without Infrastructure

BlazeMeter + JMeter Cloud Testing: Scale Performance Tests Without Infrastructure

BlazeMeter runs JMeter, Gatling, Locust, and k6 scripts in the cloud across multiple geographic regions. Upload your existing scripts, configure geographic distribution and user counts, run tests, and get unified performance reports without managing load generator infrastructure.

The biggest bottleneck in load testing isn't script writing—it's infrastructure. Generating 100,000 concurrent users requires dozens of servers, coordinated startup, unified result collection, and cleanup. BlazeMeter eliminates that work: upload your JMeter script, pick regions and user count, click run. Load generators spin up in AWS infrastructure across your chosen locations and tear down automatically when the test ends.

What BlazeMeter Adds to JMeter

JMeter is the de facto standard for enterprise load testing scripts. BlazeMeter runs JMeter at cloud scale:

  • No load generator management: BlazeMeter provisions and terminates EC2 instances
  • Geographic distribution: Simultaneously generate load from US, EU, APAC regions
  • Real-time unified dashboard: Aggregate stats from all load generators in one view
  • Historical comparison: Compare this run to any previous run
  • CI/CD integration: REST API and plugins for Jenkins, GitHub Actions, Azure DevOps
  • Multiple script formats: JMeter (.jmx), Gatling (.scala), Locust (.py), k6 (.js), Taurus (.yml)

Getting Started

  1. Sign up at blazemeter.com (free tier available: 50 concurrent users, 10 minutes, 1 location)
  2. Create a new test
  3. Upload a JMeter .jmx file or create a script in the UI

Creating a Simple Test Without a Script

For quick API tests, BlazeMeter has a URL builder:

  1. Performance TestCreate TestBlank Test
  2. Add URLs manually: specify method, URL, headers, body
  3. BlazeMeter converts to JMeter internally

Uploading and Running JMeter Scripts

Prerequisites

Your JMeter script should:

  • Use variables for host/port (not hardcoded URLs)
  • Include assertions for response validation
  • Have CSV data files (if needed) ready to upload alongside the .jmx

Upload Process

  1. Create TestJMeter Test
  2. Upload your .jmx file
  3. Upload supporting files (CSV data, keystores, plugins)
  4. Configure test settings:
    • Engines: Number of load generator instances (more engines = more users)
    • Total users: Divided evenly across engines
    • Duration: Fixed duration or iteration count
    • Ramp-up: Time to reach full user count

Geographic Distribution

BlazeMeter's "Locations" feature:

  1. Add multiple locations (US East, US West, EU West, Singapore, etc.)
  2. Set user count per location
  3. BlazeMeter starts load generators in each region simultaneously

Example: 10,000 users from US East + 5,000 from EU West + 5,000 from Singapore = realistic global load distribution.

Taurus: Script-as-Code for BlazeMeter

BlazeMeter's Taurus tool provides a YAML-based abstraction over JMeter:

# performance-test.yml
execution:
  - concurrency: 1000
    hold-for: 10m
    ramp-up: 2m
    scenario: api-test

scenarios:
  api-test:
    requests:
      - url: https://api.example.com/products
        method: GET
        assert:
          - contains:
            - "id"

      - url: https://api.example.com/products/${__Random(1,100,product_id)}
        method: GET
        headers:
          Accept: application/json
        think-time: 1s

      - url: https://api.example.com/orders
        method: POST
        body:
          product_id: ${product_id}
          qty: 1
        assert:
          - contains:
            - "order_id"

reporting:
  - module: blazemeter
    test: "API Load Test"
    token: ${BLAZEMETER_API_KEY}
    project: ${BLAZEMETER_PROJECT_ID}

Run locally:

pip install bzt
bzt performance-test.yml

Taurus runs locally with JMeter under the hood. Add the blazemeter reporting module to push results to the BlazeMeter dashboard without uploading to the cloud.

To run IN the cloud:

modules:
  blazemeter:
    address: https://a.blazemeter.com
    token: ${BLAZEMETER_API_KEY}
    project: ${BLAZEMETER_PROJECT_ID}
    test: "Cloud API Test"
    location: us-east-1
    nodes: 5  # 5 load generators
bzt performance-test.yml -o modules.blazemeter.enabled=true

CI/CD Integration

GitHub Actions

name: Load Test

on:
  workflow_dispatch:
  push:
    branches: [main]

jobs:
  load-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Taurus
        run: pip install bzt

      - name: Run BlazeMeter Load Test
        env:
          BLAZEMETER_API_KEY: ${{ secrets.BLAZEMETER_API_KEY }}
          BLAZEMETER_PROJECT_ID: ${{ secrets.BLAZEMETER_PROJECT_ID }}
        run: |
          bzt performance-test.yml \
            -o modules.blazemeter.token=$BLAZEMETER_API_KEY \
            -o modules.blazemeter.project=$BLAZEMETER_PROJECT_ID \
            -o modules.blazemeter.test="CI Load Test - ${{ github.sha }}"

BlazeMeter REST API

Trigger tests programmatically:

# Start a test
curl -X POST "https://a.blazemeter.com/api/v4/tests/{testId}/start" \
  -H "x-api-key: $BLAZEMETER_API_KEY" \
  | jq '.result.id'

# Check test status
curl "https://a.blazemeter.com/api/v4/masters/{masterId}/status" \
  -H "x-api-key: $BLAZEMETER_API_KEY" \
  | jq '.result.status'

# Get aggregate stats
curl "https://a.blazemeter.com/api/v4/masters/{masterId}/reports/aggregatereport/data" \
  -H "x-api-key: $BLAZEMETER_API_KEY"

Pass/Fail Thresholds

Configure test failure criteria in the BlazeMeter UI under Test SettingsPass/Fail Criteria:

  • Response time p95 > 500ms → Fail
  • Error rate > 1% → Fail
  • Throughput < 100 RPS → Fail

Or via Taurus configuration:

reporting:
  - module: passfail
    criteria:
      - avg-rt of APITest > 500ms for 10s, stop as failed
      - fail of APITest > 5%, stop as failed
      - succ of APITest < 100, stop as failed

Real-Time Monitoring

During a BlazeMeter test, the dashboard shows:

  • Users: Current active users (ramp-up visible)
  • RPS: Real-time requests per second
  • Response time: p50, p90, p95, p99 (switch between percentiles)
  • Error rate: Percentage of failed requests
  • Errors: Breakdown by error type

Drill into individual engines to see per-location stats—useful when one geographic region degrades while others stay healthy.

Comparing Test Runs

BlazeMeter stores all test runs. The Comparison tab overlays two or more runs:

  • Before/after a code deployment
  • Load test after infrastructure upgrade
  • Regression from a recent code change

Export comparison data as PDF for stakeholder reports.

Server Monitoring (Agent)

Install the BlazeMeter monitoring agent on target servers to capture server-side metrics alongside load test results:

# On target server
curl https://a.blazemeter.com/api/v4/projects/{projectId}/monitoring/download \
  | sudo bash

Correlate response time increases with CPU spikes or memory pressure in the unified dashboard.

BlazeMeter Pricing Reality

The free tier is limited (50 users, 10 min). Realistic pricing:

  • Freelancer ($99/mo): 1K users, 1 location
  • Business ($449/mo): 50K users, multiple locations
  • Enterprise: Custom pricing, unlimited users, SLA

For infrequent tests, the on-demand API (pay-per-test-minute) may be cheaper than a subscription. Calculate your expected monthly usage before committing.

When to Use BlazeMeter vs. Self-Hosted

Use BlazeMeter when:

  • Testing from multiple geographic regions matters
  • You don't want to maintain load generator infrastructure
  • Tests are infrequent (monthly/quarterly)
  • Stakeholder-ready reports are required

Use self-hosted (Locust, k6, Gatling) when:

  • Tests run daily in CI
  • Budget is limited
  • Tests target internal staging environments not reachable from public internet
  • You need full control over load generator configuration

Summary

BlazeMeter removes infrastructure management from load testing. Upload a JMeter script or write a Taurus YAML, configure geographic distribution and user count, and run. For teams that need realistic global load simulation or professional reporting without DevOps overhead, BlazeMeter's cloud infrastructure is the fastest path from "we should load test" to actually doing it. For regular CI load tests against internal environments, self-hosted tools cost less and integrate more naturally.

Read more

Start now free