Tools to use
k6
k6
k6 is written in Go and shipped as a single executable. It will use all the cores of your source system. It uses a subset of JavaScript to run complex scenarios, and it includes test profiles. You can create complex test scenarios in JavaScript that are run efficiently. The output can be a summary or it can be detailed output for a number of target stores. Extensions are supported, but there are few well maintained extensions, aside from the official k6 extension.
Most load tests can be run from a single server, if the server is large enough, which will avoid a more complex distributed load test.
Load-test results can be forwarded to Amazon Managed Service for Prometheus, Amazon CloudWatch, or another monitoring service for a more detailed analysis. It’s also possible to include success criteria in the scenarios code to run it in continuous integration (CI) pipelines.
Vegeta
The Vegeta
This is a great way to explore back pressure scenarios or long-term behavior of backend processes, where you want to negate the influence of response times and the test. The tool is not capable of complex behavior, but you can run any sequence of requests that don’t require passing information between them.
Vegeta can also be used as a library for Go applications. In this way, you can implement your own load test, with a powerful backend. Although it might make more sense to use another tool than to implement your own test.
Hey and ab
Hey
Apache JMeter
Apache JMeter
Distributed Load Testing on
AWS
Distributed Load
Testing on AWS solution
Artillery
Artillery provides new cloud-tailored feature. One of Artillery’s standout features is the ability to execute tests directly from your AWS account by using serverless architectures such as AWS Lambda functions (containers mode) and AWS Fargate. This serverless approach eliminates the need for managing dedicated infrastructure, providing a highly scalable and cost-effective solution for load testing.
Artillery also has a built-in automation for provisioning and tearing down the necessary resources to execute the tests. Unlike traditional tools, there's no need to write infrastructure as code (IaC) scripts or manually manage cloud resources. Artillery takes care of everything, which makes it an efficient and developer-friendly choice for modern cloud-native applications.
Lastly, Artillery supports GitHub actions for integration with existing continuous integration and delivery (CI/CD) pipelines.