TL;DR: XLT now supports JMeter test suites, offering enhanced debugging, deeper reporting, and cost-effectiveness for JMeter users. It’s open-source and allows you to leverage XLT’s execution and evaluation features with your existing JMX files without vendor lock-in. Simply integrate your .jmx files into the XLT test suite, configure, and run for detailed performance insights.
Are you a JMeter user looking for more robust debugging, deeper insights, and a more streamlined performance testing workflow without abandoning your existing test assets? Do you find other commercial tools like BlazeMeter or OctoPerf to be beyond your budget? If so, we have exciting news! XLT, our powerful load and performance testing tool, now offers dedicated support for JMeter test suites, giving you the best of both worlds.
This integration isn’t about replacing JMeter; it’s about empowering your existing JMX files with XLT’s execution, evaluation, and reporting features. It allows you to protect your investment in JMeter scripts while providing a clear path to leverage XLT’s capabilities, whether you choose to gradually migrate or simply enhance your current JMeter-centric process.
And the best part? Both XLT and this JMeter integration are open source, licensed under the Apache License 2.0. We actively invite you to participate, contribute, and help us make performance testing even better for everyone.
Why Combine JMeter with XLT?
The core idea is simple: continue using JMeter for what it does best – recording, editing, and maintaining your tests. However, when it comes to execution and evaluation, XLT takes over. This seamless handover provides several significant advantages:
- Enhanced Debugging: Gain crystal-clear insights into executed actions, requests, and responses, making troubleshooting much faster and more efficient.
- Deeper Reporting: Leverage XLT’s comprehensive reporting capabilities for a more granular understanding of your performance tests.
- Cost-Effectiveness & Open Source Freedom: Avoid the high costs associated with some commercial performance testing solutions while gaining enterprise-grade features. Being open source means transparency, flexibility, and no vendor lock-in.
- Protect Your Investment: Your existing .jmx files remain valuable and fully usable within the XLT ecosystem.
- Flexible Migration Path: You can continue developing in JMeter and execute with XLT, or gradually transition more logic into XLT over time as your needs evolve.
Getting Started
To get started, you’ll need a few prerequisites and then follow a straightforward process.
Requirements
- Java Version 21
- An existing .jmx file for test execution (created with JMeter).
Tip: You can find several example JMX files in <testsuite>/config/data/jmeter.
How To Use
- Clone the test suite: Get the dedicated XLT JMeter support test suite from its repository.
- Prepare your test plan: Build a new JMeter test plan or use an existing .jmx file.
- Save your .jmx file: Place your .jmx file into the
<testsuite>/config/data/jmeter
directory. - Open in your IDE: Import the XLT test suite into your preferred Java IDE.
- Locate your file: Confirm your .jmx file is visible under config/data/jmeter.
- Integrate your test: Go to
src/main/java/com/xceptance/loadtest/jmeter/tests
and add your test. - Map your test case(s): Add your new test case(s) to the XLT test case mapping.
- Configure active tests: Include your test case(s) in the list of active test cases within your test configuration.
- Run and review: Save and run your test. You’ll find the detailed browser results in
<testsuite>/results
.
This is an example of the simplest JUnit test case required to run a JMeter test with XLT.
1 2 3 4 5 6 7 |
public class YourTestCaseName extends JMeterTestCase { public YourTestCaseName() { super("yourTestFile.jmx"); } } |
Important Considerations
To get the most out of this integration, keep these points in mind:
- Naming Conventions: Always provide meaningful names for thread groups, transactions, and requests in JMeter. These names directly translate to clearer reports in XLT. If no names are provided, XLT will generate default names.
- One JMeter File Per Test Case: For optimal reporting and management, treat each .jmx file as a single test case in XLT and limit it to one thread group.
- Transaction Controllers & Reporting:
- Transaction Controllers in your .jmx file will be listed as “Actions” in the XLT report.
- If “Generate parent sample” is selected for a Transaction Controller, all requests under it will be grouped. If disabled, requests will be listed individually.
- JMeter Dependencies: upgrade.properties, saveservice.properties, and jmeter.properties are taken from the default JMeter setup. If you have custom values, add these files under your created site.
Supported JMeter Functionality
The XLT JMeter integration offers broad support for common JMeter elements because it uses JMeter under the hood. We have not built an interpreter of JMX files, we put the JMeter engine into the test suite. Behind the scenes, we redirect the traffic to our HttpClient, capture the measured data, and control the traffic using the means of XLT.
- Thread Group: While JMeter defines them, XLT handles thread management (loops, ramp-up, users) via XTC and properties. All thread groups in one .jmx file are executed sequentially (though one active thread group per .jmx is recommended for clarity).
- HTTP Request: Supports simple HTTP requests and HTTP multipart.
- Pre-Processors: Fully implemented as in JMeter.
- Assertions: JMeter’s assertion checkers are implemented and trigger events in XLT. XLT also supports JMeter’s “continue” (events only) and “stop” functions (affecting ResultBrowser and errors).
- Post-Processors: Fully implemented as in JMeter.
- Loop Controller: Works with its internal counter.
- While Controller: Works with its internal counter.
- CSV Data: Supported. Place .csv files in
<testsuite>/config/data/jmeter/data
. Dynamic path resolution from JMeter is also supported by placing the file in the same folder as the .jmx file.
Limitations
While powerful, there are a few limitations to be aware of:
- XPath2 Assertions: Not yet supported.
- Load Configuration: Load test configurations (like ramp-up, users, duration) are not read from the JMeter file. These are managed the classical XLT way via property files. Think times and load are controlled by XLT.
- Multiple Thread Groups: It is strongly recommended to have only one active thread group per scenario (.jmx file) for clearer reporting and separation into independent test scenarios.
The test suite is also a work in progress. Consider it in beta. We’re actively looking for your feedback, contributions, and suggestions.
Ready to Supercharge Your JMeter Tests?
This new integration provides a flexible and powerful way to elevate your performance testing. By combining the familiarity of JMeter with the advanced capabilities of XLT, you can achieve deeper insights, streamline your workflows, and conduct more effective load tests, all while protecting your existing investments.
As an open-source project under the Apache License, we encourage you to try it out, test it, and even contribute! Your feedback and participation are invaluable as we continue to develop and enhance this powerful integration.
Give it a try and discover how XLT can supercharge your JMeter performance testing today!