Test Tools · Performance Testing

Gatling

High-performance load testing in Scala. Simulates tens of thousands of concurrent users with elegant DSL and detailed reports.

Overview

Gatling, created in 2011, is a high-performance load testing tool written in Scala. It uses an elegant domain-specific language (DSL) for writing test scenarios and can simulate tens of thousands of concurrent virtual users from a single machine. Gatling is particularly strong for web application load testing, including complex user journeys with authentication, session management, and dynamic data.

Gatling generates beautiful HTML reports with detailed latency percentiles, response time distributions, and error analysis. It is the tool of choice for teams that need serious load generation and professional reporting.

What it's used for

Gatling is the right choice when:

  • High-concurrency testing needed: Simulate 50,000+ concurrent users from a single machine.
  • Complex web scenarios: Test multi-step user journeys with authentication, sessions, and state.
  • Professional reporting required: Executive-ready HTML reports with detailed metrics.
  • Scala/Java team: Tests are Scala code, fitting naturally into JVM-based projects.

Pros & Cons

Pros

  • Extremely efficient resource usage — simulates more users per machine than JMeter
  • Beautiful, detailed HTML reports
  • Elegant Scala DSL for scenario definition
  • Strong CI/CD integration with Maven, Gradle, and Jenkins
  • Active community and commercial support (Gatling Enterprise)

Cons

  • Scala DSL has a learning curve for non-Scala developers
  • No GUI for test creation — everything is code
  • Less intuitive for API-only testing than k6
  • Distributed testing requires Gatling Enterprise or custom orchestration
  • Smaller community than JMeter

Platforms & Integrations

Gatling runs on Windows, macOS, and Linux. It requires Java 11+ and is typically managed via Maven or Gradle. Gatling Enterprise adds cloud execution and distributed load generation.

Windows macOS Linux Scala Java Kotlin Maven Gradle Jenkins GitHub Actions GitLab CI Azure DevOps Docker AWS GCP Azure

Pricing

TierCostIncludes
Open SourceFreeFull framework, local execution, HTML reports
Gatling EnterpriseCustomCloud execution, distributed load, advanced analytics, support

NZ Context

Gatling is used by NZ enterprise teams with high-traffic web applications. Trade Me has used Gatling for load testing their auction platform. For NZ teams on the JVM stack (Spring Boot, Kotlin), Gatling is a natural fit. However, k6 is gaining ground among NZ startups due to its JavaScript syntax.

Alternatives

  • k6 — JavaScript-based. Better DX for non-Scala teams.
  • JMeter — GUI-based. Larger community and more plugins.
  • Locust — Python-based with distributed load testing. Better for Python teams.

Learn more