Performance is one of the most important aspects of any web or mobile application nowadays. And it’s not hard to see why. There have been many instances when companies loose out on their sales due to performance issues. This not only results in loss of revenues, but it also affects the company’s credibility. Therefore, it’s obviously a no-brainer for companies to work on their system’s performance. Software testers can help them by checking the application performance under large number of users. They can use various load testing tools available to accomplish this goal.
While there are many commercial load testing tools available, they may cost you a bomb. So it is advisable to go for their free alternatives if you are on strict budget.
Well, if you are also looking for some free load testing tools, you have come to a right place. Because here we have listed down some great load testing tools which you can use for free. And they are open-source. Meaning you are free modify these tools as per your requirements. What more can you ask for? Let’s check out these open source load testing tools one by one.
Open source load testing tools
JMeter is one of the most widely used load testing tools. It will not be an understatement to say that, JMeter is a go to tool for many performance testers. This tool is written in Java. Therefore, it is cross-platform. We can create our script once and it will be able to execute anywhere.
It provides a nice and simple GUI mode to create and execute our test scripts. It also lets us record our test script using built-in recorder. This results in a lot of saving in time and efforts. Apart from the usual protocol level load testing, it supports many protocols such as FTP, LDAP, JDBC etc. Not only that. Developers also use it as a unit test tool for JDBC database connections nowadays.
JMeter provides all the features that you would typically want for your ideal performance test. Be it parameterization, cookies, assertions, timers. On top of that, it also provides some really useful reports for performance test. In terms of reporting, we can get average response time, server throughput, errors and other such useful performance metrics. And if you want some snazzy reports, it also provides graphs.
JMeter is also highly extensible. We can hook up various plugins with JMeter to enable some additional features. And if you want to scale your performance tests, there is always an option to run it in distributed mode.
All in all, it’s a great tool with lot of features to offer.
Gatling is relatively new entrant in landscape of load testing tools. For the starters, It’s an open source load testing framework based on Scala. And unlike traditional load testing tools, it provides a new, programmatic way of writing load tests.
Yes, you read it right. You WRITE your performance tests. Just like you write your test automation code, albeit in Scala. While this may look a bit uncommon at first, it has its own set of advantages. These includes treating your performance tests as production code. Multiple developers or testers can collaborate in creating a robust, readable performance test. Add in a version control system and you have an easy to maintain performance test code.
So you see, it opens host of new opportunities for your performance tests. However, reporting is where Gatling wins hands down. At the end of a test run, it generates a rich HTML report which is fancy and substantial at the same time.
So if you are in search of a developer-friendly load testing tool which provides great reports, go for Gatling.
Like JMeter, The Grinder is a Java based load testing framework. Since it is based on Java, it is platform independent. It can load test anything that has Java API. This includes HTTP web servers, SOAP and REST web services as well as custom protocols such as LDAP, JMS, SMTP and JDBC.
To record a test script, it provides a TCP proxy which records network activities. Apart from recorder, you also have an option to create test scripts using Jython, a Java implementation of Python. Other programming language support includes Java and Clojure.
However, the true beauty of The Grinder lies in its distributed support. Its console controls various agents. The Grinder agents are nothing but load injecting machines. The Grinder GUI console controls them and provides results in real time.
Tsung is a load and stress testing tool which supports various protocols. These include HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and Jabber/XMPP. It is written in Erlang language.
A real strong point of Tsung is its high performance. It can simulate up to 50,000 simultaneous users per physical computer. This is a huge plus compared to other load testing tools which typically simulates up to 1000 users.
And since it allows running in a distributed mode, it is capable of simulating even millions of virtual users. In terms of reporting, it generates graphical HTML reports which provides response time measurements, server CPU and other statistics.
Among all the load testing tools, Siege is probably the simplest one. It load tests a single URL. There is also an option to test multiple URLs. Along with URL, you can specify number of virtual users to simulate.
There is another interesting feature of Siege namely Internet mode. It essentially randomizes the supplied URLs. This mimics a real-world scenario.
Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. And after the test is complete, it provides useful statistics such as response time, throughput, concurrency and errors.
So there you have it. If you are looking for a simple load testing tool with no additional bells and whistles, give Siege a chance.
Locust is yet another ‘code-centric’ load testing tool primarily created to load test websites. The idea is that during a test, a swarm of locusts (virtual users) will attack your website. The behaviour of each locust can be defined.
It allows writing test scenarios in Python. You also have an option to run your tests in distributed mode. It has a web based UI which shows test results in real time.
Here’s a fun fact about Locust. Battlelog, the web app for the Battlefield games, is load tested using Locust. So yes, it is battle-tested. 🙂
Artillery is a modern load testing framework. It supports multiple protocols such as HTTP, Socket.io and WebSockets out of the box. Artillery is written in Node.js. This makes it easy to install and lightweight as compared to other load testing tools.
Bees with Machine Guns
That’s a cool name for a load testing tool. Well, kidding aside, it’s a unique tool for sure. It basically arms (creates) many bees (AWS EC2 instances) to attack (load test) our system. This is actually a good idea. Because just using some commands, you can simulate traffic originating from different sources.Along with letting us simulate a real-world scenario, this tool scales our load test by harnessing the power of AWS. At the end of test run, it provides basic report for our load test. This report includes 50% and 90% response time, number of requests and requests per second.
Here’s another of the load testing tools which utilizes the power of AWS. Goad is an AWS Lambda powered tool built in Go language.When you run Goad from your local system, it automatically creates AWS resources and executes your tests. After the load test completion, it shows the result by region. This way you can see how fast your website is from the major regions of the world. As per the estimation, Goad can generate peak loads of up to 100,000 concurrent requests.
JCrawler has more inclination towards stress testing. Though it does not mean it is not capable of other load testing activities. Using it is simple. You provide JCrawler a set of URLs and it will start generating load on server. It comes with the crawling/exploratory feature. So it will begin crawling from the provided URL.
It is platform independent and comes with a console mode which makes it easy to monitor and run remotely. The entire configuration of JCrawler is done in XML. The important aspect of JCrawler is, it follows the hits per second pattern. This ensure that the application has constant load at any given point of time.
OpenWebLoad provides real time performance measurement of application. It also is easy to use. Since it aims to provide real time measurement, it is particularly useful in seeing the impact of your changes almost immediately.
In terms of reporting, it provides maximum and average response time, number of request and error percentage. However, the only caveat of this tool is, it is not being actively developed right now.
ab aka Apache Bench is a tool by Apache Software Foundation. The sole purpose of this tool is to benchmark HTTP server. It comes bundled with each Apache versions. So you don’t need to install it separately. Though it is specifically intended to test Apache servers, it is useful for testing any web server.
It mainly works by flooding the server with random concurrent requests. And after the test completion, it provides different metrics such as requests per second, time per request, transfer and error rates.
wrk is another HTTP benchmark tool very similar to ab. However, unlike ab, it is multi-threaded. This makes it easy for wrk to generate large load. The tool is written in C and is pretty quick and light weight. It allows writing scripts in Lua language.
In terms of reporting, wrk provides details such as latency, request per second, transfer per second etc.
So, that’s pretty much it for open source load testing tools. We hope you liked the list. Are we missing any other load testing tools here? Let us know about them in comments.