Locust – A modern load testing framework
locust.io
locust.io
Furthermore there were a lot of timing inaccuracies between the same test runs. It certainly could have been a fault in our code, but ab and Httperf seemed to give a lot more reliable and useful timing information. And they are just simpler to use. For one, not being browserbased can be nice when you are trying to iterate quickly.
Not trying to sell anyone against Locust, but at the least, I recommend you take a look at ab and Httperf to make sure you don't need something a whole lot simpler.
There is another fork of it (https://github.com/giltene/wrk2) which can be used if you want test at a consistent RPS.
Locust is a tool/framework for writing code that simulates real user behaviour in a fairly realistic way. For example, it's very common to store state for each simulated user. Once you have written your "user behaviour code", you can then simulate a lot of simultaneous users by running it distributed across multiple machines, and hopefully get realistic load sent to you system.
If I wanted to just send a lot of requests/s to one or very few URL endpoints, I would also use something like ApacheBench, and I'm author of Locust.
I looked at JMeter and Gatling as alternatives but they were either a bit clunky (JMeter) or not distributed out of the box (Gatling). Late in the game I did discover Tsung (Erlang) but didn't get time to try it out - looks pretty powerful though.
[1] https://cloud.google.com/solutions/distributed-load-testing-...
[2] https://github.com/GoogleCloudPlatform/distributed-load-test...
I liked locust because it was easy to start using, but you write a decent amount of code if you have a complex application. I suggest using pyquery (https://pypi.python.org/pypi/pyquery) with it if you need to inspect any html, it was quite useful
In all seriousness, definitely going to check this out, not enough load testing is done at the company I work for, plus I want to learn more python.
Locust is awesome to start with, and has master/slave for spawning multiple servers, great for testing real concurrency with large loads. Gatling doesn't have master/slave mode yet.
Main problems with Locust are:
* Lack of good presentation of results (compare Gatling and Locust results, and Locust is very primitive)
* Lack of Pipelines/Scenarios. This IMO was a big deal breaker for me. You can't say: "100% users hit the home screen, out of which 70% add a product, out of which 25% actually pay" etc. This is easily modeled with Gatling, and the same request session with same data falls through each scenario. I'm still following https://github.com/locustio/locust/issues/171 though, but I don't think they have any idea of implementing it.
As a python developer, I'm glad to see this and will surely give this a try shortly. Thanks!
I don't use python as much as I'd like and this seems like a good work related use-case for me.