- What Artillery is and why you’d want use it
- Artillery’s philosophy
- Key Artillery features
Artillery is a modern, powerful & easy-to-use performance testing toolkit. Use it to ship scalable applications that stay performant & resilient under high load.
Artillery prioritizes developer productivity and happiness, and follows the “batteries-included” philosophy.
You can use Artillery to run two types of performance tests:
- Tests that put load on a system, i.e. load tests, stress tests, and soak tests
- Tests that verify that a system is working as expected, i.e. continuous functional tests, also known by a number of other names such as: synthetic monitoring, semantic monitoring, production scripted testing, and continuous verification. Think
pingon steroids - automated probes running continuously against services & APIs to test key user journeys.
Artillery is designed for testing backend systems, such as API services, ecommerce backends, chat systems, game backends, databases, message brokers and queues, and anything else that can be communicated with over a network.
It can be used to test any backend regardless of what protocol it speaks or what language it’s written in. Artillery supports HTTP, WebSocket, and Socket.io out of the box, and many additional protocols such as HLS, Kinesis, and Kafka via plugins. Support for additional protocols can be added via Artillery’s plugin interface.
Artillery is typically used across teams responsible for delivery, testing, and operating production backend systems: from application developers, to test & QA engineers, and ops/SREs.
Artillery is used in a large variety of scenarios, which typically include:
- Running ad-hoc load tests against individual APIs or microservices as part of a development process to explore their performance characteristics, and make performance optimizations if needed (e.g. preventing memory leaks or optimizing CPU-heavy code)
- Running tests against staging/feature environments as part of a CI/CD pipeline to catch performance regressions early, and to verify SLOs
- Large-scale load tests before production releases of new services, or to prepare applications and infrastructure for heavy traffic, such as Black Friday/Cyber Monday traffic
- Adding synthetic traffic in production to maintain a margin of safety against traffic spikes
- Running synthetic monitoring against key APIs from multiple geographical locations to verify that key transactions & flows work as expected, and alert if anything breaks
Artillery consists of Artillery Core - a free, open source tool, which can be used to write and run load and functional tests, and Artillery Pro - a commercial subscription-based package which adds features for enterprise teams, such as the ability to run large-scale tests from your organization’s own AWS account.
Artillery Pro builds on top of Artillery Core to provide a self-hosted (AWS) performance testing solution. It provides development teams with an internal self-service performance testing platform, with the ability to run large-scale tests with no resource limits, and additional enterprise-grade features, such as the ability to run tests from multiple geographical regions.
Every feature of Artillery Core is available in Artillery Pro, which provides a seamless upgrade path from tests running on a developer’s machine, to scaling up & running the same test scripts from your organization’s AWS account.
Our mission is to help development teams ship performant, resilient, and scalable software systems.
We believe that software is eating the world. Complex software systems underpin all aspects of our daily lives. There are no industries that don’t rely on software anymore - hundreds of software systems were involved in getting your breakfast cereal to your cupboard for example.
At the same time, software systems are only getting more complex, and complexity is the enemy of performance and reliability. As our dependence on software system grows, the importance of shipping performant and reliable software grows along with it.
We believe that performance is a feature. Software which is fast and reliable makes for happier users, and happier users make for more revenue.
We believe that performance is everyone’s job and requires cross-functional collaboration between product owners, developers, QA engineers, ops & SREs.
Artillery prioritizes developer productivity above everything else. We believe that performance tests should be as easy to write and run as possible. Every product decision in Artillery is viewed through the lens of developer experience and a batteries-included philosophy.
- Functional and load testing in one package - Re-use the same scenarios to run either load or functional tests. Use assertions and expectations on the responses, and easily extract and store data from responses to re-use in subsequent requests.
- Batteries-included - test any system regardless of the protocol it speaks or tech stack it’s built upon. HTTP, Socket.io, and WebSockets are supported out of the box, with support for many other protocols available via plugins (gRPC, Kafka, Kinesis, SQL, Lambda). A number of monitoring systems are supported out of the box (Datadog, InfluxDB, Statsd), with third-party plugins providing support for other systems.
- Designed for cross-team collaboration - Artillery’s readable YAML-based test scripts encourage collaboration across teams and functions. No knowledge of any specific programming language is needed to read and understand Artillery scripts. We believe that performance is everybody’s job and YAML makes it easier for everyone to contribute.
- Plugins and extensions - Artillery ships with several plugins to make common tasks easier, and there’s a number of ready-to-use community plugins available
- Run your tests at scale - Artillery Pro makes it easy to go from running a test on a developer’s machine, to running geographically distributed massively parallel load tests from your team’s own AWS account, including a fully-serverless option so that there’s no infra to manage.
one of fundamental rules of reliability engineering