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 : This 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 : This test is basically used for testing the system under the top load it was designed to operate under.
- Stress Test : This test is an attempt to break the system by overwhelming its resources.
Following are some of the features of JMeter −
- JMeter is an open-source software.
- 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.
- On Linux/Unix, JMeter can be invoked by clicking on the JMeter shell script.
- On Windows, it can be invoked by starting the jmeter.bat file.
- 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.
- Its full multi-threading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.
- 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: