What Are the Key Features and Run Modes of Apache JMeter?

Apache JMeter is an open source, 100% pure Java application designed to load test functional behavior and measure performance. It was originally built for testing Web applications but has expanded to other test functions. Its two defining run modes are a full-featured Test IDE (GUI) for recording, building, and debugging test plans, and a CLI/headless mode for running load tests from any Java-compatible OS. Choose JMeter if you need to simulate heavy load on a server, group of servers, network, or object and analyze overall performance under different load types.

What JMeter can load test

JMeter can test performance on both static and dynamic resources, including Web dynamic applications. Its supported application/server/protocol types include:

  • Web — HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, and others)
  • SOAP / REST Webservices
  • FTP
  • Database via JDBC
  • LDAP
  • Message-oriented middleware (MOM) via JMS
  • Mail — SMTP(S), POP3(S), and IMAP(S)
  • Native commands or shell scripts
  • TCP
  • Java Objects

Run modes

Test IDE (GUI)

A full-featured Test IDE that allows fast Test Plan recording (from browsers or native applications), building, and debugging. Use this mode to design and iterate on your test plan before running it at scale.

CLI / headless mode

Command-line mode (previously called Non-GUI) runs load tests from any Java-compatible OS — Linux, Windows, Mac OSX, and others. This is the mode for executing tests without the GUI overhead.

Key features

  • Dynamic HTML report — a complete, ready-to-present report generated from results.
  • Easy correlation — extract data from the most popular response formats: HTML, JSON, XML, or any textual format.
  • Complete portability and 100% Java purity.
  • Full multi-threading framework — allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.
  • Caching and offline analysis/replaying of test results.
  • Highly extensible core — pluggable Samplers allow unlimited testing capabilities; scriptable Samplers (JSR223-compatible languages like Groovy and BeanShell); several load statistics selectable with pluggable timers; data analysis and visualization plugins.

Important limitation: JMeter is not a browser

The official site states plainly that JMeter is not a browser. It does not render pages the way a browser does, so it does not behave like one when handling embedded resources, client-side JavaScript, or page rendering. Plan your test design around this — JMeter works at the protocol level rather than as a rendering engine.

Where to go next

The official site provides Tutorials, a User Manual, Best Practices, a Component Reference, a Functions Reference, a Properties Reference, a Change History, Javadocs, and a JMeter Wiki with an FAQ. There is also guidance on Distributed Testing, Recording Tests, the JUnit Sampler, the Access Log Sampler, and Extending JMeter.

jmeter.apache.org