Today it’s the turn of Jmeter and K6 ! As always, remember to check your other options and see what better fits for your project.
Jmeter is a great and powerful tool, but depending on what you really need (something more lighter) then Jmeter might become an over complex, slow, hard to maintain tool.
Jmeter | K6 | |
In-built Protocols Support |
|
|
Speed to write tests |
|
|
Support of โTest as Codeโ |
|
|
Ramp-up Flexibility |
|
|
Test Results Analyzing |
|
|
Resources Consumption |
|
|
Easy to use with Version Control Systems |
|
|
Number of Concurrent Users |
|
|
Recording Functionality |
|
|
Distributed Execution |
|
|
Load Tests Monitoring |
|
|
Jmeter is most used when:
- You need to perform a complex load including different protocols
- You can record scenarios
- Robust support and training ecosystem
- Require that a full scenario be written for every test
- If you need to simulate specific load with some custom ramp-up patterns
- If you just prefer UI desktop app for scripts creation, or you just do not know Javascript/YAML/JSON well enough
K6 solves some specific problems:
- CLI tool with developer-friendly APIs.
- You can use HAR files to generate record sessions
- Checks and Thresholds – for goal-oriented, automation-friendly load testing
- Open source, great support and documentation
- Lightweight uses Javascript
- Does not run in NodeJS and doesn’t run in a browser
Resources:
Why do you think K6 has distributed execution capabilities? Just because its Cloud Service provides distributed execution capabilities? I think it’s controversial that you simply wrote support
Hello, you can run k6 in different instances if you need it, but unless you need more than 100,000-300,000 requests per second (6-12M requests per minute), a single instance of k6 will likely be sufficient for your needs. Cloud services support is another topic which jmeter and k6 were compared against ๐
https://stackoverflow.com/questions/58408705/are-k6-http-calls-asynchronous#:~:text=Fortunately%2C%20k6%20currently%20does%20not,or%20more%20generally%2C%20event%20loop.
According to this post, k6 currently does not support asynchronous calls. This means our throughput is dependent on the response time of the API calls.
Example: If I set VU = 50 and API response time is 1s, I will be able to generate a load of 50 * 60 = 3000 RPM.
Jmeter will help us make async calls and we can generate load at higher RPMs for same number of VU
https://stackoverflow.com/questions/58408705/are-k6-http-calls-asynchronous#:~:text=Fortunately%2C%20k6%20currently%20does%20not,or%20more%20generally%2C%20event%20loop.
According to this post, k6 currently does not support asynchronous calls. This means our throughput is dependent on the response time of the API calls.
Example: If I set VU = 50 and API response time is 1s, I will be able to generate a load of 50 * 60 = 3000 RPM.
Jmeter will help us make async calls and we can generate load at higher RPMs for the same number of VU