What is JMeter?
JMeter is still one of the most popular open-source functional and load testing applications in the market today. With a wide range of support for protocols like HTTP/S, SOAP, REST, FTP, LDAP, SMTP, POP3, and IMAP (in addition to many others), it is a cost-effective and highly configurable load testing solution for performance testing engineers and teams.
Additionally, as a complete Java-based software, JMeter is platform-independent and can run on a variety of platforms. Furthermore, JMeter is actively maintained and supported. There are numerous plugins to help JMeter users customize their tests as well as a large user support community to lean on for testing advice and assistance.
JMeter Load Testing: Disadvantages
For all the great benefits we mentioned above, there are still a few critical main disadvantages with JMeter.
Protocol-based Load Tests
The first is that it can only execute protocol-level tests. For developers looking to test JavaScript-based applications, like Angular, Ember, Knockout, etc., or AJAX-based applications, they must find a different solution. A lot of modern browsers rely heavily on JavaScript and AJAX, which is an important factor when understanding website or application performance. JMeter cannot render HTML as the browser does, so this leaves a big gap in fully understanding the full user experience under load.
System Limitations/Hardware Capabilities
Secondly, JMeter requires that it be installed on a local machine, which means that users must first ensure that they have the necessary hardware requirements and proper setup, which can prove to be time-consuming and possible involve some additional investment in hardware. Due to this reason, running large-scale tests can quickly cause you to run out of system resources or cause errors. And since tests are executed from a local machine and network, performance engineers are unable to gauge performance under load from different geographic locations, or where users are based, which is a critical piece to understanding how your sites or applications stand up in real-world conditions.
Complex Interface
Lastly, JMeter is a complex load testing solution. It is not as user-friendly as some other load testing solutions in the market today. For new users, it can be a daunting task to simply begin to know or understand all the functionality of the software. There are many components, functions, and properties that require a higher-level of knowledge and understanding before diving into building and executing tests. While this can all be learned over time, it is a barrier for engineers and developers looking to simply focus on testing and being able to quickly and easily set up and configure load tests.
How to Perform Load Tests with JMeter
How to Build a JMeter Test Plan
Load testing takes a bit of research and planning. You cannot just begin creating a plan or scripts out of thin and expect that you can build your test on the fly. Ideally, you will want to build out your test requirements, scope, criteria, etc., well before you begin setting up your load test. This may require you to gather information from various sources, like analytics tools for traffic data, session duration, and number of visitors during peak hours, or reviewing previous campaign data to get a better idea of how much load, or concurrent users, you are going to test against your site or application.
The key is to build a plan that is going to match your environment and simulate real-world scenarios as closely as possible. Once you have your plan ready, you can begin setting up your test plan in JMeter, which consists of various elements. A basic JMeter load test consists of a Test Plan, a Thread Group, and Samplers.
Create a JMeter Test Plan
Below are the basic steps and requirements for setting up a JMeter Test Plan.
1. Adding a Thread Group
The Thread Group represents the concurrent users required for the load test. You can access the Thread Group by right-clicking Test Plan > Add > Thread (Users) > Thread Group.
From the Thread Group properties dialog box, you can also set the following properties:
-
- Number of Threads (Users)
- Ramp-up period (in seconds)
- Loop Count (how many test iterations)
- Additional actions, like delays, test start and stop times, and actions to take after a Sampler error.
Alternatively, instead of starting with the Thread Group, you can choose from a variety of test templates by accessing File > Templates > Select Templates or selecting the Templates icon from the Tool Bar.
From here you can see the various template selections to choose from, including templates for web services tests, Web Test Plan, Functional tests, and many others. These templates automatically include all the necessary elements, sections, and fields that will be utilized to build out the test plan.
2. Configure the Sampler
Samplers are what allow JMeter to send different types of requests, such as HTTP (for a website, application, or API), FTP, SMTP, TCP, in addition to other types of requests. You can access the Samplers by right-clicking on Thread Group > Add > Sampler and select the Sampler that is right for your test requirements.
From the Configure Sampler field, you are displayed with entering additional details such as the following:
-
- Protocol (HTTP/S)
- Server Name or IP
- Path (for specific web page)
- Type of request (GET, POST, HEAD, PUT, etc.) for API load testing.
3. How to Configure Listeners
Listeners allow you to review the results of the Sampler. To access Listeners, navigate to Thread Group > Add > Sampler > Listener.
You can select from any one of over 15 Listeners. The Listeners all contain the same data, but the difference is how that data is displayed visually. Additionally, you can add more than one Listener to the JMeter Test Plan. The types of Listeners you will see include the following:
-
- Summary Report
- Aggregate Graph
- View Results Tree
- View Results in Table
- Simple Data Writer
- BeanShell Listener
- And many more…
4. How to Record Load Test Scripts (Optional)
If you are just looking to run a basic HTTP, or protocol-level load test, then you can go to the next step and run your JMeter load test. However, if you need to configure a test that needs to simulate specific user actions and paths, the use of the HTTP(S) Test Script Recorder is required. Just remember that you are not recording your script from a real browser, just capturing HTTP traffic. Here are the steps you need to follow:
-
- Add the Recording Controller (located in the Thread Group)
- Navigate through your site or application
- Record your actions via HTTP/S requests
Alternatively, you can opt to utilize the JMeter Proxy Server. This option allows you to record scripts from a browser, but setup can be time-consuming. To use the JMeter Proxy Server, follow these steps:
-
- Navigate to your system’s proxy settings.
- Import the JMeter certificate.
- Configure the proxy settings.
5. Run Your JMeter Test
Once you have configured your Listener(s), your JMeter Test Plan is finally ready and you can run your JMeter load test. There are a couple of different ways to run your JMeter test, but make sure you save your test plan first.
-
- Option 1: Select the green triangle/arrow to run the test.
- Option 2: Select the Run button in the Tool Bar.
6. Review and Analyze your JMeter Test Results.
You can view your JMeter test results as the test is running. For example, if you selected View Results in Table, you would see the results displayed as each run, or user, is executed. Also included in the results will be the additional following metrics:
-
- Time (in milliseconds)
- Status (shows valid responses and errors)
- Bytes and Bytes Sent
- Latency
- Connect Time
From these results you can see where any errors occurred or where there may be slow load times. Additionally, you will be able to compare your JMeter test plan with the test results and use that data to make performance improvements and optimizations. You can also choose to run additional load tests with an increased amount of load.
However, as outlined in some of the disadvantages we discussed earlier, in terms of the scale of your load tests, JMeter has its limits and cannot carry out large-scale tests. For that, a modern load testing solution like LoadView is more effective than using JMeter.
The LoadView Platform
The LoadView platform removes the constraints of open-source load testing solutions like JMeter. LoadView is a cloud-based load testing solution that provides performance engineers an easier way to test websites, web services/APIs, web applications, and more. There is no need to invest in costly hardware upgrades or worry about managing load generators. The LoadView platform removes those time-consuming and burdensome tasks so performance engineers and teams can focus on testing and improving their sites, applications, and APIs.
Overcome Your JMeter Load Testing Limitations with LoadView
Additionally, LoadView provides over 40 geo locations from around the world, so you get a real-world understanding of how all your sites, applications, or APIs perform from those locations, giving you more realistic test results and data of how these elements will perform in front of users. Furthermore, by utilizing a world-wide network of cloud generators, you can scale your tests into the thousands or millions of concurrent users, which open-source load testing solutions like JMeter are unable to offer.
LoadView: Scale your JMeter Load Tests
If you have been using JMeter and are looking for a better way to execute large-scale tests, the LoadView platform provides an automatic and seamless way to transfer your JMeter test plans into LoadView and run JMeter load tests in just minutes. With an intuitive interface and features like multiple load curves, global testing locations, and comprehensive performance reports, the LoadView platform is a fantastic alternative to JMeter. Let’s look at how to set up a load test in LoadView using JMeter scripts.
Steps for Setting up a JMeter Load Test with LoadView
If you do not have a LoadView account, setting one up is fast and easy. Additionally, we will give you up to 5 free load tests to start.
1. Save your JMeter Script
Within your JMeter application, save your JMeter test plan to a JMX file on a local computer.
2. Log in to LoadView
Next, log in to your LoadView account and select the JMeter testing type option.
3. Import your JMeter Script
On the Configure Task page, select Import to import your JMX file. The XML content of the file will be provided in the JMeter Project field. Request parameters will be converted automatically into the LoadView JMeter Project upon import and include the the following parameters:
-
- Target URL or IP
- Path to an endpoint
- Request type
- Request headers
- Text assertions
Note: LoadView does not import the Thread Group settings into LoadView JMeter Project. Thread Properties (the number of threads, ramp-up period, etc.) can be configured by setting up a scenario of your load test execution in LoadView. From here, you can also edit the XML code in the field, if necessary.
As another option, in the Settings field, you can set the test session execution timeout. The LoadView solution waits for a response from the target resource for the specified time and if the execution time exceeds the limit, the system ends the session and returns an error. If this field is left blank, it will use the default timeout limit, which is 120 seconds.
4. Create Device
Click Create Device and continue with the load test execution scenario.
5. Configure Test Execution Plan
Once your JMeter Test Plan has been imported, the next step is setting the test execution scenario. If you have Thread Properties set up for your JMeter Thread Group and want to stick with the same load pattern in LoadView, specify the corresponding Load Type parameters using the recommendations given.
Alternatively, you can choose from other load curve options within the Load Type section, depending on your specific testing requirements. Learn more about configuring threads and ramp-up/ramp-down periods
6. Run your Load Test and Analyze Results
Once you have completely configured your load test plan, you can run your JMeter load test. The test will go through several steps, like initializing, starting load injectors, and running the test. When the test is finished, you will be notified and can access your load test results via the Load Test Results page.
If you need any further assistance with converting JMeter load tests into the LoadView platform, please contact our technical support team.
Or you can submit a ticket from directly within the LoadView platform. To submit a support ticket, simply log in to your account. From the top right-hand side, hover over Support >Tickets to submit a request. Our team is available 24/7 to assist with all your load and performance testing needs.