Artillery - modern, powerful, easy-to-use load-testing framework
At A Glance
- Load-test HTTP, WebSocket and Socket.io applications
- Specify scenarios to simulate complex virtual user behavior (perfect for transactional APIs, ecommerce applications etc)
- Detailed performance metrics (latency, requests per second, concurrency, throughput)
- Dynamic payloads from external CSV files (e.g. usernames/passwords for making auth requests)
- Scriptable with JS
- HTML reports
- Nice CLI
- Good performance
- Statsd support out of the box for real-time reporting
Artillery has a strong focus on developer happiness & ease of use, and a batteries-included philosophy.
Artillery's goal is to help developers build faster, more resilient and more scalable applications.
- Source: https://github.com/shoreditch-ops/artillery
- Issues: https://github.com/shoreditch-ops/artillery/issues
- Chat: https://gitter.im/shoreditch-ops/artillery
- Docs: https://artillery.io/docs/
- Website: https://artillery.io
- Twitter: @ShoreditchOps
Use Cases
- Benchmark the performance of your API or microservice as you're building it
- Ensure new code does not introduce performance regressions
- Test your code for memory leaks
- Benchmark dependencies (libraries, frameworks, external services) to get a feel for their performance characteristics before you integrate
- Run load-tests before you launch to ensure your application can meet projected demand
Quickstart
Install
Artillery is available via npm
$ npm install -g artillery
Run A Quick Test
$ artillery quick -d 30 -r 5 http://127.0.0.1:3000/test
This will run a test for 30 seconds with an average of 5 new requests to
http://127.0.0.1:3000/test
every second.
Run With A More Complex Scenario
$ artillery run hello.json
Where hello.json
is your tests script that contains something like:
{
"config": {
"target": "http://127.0.0.1:3000",
"phases": [
{ "duration": 120, "arrivalRate": 10 }
],
"defaults": {
"headers": {
"content-type": "application/json",
"x-my-service-auth": "987401838271002188298567"
}
}
},
"scenarios": [
{
"flow": [
{ "get": {"url": "/test"}},
{ "think": 1 },
{ "post": {"url": "/test", "json": { "name": "hassy" }}}
]
}
]
}
Create A HTML Report
Create a graphical report from the JSON stats produced by artillery run
with:
artillery report <report_xxxxx.json>
Learn More
See Artillery docs for docs and examples.
Contributing
Thinking of contributing to Artillery? Awesome! Please have a quick look at the guide.
License
Artillery is open-source software distributed under the terms of the MPL2 license.