All open source load testing tools don’t have the same functionality and some will better suit to your needs than others.
Open Source Drawbacks
Open source load testing tools may not be ideal, but they’re a whole lot better than skipping load testing entirely just because you don’t have room in the budget for a premium tool. That doesn’t mean you should just use the first open source tool you can find. They don’t all have the same functionality and some will be better suited to your needs than others.
The drawback to all open source load testing solutions (as opposed to cloud-based solutions like LoadView) is that all the virtual users originate on your own servers. You’ll be testing your site under ideal conditions – you won’t even be crossing your own firewall. This may be adequate for your needs, or you may eventually decide to upgrade to a premium load testing solution.
JMeter is the most popular open source load testing tool, and it’s easy to see why. It offers almost as many features as premium tools. It allows you to record test scripts via point and click, specify a maximum number of users, and validate the test scripts before running the load test. Reports include easy-to-read graphs that show a variety of performance metrics.
However, JMeter doesn’t easily scale to large-scale testing across a number of machines.
Taurus is meant to work on its own or in conjunction with other open source load testing tools, adding to their functionality. Taurus allows you to perform load testing on a specific piece of code while it’s still being developed. Instead of recording test scripts with point and click functionality, you’ll write test scripts in YAML (an easily readable coding language). Reports are displayed within the application.
With Locust, you code test scripts in Python, and the application sends a swarm of virtual users to your website (or other system) to carry out those test scripts. Locust allows you to create hundreds of thousands of virtual users. It offers a web-based UI that displays load test results in real time.
The Grinder is Java-based and can load test any system that has a Java API. It’s designed to be used by programmers, but can also be used for production load testing. It requires you to write scripts in Jython or Clojure.
Gatling uses a DSL (domain-specific language) for test scripting. The report it generates is colorful and dynamic. It works with any browser or operating system. Gatling does allow you to execute test cases in different clouds, but doesn’t allow you to distribute load between multiple machines.
Multi-Mechanize performs load tests by running concurrent Python scripts. It can be used to load test any remote API accessible from Python, but is most often used to test web performance and scalability. Reports include a variety of graphs.
Siege is another load testing tool aimed at developers. Test scripts can test basic authentication, HTTP, HTTPS, cookies, and FTP protocols. Siege doesn’t support more complicated transactions, but may still be adequate for your needs. It can be run with multiple IP addresses from the same machine, better mimicking real-world traffic. Siege isn’t suited for large-scale testing, and is most useful in the coding phase.