The Load Test Tool for Software Development
What is XLT?
From Performance Testers For Performance Testers
Born out of necessity, XLT has grown into a premier load and performance testing tool, featuring unrivaled capabilities and scale.
Ready-to-use and extremely detailed reports were base requirements from the start, as was the ability to write tests in pure Java code. Tests can be scaled extensively, even with the open-source version.
You can run your tests as JUnit tests in your preferred IDE, making them debuggable like any other program. Furthermore, the result browser greatly aids diagnostics.
XLT is not your everyday load testing tool. Imagine it as an extremely sharp Swiss Army knife, offering versatility and flexibility. Whether you face extraordinary challenges or navigate everyday load testing scenarios, XLT ensures you are always prepared.
XLT is open source under the Apache License, and you can find its source code on GitHub.
The Quick Feature Summary
XLT is the product of Xceptance's long-term experience in load and performance testing.
Writing
Test scripts are written in Java and you can do what Java offers, no limits. Debug, add libraries, use the power of your IDE.
Load Profiles
Flexible load profiles for user and arrival rate models are avaialble. The arrival rate model addresses the coordinated omission problem.
Reporting
Extensive reporting what is just right. No data is dropped, recreate new views at any time. Merge, split, and annotate data.
Scale
Scale to any number of machines and users. Coordinate the test from your own or other machines. You can even go offline without harming the results.
Debugging
Debug with our result browser and with your favourite Java-IDE. Just develop load tests like any other program.
Open Data
All data is open, documented, and ready for your own data crunching, if needed. Nothing is dropped!
Real Browsers
You can use real browsers for load testing to handle the complicated setups easily. If you can test automate it, you can load test it.
Configuration
Configuration belongs into the code base as well. Use classic property files or YAML structures with one of our enhanced test suites.
These are just a few of the most important features of XLT. The list is long and every feature was shaped by a concrete testing need. Nothing was built to just check off one point.
Features
XLT is the product of all our long-term experience in load and performance testing. It also makes use of well-known technologies such as WebDriver, Apache HttpClient, and HtmlUnit.
Known Technologies
Built on well-known components
XLT utilizes what you already know, Java, JUnit, WebDriver, and HttpClient. All this gives you the tools to get the most out of XLT. It integrates well, you can extend it well, and you won't have a hard time mastering it. Absolutely platform-independent. We built XLT on well-known and tested foundations.
- Java is the scripting language when scripting is required. Use your favourite IDE, profilers, and debuggers.
- JUnit allows easy integration into test automation processes.
- Result data is delivered as CSV for optional post-processing.
- Reports are HTML for easy sharing.
- Reports are rendered from XML via XSL for easy adjustments of content and layout.
- Reports feature an XML data file for machine-based evaluation.
- The command line helps you automate everything quickly.
- WebDriver is used for functional testing as well as client-performance testing.
And last but not least, XLT is platform-independent. Write on Windows, run on Linux. Compose on Mac, deploy on Windows. The possibilities are endless.
Deployment & Cloud
Easy to install, no OS dependencies whatsoever
XLT is platform-independent and you just have to unzip it. If you need ready-to-go cloud images, we provide Amazon Web Services EC2-AMIs free of charge.
You can deploy XLT to any cloud provider and use any OS that has support for Java 11. We strongly recommend Linux server environments for running large tests.
XLT runs HTTPS-based communication with authentication to communicate between controller and agents. You can use proxies, authentication, and your proven tools to deploy and run XLT. Our goal was to keep it as simple as possible, to make it as flexible as possible.
Awesome Reporting
Out-of-the-box reporting that is just right
XLT provides best-practice reports out of the box, based on over a decade of load and performance testing experience.
Load Test Reports
The XLT performance report includes everything you need to know about your application. Besides the obvious data such as runtime totals, averages, and percentiles. It also features service-level-agreement numbers, lists the configuration of your test as well as all errors and problems. Furthermore, it provides comprehensive measurement results at various levels, from transactions and actions to individual request types.
Comparison Reports
If you run a test again and you want to know if the later round was in fact better, you can generate a comparison report.
Trend Reports
A trend report shows how performance developed over many test runs. It also uses color codes to visualize the changes.
Easily Adjustable
Add new data sources, modify the report content and layout, build powerful test suites as frameworks for even more testing.
A good tool has to be adjustable to the environment it is used in. Thus, XLT supports many ways to be extended or modified to fit your needs even better.Reports
All reports can be adjusted in content and layout, because we deliver the CSS and the render templates as part of XLT. So if you need custom layouts of reports, you are covered. You want to have your own summary of data? Not a problem. You want to reduce the data? Fine as well.
Custom and External Data
During a load test, XLT logs a large amount of data relevant to the test run. Nevertheless, sometimes it comes in handy to log additional information about the system under test. For this purpose, XLT provides custom values.
The XLT report generator lets you include external data files in the report. This can be used if it’s impossible to directly access the external data source during the load test runtime.
Use Java
If there is anything that is not part of XLT, you can use Java to make it happen. Of course there are limits, because you can influence the measurements or limit the scaling, but with that in mind, a lot of things are possible.
Made for Automation
Java as script language, open data formats, command lines, JUnit test principle, WebDriver support, and much more.
XLT is made to be integrated into all kinds of automation processes. No matter if it‘s just a shell script or a full build process.
We built XLT in a way that perfectly gets along with your preferred IDE, the command line, build processes, or just with a little bit of shell scripting.
Load Profiles
Realistic or predictable, your choice
XLT supports a very flexible setup of load profiles ranging from steady user rates to arrival rates. Compose long-running test setups to reflect what happens during a day, absolutely freely configurable.
Load Profile Features
- Arrival rate model for realistic simulations.
- Steady user rate for predictable measurements.
- Ramp-up for gradually increasing traffic.
- Free configuration to compile challenging tests.
Freely Configurable
Do you need to have a test where, after a slow ramp-up of low traffic, the load jumps within a minute to peak traffic, stays on that level for 10 minutes to then come back in waves? Well, XLT lets you do so. No limits. It works for arrival rate-based tests as well as for user-based tests.
Shareable
Test suites and configurations can be shared easily
XLT reports are easily sharable with anyone. They are not connected to XLT anymore after they have been created.
All reports are plain HTML. So you can zip them up, mail them, upload them, attach them, and share them with whatever system you prefer.
Did you know that you can start your load test from one machine, and collect the results from another? Or maybe your co-worker can collect the data later and analyze it for you, while you're already on your way to a meeting.
See Everything
See what happens in a scenario in case of a problem
The result browser is your tool to visually check the loaded pages and debug problems during test execution.
During script development, the result browser shows you all details about your recently executed script, so you can make sure that you covered everything and that the requests match the real traffic.
When errors occur during load testing, the last moments of the transaction are saved, including the downloaded data and all technical details. You can thus see what was sent and received. When you use the request-ID feature of XLT, you even get a unique ID you can match against your server logs.
Verify Everything
Assertions permit to verify everything
A test is only as good as its verifications. XLT supports and encourages as much validation as possible to really make sure that the pages loaded match the expectations.
You can use the full syntax of assertions known from JUnit and Selenium. If you like Hamcrest, include it, XLT gives you that flexibility. XLT also provides access to all sub-requests of a page, so you can run even more detailed validations.
Scalable
Run load tests from any number of machines, locations, and nearly unlimited users
You can utilize an unlimited number of machines for your load testing. Scale up across datacenters easily. XLT orchestrates the load distribution, uploads, and downloads on its own.
Scale up XLT per machine by bringing up more processes for perfect hardware utilization. Scale up across machines easily by adding more locations. XLT uses differential and concurrent up- and downloads for maximum speed.
The load is automatically distributed across all load-generating agents. If you use heterogenous hardware, you can attach a weight to each machine to indicate a different speed or size.
Installing XLT is easy and only takes a few minutes. It leverages HTTPS and authentication for protecting your agents. Bind XLT agents to any port you wish.
Preconfigured Amazon Web Service Images (AMIs) get you started quickly on Amazon EC2. Just start it and you are good to go.
Configurable
Set timeouts, keep-alive, compression, image loading, permitted hosts, thinktimes, error handling, and much more.
To match the behavior with your testing needs, lots of parameters can be adjusted.
XLT offers a richt set of options to modify the behavior so that all kinds of different configurations can be tested.
Archivable
Open formats for reports and results
XLT uses open formats for results and reports. Perfectly suited for storing them anywhere.
Result data and HTML reports are separated so you can easily make a decision if you want to store a lot of data or just the final outcome. Stored result data can be turned into reports anytime again on any machine.
Reports and results store your full test configuration. Repeating the exact same run days or weeks later is a matter of seconds.
Documentation
Resources and Links
The documentation is also open source. We encourage your contributions, suggestions, and feedback.
Download
Get the Latest XLT Version
XLT Software Package
Download XLT for free (about 100 MB). It supports MS Windows, OSX, Linux, and FreeBSD. If it runs Java, it runs XLT. JDK 17 required, JDK 21 recommended.
The Quick Start Guide provides information to get started. The documentation is open source, allowing you to contribute and improve it.
Visit GitHub for the full source code. We welcome your contributions.
Amazon Machine Images
We provide AMIs for use with Amazon EC2 with XLT installed and configured for use as load agents. Amazon will charge you for infrastructure usage. Make sure your security group permits communication on port 8500, the XLT agent port.
A list of current images can be found next to the release information on GitHub.
If a containerized deployment or an alternative template better suits your needs, check out our XLT-Packer Project.
Licensing
XLT is Open Source under the Apache License v2.0