What Is Apache JMeter?
Apache JMeter is a Java application from the Apache Software Foundation for load and performance testing. It simulates many users sending requests, mostly over HTTP/HTTPS but also JDBC, JMS, FTP and more, and measures response times, throughput and errors.
JMeter does not run a real browser, so it does not execute your page's JavaScript. It tests the server side. For browser-level functional tests you use a tool like Playwright. Performance testing is one of the types of software testing every tester should understand.
Install Apache JMeter
- Install Java 8 or higher (JMeter 5.6.3, the current release, requires Java 8+). Check with
java -version. - Download the binary zip or tgz from jmeter.apache.org. Use the Binaries section, not Source.
- Unzip it anywhere (avoid folders with spaces on Windows).
- Start the GUI:
bin/jmeter.baton Windows,bin/jmeteron macOS/Linux.
java -version cd apache-jmeter-5.6.3/bin ./jmeter # macOS / Linux jmeter.bat # Windows
Key JMeter Concepts
| Element | What it does |
|---|---|
| Test Plan | The container for everything in your test |
| Thread Group | Virtual users: number of threads, ramp-up period, loop count |
| Sampler | A request, e.g. HTTP Request |
| Config Element | Shared settings, e.g. HTTP Request Defaults, CSV Data Set Config |
| Assertion | Checks a response, e.g. Response Assertion for status or text |
| Listener | Shows or saves results, e.g. Summary Report |
| Timer | Adds think time between requests |
Build Your First Test Plan
- Right-click Test Plan → Add → Threads (Users) → Thread Group. Set 10 threads, ramp-up 10 seconds, loop count 5.
- Right-click the Thread Group → Add → Sampler → HTTP Request. Enter protocol
https, the server name and a path, e.g./. - Add Assertions → Response Assertion and check the response code equals
200. - Add Timer → Constant Timer (e.g. 1000 ms) so users don't fire requests back-to-back.
- Add Listener → Summary Report for a quick smoke run.
- Save the plan as
first-test.jmx.
Only load test systems you own or have written permission to test. Hitting someone else's site with load can look like an attack.
Run the Load Test in CLI (Non-GUI) Mode
This is the beginner mistake: running real load from the GUI. The official JMeter docs say GUI mode should only be used to create the test script, and that CLI mode must be used for load testing. The GUI itself uses memory and CPU and distorts your results.
jmeter -n -t first-test.jmx -l results.jtl -e -o report
| Flag | Meaning |
|---|---|
-n | Non-GUI (CLI) mode |
-t | The test plan (.jmx) to run |
-l | File to log results to (.jtl) |
-e | Generate the HTML dashboard after the run |
-o | Output folder for the dashboard (must be empty or new) |
Read the HTML Report
Open report/index.html. Start with these numbers:
- APDEX: a 0–1 user-satisfaction score based on response-time thresholds.
- Error %: anything above zero needs investigating before you look at speed.
- Response time percentiles (90th/95th/99th): more honest than averages, because averages hide slow outliers.
- Throughput: requests per second the system handled.
JMeter vs k6 vs Locust
| JMeter | k6 | Locust | |
|---|---|---|---|
| Tests written in | GUI (saved as XML .jmx) | JavaScript | Python |
| Learning curve | Easy to start with the GUI | Easy for JS developers | Easy for Python developers |
| Protocols | Very broad (HTTP, JDBC, JMS, FTP…) | HTTP-focused, plus extensions | HTTP-focused, extensible |
| Fits CI | Yes, via CLI mode | Yes | Yes |
Compare more tools in our software testing tools guide.
Where JMeter Fits in a QA Career
JMeter is a specialist skill. Most entry-level QA roles first expect strong fundamentals: test cases, bug reports, regression testing and some automation. Then performance testing is a strong addition. If you are just starting out, build those foundations first and add JMeter on top.
Our courses don't teach JMeter in depth. If you are new to testing, Manual Testing & QA with AI covers the QA foundations that come first, including functional and non-functional testing.
Frequently Asked Questions
Is Apache JMeter free?
Yes. JMeter is free and open source under the Apache License 2.0.
Which Java version does JMeter need?
JMeter 5.6.3, the current release, requires Java 8 or higher.
Why should I not run load tests in the JMeter GUI?
The official documentation says the GUI is for creating test scripts only. The GUI uses CPU and memory, which distorts results, so run load in CLI mode with jmeter -n -t plan.jmx -l results.jtl.
Can JMeter test a website's JavaScript?
No. JMeter sends requests but does not run a browser or execute JavaScript. Use Playwright for browser behaviour and JMeter for server load.
Is JMeter good for beginners?
Yes. The GUI makes it easy to build a first test plan, and the HTML dashboard makes results readable. Learn testing fundamentals alongside it.
Asim Noaman
Senior QA Automation Engineer & AI Testing Specialist
With years of hands-on experience building test automation frameworks for production applications, Asim specializes in combining traditional QA methodologies with cutting-edge AI tools. He has helped teams adopt Playwright and AI-driven testing workflows to ship faster with fewer bugs.
Start Here · No Experience Needed
Manual Testing & QA with AI: Get Your First QA Job
Learn software testing from zero: test cases and test plans, bug reports, Agile and JIRA, web and mobile app testing, then speed it all up with ChatGPT and Claude. 4.5★ (90+ ratings) · 660+ students · 108 lectures · 12 hours on Udemy.
- Test cases, test plans and bug reports from real requirements
- SDLC, Agile/Scrum and JIRA the way real QA teams work
- Web, cross-browser and mobile app testing
- AI interview role-play and practice questions
Want AI to write your tests, no coding? AI Software Testing for Beginners · Already automating? Playwright + Claude AI · Which course is right for me?