LOAD Testing
Originally
ADR-0009-LOAD-TESTING (v6) · Source on Confluence ↗Load Testing Tool
Context
Droneup needs to engage in load testing of applications in order to determine failure points and know how to scale to meet an increase in customer demand. Additionally, building our own load testing tool is not a viable option due to cost of development and maintenance. Therefore, an external load testing tool must be chosen.
We need a tool that is flexible enough to cover many scenarios but not so complex that it adds unnecessary overhead to developers trying to learn and use the tool. The best flexibility is offered by load testing tools that allow users to write load tests as code.
Decision
Use K6 as our load testing tool (https://k6.io/docs/)
Strategy
[Performance Testing Strategy](confluence-title://ENG/Performance Testing Strategy)
Consequences
Teams will begin including load testing scripts that are compatible with k6 in a separate performance test repo that will eventually become automated as part of the pipeline. The rough outline is:
v1 - load test scripts are included in separate repo and load tests are run from local
v2 - load tests are run as part of automation (manually triggered). Results will be uploaded to a timestamped storage bucket in JSON format
Alternatives Considered
Artillery.io - config based and not as flexible. Has cloud testing abilities but they are limited to AWS
JMeter - UI/config based. Very complex and difficult to understand/use. No native cloud support
There are many, many more load testing tools that could have been considered, but they are all doing essentially the same things. The only big difference is if they are config driven or code driven.