It’s not enough to decide how much load you want to generate. You also have to know how you’re generating it.
Your approach affects what part of your application is tested, the results returned, and the budget you’ll need to run your test.
Here are three main categories of load testing tools:
Protocol-based load testing tools:
These tools simulate the underlying messages sent back and forth between an application and a client.
Choose a protocol-based tool if: you want to generate massive load, you want to load test before components are integrated, you want to test APIs, or you are budget-conscious.
Best in class tools: Gatling, JMeter, k6, Locust, Neoload
Browser-based load testing tools:
These tools automate real user interactions with an interface.
Choose a browser-based tool if: you want to measure end-to-end performance, you want to reuse your browser automation scripts, you want front-end performance metrics, or you have a higher budget.
Best in class tools: Cypress, Flood Element, k6, Playwright, Puppeteer
Hybrid load testing tools:
This approach is a mixture of the previous two. You can do this in a few ways:
- Use a protocol tool to generate the majority of the load, and a browser tool for a handful of virtual users (best functionality, highest effort/cost)
- Use a browser-based tool for all load (expensive, simplest)
- Find a tool that can do both (ideal solution, few options)
Whatever you choose, compare like with like.