user avatar
1.5.0-9
hveldstra authored
b6fb071a

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.


Build Status gitter

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.

MPL 2.0 FAQ