This blog post originally appeared on my blog QAInsights.com
There are lot of tools, solutions, and framework is available for performance testing. The most well-known tools such as Apache JMeter, Micro Focus LoadRunner, Gatling, Neotys NeoLoad etc., has large user base and community. When I was browsing thru chaos engineering, I landed to predator.dev page accidentally. Later I spent half-a-day to explore about Predator and its features. This blog will feature Predator and how to get started with performance testing using Docker.
What is Predator?
Predator is free, open-source, and distributed load testing tool especially for APIs performance testing. The team behind Predator is PayU. Predator supports installation in Docker, Kubernetes, and DC/OS.
You can run unlimited tests using unlimited resources with unlimited threads/virtual users. Because you will be using your own infrastructure for performance testing.
I am not going to compare Predator with other tools’ features. Each tool comes with its own set of features and limitations.
More technical definition
Predator is an open-source performance framework we created for ourselves. We were fed up with the limitations of out-of-the-box solutions and the complication of writing complex custom tests. We designed Predator to manage the entire lifecycle of stress-testing a server, from creating a test file, to running scheduled and on-demand tests, and finally viewing the test results. Bootstrapped with a user-friendly UI alongside a simple REST API, Predator helps developers simplify the performance testing regime.
On-boarding
Installing Predator is quite simple if you are already experienced in Docker or k8s or DC/OS.
For Docker:
w/o persistent storage, fire the below command
docker run -d -e JOB_PLATFORM=DOCKER -e INTERNAL_ADDRESS=http://$MACHINE_IP:80/v1 -p 80:80 --name predator -v /var/run/docker.sock:/var/run/docker.sock zooz/predator
w/ persistent storage, use
docker run -d -e SQLITE_STORAGE=db/predator -e JOB_PLATFORM=DOCKER -e INTERNAL_ADDRESS=http://$MACHINE_IP:80/v1 -p 80:80 --name predator -v /var/run/docker.sock:/var/run/docker.sock -v /tmp/predator:/usr/db zooz/predator
After successful installation, you can access the UI at http://localhost/UI or http://{$MACHINE_IP}/ui
For Kubernetes:
You can install Predator using the Helm.
helm repo add zooz https://zooz.github.io/helm/
helm install zooz/predator --version 1.3
For DC/OS:
Install thru Universe https://universe.dcos.io/#/package/predator/version/latest within the cluster.
Getting Started
To get started, I will be running Predator in Docker in Windows 10 Pro. After successful installation, Predator will be up and running in http://localhost/ui
This is how homepage looks. The user interface is built using React framework.
Before you start your first test, make sure the Settings are properly configured. Internal address should point to local IP address if you are running Predator locally.
In Settings page, you can configure Benchmarks, SMTP, Metrics, Resource configuration, and you can also do housekeeping the containers.
Sample Demo Application
Before we begin creating our first test, let us install sample pet store from Swagger docker.
docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_URL=http://localhost -e SWAGGER_BASE_PATH=/v2 -p 3001:8080 swaggerapi/petstore
I am using the port 3001 to install the Swagger pet store. Below is my sample API call to the pet’s details.
Predator does come with sample pet store docker image. But for me it did not work, hence I installed Swagger pet store.
First Test
To create your first test, click on Tests and then click on Create Test.
Let us test our demo API http://{machineip}:3001/v2/pet/10 by configuring below details in Test and then hit Submit. This will create a test and displays it in the Tests page.
You can create multiple scenarios and multiple API calls based on your test strategy.
To run the test, click on Run button as shown below. Predator uses jobs to execute the test.
Configure below job details and then clicking on Submit will trigger the test immediately.
Launch powershell or command prompt and issue docker ps command to see the running containers. Predator will create a container which will execute the tests.
Viewing Report
During the test run or after its completed, you can view the report in Last Reports page. Click on View button on the appropriate test name as shown below.
Sample report
In next blog we will see more details like architecture, Predator background, advanced features in detail. Please let me know if you have any questions. Happy to help you.
Top comments (2)
If I may chime in with an annoying meta question, roughly what level of resources would this take for me to get this to send 1m requests per second with <1kb POST requests and GET requests?
Also, is there anything similar that can do Ruthless security testing of API endpoints?
Thanks for checking out my post. Scalability testing is on my to do list. I will post another article soon. I am no expert in security testing, but Fiddler and Wireshark can also be used for security testing.