Introduction to JMeter

JMeter is a software that can perform load tests, performance-oriented business (functional) tests, regression tests, etc., on different protocols or technologies.

The Apache JMeter application is open-source software, a 100% pure Java application designed to load functional test behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.


Stefano Mazzocchi of the Apache Software Foundation was the original developer of JMeter. He wrote it primarily to test the performance of Apache JServ (now called as Apache Tomcat project). Apache later redesigned JMeter to enhance the GUI and to add functional testing capabilities.

JMeter is a Java desktop application with a graphical interface that uses the Swing graphical API. It can, therefore, run on any environment/workstation that accepts a Java virtual machine, for example − Windows, Linux, Mac, etc.

The protocols supported by JMeter are :

  • Web − HTTP, HTTPS sites 'web 1.0' web 2.0 (ajax, flex and flex-ws-amf)
  • Web Services − SOAP / XML-RPC
  • Database via JDBC drivers
  • Directory − LDAP
  • Messaging Oriented service via JMS
  • Service − POP3, IMAP, SMTP
  • FTP Service
Different kind of Testings in brief:
  • Performance Test : Performance test sets the best possible performance expectation under a given configuration of infrastructure. It also highlights early in the testing process if any changes need to be made before the application goes into production.
  • Load Test : The Load test Modeling the expected usage by simulating multiple users access the Web services concurrently.
  • Stress Test : Stress test is an attempt to break the system by overwhelming its resources.
Features of JMeter :
  • It has a simple and intuitive GUI.
  • JMeter can conduct load and performance tests for many different server types: Web - HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, Mail - POP3, etc.
  • It is a platform-independent tool.
  • JMeter can be invoked by using the Shell script/JMeter.bat
  • It has full Swing and lightweight component support (precompiled JAR uses packages javax.swing.* ).
  • JMeter stores its test plans in XML format. This means you can generate a test plan using a text editor.
  • It is highly extensible.
  • It can also be used to perform automated and functional testing of the applications.
Advantages of JMeter:
  • Full-featured Test IDE that allows fast Test Plan recording (from Browsers or native applications), building, and debugging.
  • CLI mode (Command-line mode (previously called Non-GUI) / headless mode) to load test from any Java-compatible OS (Linux, Windows, Mac OSX, …)
  • A complete and ready to present dynamic HTML report
  • Easy correlation through the ability to extract data from most popular response formats, HTML, JSON, XML or any textual format
  • Complete portability and 100% Java purity.
  • The 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 may be chosen with pluggable timers.
  • Data analysis and visualization plugins allow great extensibility as well as personalization.
  • Functions can be used to provide dynamic input to a test or provide data manipulation.
  • Easy Continuous Integration through 3rd party Open Source libraries for Maven, Gradle, and Jenkins.
How JMeter Works?

JMeter simulates a group of users sending requests to a target server, and returns statistics that show the performance/functionality of the target server/application via tables, graphs, etc.

Take a look at the following figure that depicts how JMeter works:


Thread Group in JMeter

Gatling vs JMeter

  • Gatling is applicable to some listed protocols only, where JMeter can be used for any protocol.
  • Gatling uses less memory as compared to JMeter
  • Gatling can use of Async HTTP Client, where JMeter cant
  • Gatling handles cookies and cache by default, whereas JMeter does not
  • Gatling is more powerful in case of using resources than JMeter
  • Gatling has notable support of HTTPS protocols and so also be used for JDBC and JMS load testing, wherein JMeter these two protocols cannot be used
  • JMeter can use multi-threading and can allow concurrent sampling of functions, where Gatling cannot.
  • Gatling does not offer the facility of viewing all parameters status during execution, and an additional tool like Taurus may be helpful, but in JMeter, it is of ease.

Introduction to Gatling

JMeter vs Postman

JMeter :

  • JMeter is well suited for Java applications where the user can script the scenario once and make changes to accommodate for as many numbers of users for load test execution.
  • The image and selection of any files or exporting files scenario is handled well.
  • It is less appropriate to test Ajax applications where it is required to script click per use.

Postman :

  • Postman is extremely useful when developing any web-based service, such as RESTful APIs.
  • Particularly when you need to repeat requests, either while iterating overdevelopment, or when doing automated testing.
  • Postman doesn't have any browser rendering, so it is not suitable for testing or mocking front-end UIs. However, it is a great tool for bypassing these UIs to test the backing service.


JMeter vs LoadRunner

  • JMeter is free while LoadRunner is expensive.
  • JMeter licenses on installation while the LoadRunner license is based on the number of virtual users.
  • JMeter has an unlimited load generation capacity while LoadRunner has a limited load generation capacity.
  • JMeter is technically less proficient while LoadRunner is highly developed and complex.
  • JMeter lacks in the user interface while that of LoadRunner is impressive.
Comment / Suggestion Section
Point our Mistakes and Post Your Suggestions