As such, Kraken provides a complete development environment to software programmers and load testers that seek to make the most out of Gatling:
- A code editor to create and update
.scalaGatling simulations with autocomplete suggestions and code snippets,
- Simulations debugging and comparison with HAR imports,
- Load tests analysis with aggregated data in InfluxDb displayed in comprehensive reports generated with Grafana.
Load testing is the process of putting demand on a system and measuring its response.
Gatling focuses on Web Applications. And with the current growth in both Web usage and user expectations, such applications must be stressed to a large number of concurrent users to assert their adequacy with the market. It is necessary to run simulations using several injectors (physical or virtual machines) in order to simulate a high user load.
This problematic is now addressed thanks to Kraken 2.0.
Multi-Injector on a Kubernetes Cluster
Kubernetes (K8s) is a platform for automating deployment and operations of application containers across clusters of hosts. It works with a range of container tools, including Docker.
Since Kraken was originally made to run inside Docker containers, it makes K8s the perfect solution for deploying it on multiple nodes (hosts using the K8s terminology).
So Kraken is now available in two versions:
- Kraken Docker, a completely Open Source and free load testing solution for injecting load using a local computer.
- Kraken Kubernetes, an Open Core performance testing suite capable of injecting load using any node of a K8s cluster.
Kubernetes Cluster can be easily deployed on all major Cloud providers such as Google Cloud or Amazon. Therefore, Kraken K8s can be deployed as a Cloud solution. The free licence allows you to execute load tests using two injectors. And during the Beta you can contact OctoPerf to get a free license with more capacity.
Just a quick note regarding dynamic injectors provisioning. You may be familiar with OctoPerf and its capacity to start injectors from any geographical location on the fly. Kraken is not made the same way and does not start machines on demand. It relies on the existing nodes of a K8s cluster and starts Pods to conduct the load test. This is a less flexible solution than OctoPerf’s Cloud providers but offers static IPs (Like OctoPerf’s on-premise providers).
Technically speaking, we leverage microservices to quickly mutate Kraken and make it possible to support both execution environments: pure Docker and Kubernetes.
Previously, running load tests was done by executing
docker-compose shell commands directly from the backend.
Now, a dedicated Runtime backend handles the execution of the tasks. A Storage backend has been created to handle files sharing across all containers.
The analysis backend has not changed much and still relies on InfluxDB and Grafana to produce test result dashboards.
Several docker images have been created to encapsulate the HAR import, debugging and execution of Gatling simulations while updating the runtime backend of the progress made.
The Docker runtime backend still executes a shell
docker-compose command to run these Docker containers locally while the K8s runtime backend starts Pods on the cluster.
The Docker installation uses HAProxy to redirect HTTP requests (frontends, documentation, REST APIs, …) to the appropriate backend. On Kubernetes redirection rules are configured using Ingress.
The following videos give an overview of what can be done using Kraken. These tutorials start with the HAR import then explains how to compare recorded requests/responses with debug ones and finally explains how to run a load test on several K8s nodes.
Activate the subtitles to get a description of what is being done during each video!
How to import a previously recorded HTTP archive into Kraken?
Please read OctoPerf’s documentation to know how to record a HAR with several Web Browser. This video explains how to import it in Kraken. A Gatling simulation is automatically generated and all couples of request sent/response received are aggregated as Debug Entries. These entries can be examined once the import is done.
Debug Gatling Simulation and Compare to Record
How to debug a Gatling simulation and compare it with recorded values?
This video explains how to debug a Gatling simulation. A Debug Entry (couple of the request sent and the corresponding response received) is generated for every request in the script. You can compare these entries with the ones of the HAR import. You can also compare subsequent debug executions.
Run Gatling Simulation on Multiple Hosts
How to run a Gatling load test on multiple injectors?
This video explains how to execute a Gatling simulation on 3 hosts using Kraken. It also describes the generated Grafana report (visible and editable during the test execution).
Midterm Roadmap: What’s Next?
Another web application is deployed along the Gatling UI when you install Kraken: the administration UI. It allows you to modify Gatling configuration files for each type of task (HAR, Debug and Run) so it should be used with caution as a wrong configuration may break your tests.
It also offers a table view of all available hosts that can be used to run load tests.
In the Kraken Docker version, only one static host is available. In the Kubernetes version, all hosts that have the label
com.kraken/hostId can be used.
Hosts are currently computed when the backend starts and cannot currently be updated. It should be fixed very soon with the possibility to:
- Add hosts manually when they are added to the K8s cluster,
- Rename existing hosts,
- Set memory and cpu limits that can be used by the task executions.
Several other enhancements and bug fixes should come soon with the release of the version 2.1.0.
Once this is done the next big steps for Kraken will be made:
- Users and groups management,
- Git integration,
- Support for other tools like Selenium, Postman, etc.
Please comment if you have any feedback for the current release (don’t forget that both Kraken Docker and K8s are completely free during the Beta) or if you think some features are missing.
What other testing tool than Gatling do you think Kraken should support next?