load-testing-toolkit
load-testing-toolkit copied to clipboard
Collection of open-source tools for debugging, benchmarking, load and stress testing your code or services.
Load Testing Toolkit
“I have enough trouble with useful information, never mind being burdened with what is useless.”
― Erlend Loe, Naïve. Super
Collection of open-source tools for debugging, benchmarking, load and stress testing your code or services.
NOTE: Unfortunately I've found this original awesome collection too late: awesome-http-benchmark.
Feel free to follow and contribute to it instead of this collection, which remains my personal variation and working copy.
In alphabetical order.
Contents
- Debugging & API testing
- Benchmarking & load testing
- DoS/DDoS penetration testing
- Traffic replay
Debugging & API testing
-
baloo - Expressive and versatile end-to-end HTTP API testing made easy in
Go
. -
bat - A curl-like tool for humans, inspired by httpie, written in
Go
. -
curl - A command line tool and library for transferring data with URL syntax.
C
-
curlie - The power of curl, the ease of use of httpie.
Go
-
curlx - Supercharge curl with history, collections and more.
JavaScript
-
hopp-cli - An HTTP CLI client for hoppscotch, an alternative to curl, httpie.
Go
-
httpcat - A simple utility for constructing raw HTTP requests on the command line.
Python
-
httpie - Modern command line HTTP client, user-friendly curl alternative with intuitive UI, JSON support, syntax highlighting, wget-like downloads, extensions, etc.
Python
-
httpie-go - httpie-like HTTP client written in
Go
. -
httping - A ping-like utility for HTTP requests.
C
-
httpstat - curl statistics visualization in a way of beauty and clarity.
Python
-
hurl - A command line tool to perform HTTP requests defined in a simple plain text format.
Rust
-
wuzz - Interactive command line tool for HTTP inspection.
Go
-
xh – Yet another httpie clone in
Rust
.
Benchmarking & load testing
http/s
-
ab - ApacheBench, single-threaded Apache HTTP server benchmarking tool.
C
-
ali - A load testing tool capable of performing real-time analysis, inspired by vegeta, written in
Go
. -
apachebench-ab - Standalone version of ab, Apache HTTP server benchmarking tool.
C
-
apib - A simple, fast HTTP and API benchmarking tool.
C++
-
autocannon - Fast HTTP/1.1 benchmarking tool written in
Node.js
, greatly inspired by wrk and wrk2, with support for HTTP pipelining and HTTPS. -
baton - HTTP load testing written in
Go
. -
beast - Stress testing for RESTful APIs.
Go
-
beeswithmachineguns - An utility for arming (creating) many bees (micro EC2 instances) to attack (load test) targets (web applications).
Python
-
benchttp - HTTP server benchmarking tool, implements the most commonly used features of ab.
Go
-
bender - An easy-to-use library for creating load testing applications.
Go
-
bfg - A modular tool and framework for load generation with HTTP/2 support.
Python
-
blast - A simple, protocol agnostic tool for API load testing and batch jobs.
Go
-
bombardier - Fast cross-platform HTTP benchmarking tool written in
Go
. -
boom - A replacement for ab, written in
Python
. -
carrot - Distributed WebSocket and HTTP load testing framework in
Go
. -
cassowary - Modern cross-platform HTTP load testing tool written in
Go
. -
chaperon - HTTP service performance & load testing framework.
Elixir
-
curl-loader - A load generating tool written in
C
, simulating HTTP/S, FTP/S and TLS/SSL clients each with own IP-address. -
drill - A HTTP load testing application, written in
Rust
, inspired by Ansible syntax. -
encarno - Load generator for HTTP with high throughput and high precision.
Go
-
f1 - A flexible load testing framework using
Go
for test scenarios. -
fasthttploader - HTTP benchmark (kinda ab) with autoadjustment and charts based on fasthttp library.
Go
-
fbender - A load testing command line tool for generic network protocols, originally based on bender library.
Go
-
fortio - Load testing library, command line tool, advanced echo server and web UI in
Go
. -
freeloader - Super easy load testing framework, with load scenarios in
JavaScript
. -
go-meter - A HTTP benchmark tool written in
Go
. -
go-wrk - A small heavy duty HTTP/S benchmark tool, similar to wrk, but written in
Go
. -
goad - An AWS Lambda powered, highly distributed, load testing tool.
Go
-
gobench - HTTP/S load testing and benchmarking tool.
Go
-
gocannon - A lightweight HTTP benchmarking tool, intended to measure changes in backend application performance over time.
Go
-
gohttpbench - An ab-like benchmark tool run on multi-core cpu.
Go
-
goku - HTTP load testing application written in
Rust
. -
goose - A
Rust
load testing tool inspired by locust. -
goperf -
Go
based load tester with a simple intuitive command line syntax. -
hargo -
Go
library and command line utility that parses HAR files, can convert to curl format, and serve as a load test driver. -
hey - HTTP load generator, ab replacement.
Go
-
htstress - Fast HTTP benchmarking tool, similar to ab but provides multithreading support.
C
-
httperf - A tool for measuring web server performance.
C
-
httpit - A rapid HTTP/S benchmark tool, written in
Go
. -
httpress - High performance HTTP server stress & benchmark utility, inspired by weighttp.
C
-
hulken - Stress testing tool for everything speaking HTTP.
JavaScript
-
hurl - HTTP server load test and parallel curl utilities.
C++
-
iago2 - A load generator, built for engineers.
Scala
-
jbender - A port of bender to the JVM platform with Quasar lightweight threads (fibers) and channels.
Java
-
jetty-load-generator - An API for load testing HTTP servers, based on Jetty's HttpClient and
Java
11+. -
legion - A
JavaScript
-based load testing tool for HTTP servers and other kinds of software. -
loadtest - A
JavaScript
package for load testing with HTTP/S and WebSockets support and API for easy integration. -
mgun - A modern tool for load testing HTTP servers, written in
Go
. -
molotov - Simple
Python
3.5+ tool to write load tests. -
nbomber - Very simple load testing framework for Pull and Push scenarios, written in
F#
and targeting .NET Core and full .NET Framework. -
netling - Load testing client for easy web testing.
C#
-
node-ab - A command line tool to test the performance of HTTP services.
Node.js
-
node-vegeta -
Node.js
bindings for the vegeta load testing library. -
oha - HTTP load generator, inspired by hey with tui animation.
Rust
-
pandora - A load generator in
Go
, with built-in HTTP/S and HTTP/2 support and load scenarios inGo
. -
pewpew - Flexible HTTP command line stress tester for websites and web services.
Go
-
plow - A high-performance HTTP benchmarking tool with real-time web UI and terminal displaying.
Go
-
ponos - Simple yet powerful load generator written in
Erlang
. -
pounce – HTTP benchmark utility, written in
C
. -
pronk - A small command line application for load testing web servers.
Haskell
-
reqstress - A benchmarking & stressing tool that can send raw HTTP requests, written in
Go
. -
rewrk - A modern HTTP framework benchmarking utility supporting HTTP/1 and HTTP/2 benchmarks.
Rust
-
salvo - Like boom, but based on molotov.
Python
-
siege - A HTTP load tester and benchmarking utility.
C
-
slapper - Simple load testing tool with real-time updated histogram of request timings.
Go
-
slow_cooker - A load tester focused on lifecycle issues and long-running tests.
Go
-
sniper - Powerful and high-performance HTTP load tester, written in
Go
. -
stress - Simple
Node.js
tool for stress testing HTTP services. -
terjang - Scalable HTTP load testing tool built on vegeta.
Go
-
thrash -
Go
HTTP micro benchmarker. -
vegeta - HTTP load testing tool and library.
Go
-
vex - A small
PHP
app that sends some load to a web application. -
weighttp - A lightweight and simple webserver benchmarking tool.
C
-
welle - An ab-like benchmarking tool written in
Rust
. -
wrk - Modern HTTP benchmarking tool.
C
-
wrk2 - A constant throughput, correct latency recording variant of wrk.
C
non-http/s
-
amoc - A simple framework for running massively parallel XMPP tests in a distributed environment.
Erlang
-
bench - A generic latency benchmarking library.
Go
-
bomberman - SMTP performance and load testing tool.
Go
-
dhammer - DHCP stress tester and benchmark tool.
Go
-
dnsblast - A DNS performance testing utility.
Go
-
dnsperf - DNS performance testing tools.
C
-
dnstress - A DNS stress testing tool.
C
-
massive-attack - Load testing Thrift, made simple.
Scala
-
rpc-perf - A tool for benchmarking RPC services.
Rust
-
rtmp_load - A load testing tool for RTMP servers.
C
-
sangrenel - Apache Kafka load testing.
Go
-
srs-bench - A HTTP/RTMP/HLS load testing and benchmarking tool.
C++
-
ssh-hammer - A SSH load testing tool.
Go
-
tcpkali - Fast multi-core TCP and WebSockets load generator.
C
grpc
-
ghz - Simple gRPC benchmarking and load testing tool.
Go
-
strest-grpc - A load tester for stress testing gRPC intermediaries.
Go
mq
-
emqtt-bench - A simple MQTT v5.0 benchmark tool written in
Erlang
. -
flotilla - Automated message queue orchestration for scaled-up benchmarking.
Go
-
mqperf - A benchmark of message queues with data replication and at-least-once delivery guarantees.
Scala
-
mqtt-benchmark - A simple MQTT (broker) benchmarking tool.
Go
-
mqtt-stresser - Load testing tool to stress MQTT message broker.
Go
-
mqttloader - Load testing tool for MQTT, capable of benchmark test for both MQTT v5.0 and v3.1.1 brokers.
Java
-
rabbitmq-perf-test - RabbitMQ performance testing tool.
Java
multi-protocol
-
artillery - A modern load and functional testing toolkit written in
Node.js
, with test scenario scripting inJavaScript
. -
ddosify - High-performance load testing and DDOS attack simulation tool, written in
Go
. -
gatling - A load and performance testing framework based on
Scala
, Akka and Netty. -
grinder - A distributed load testing framework written in
Java
, with test scenario scripting inJython
andClojure
. -
jagger - An open-source framework for Continuous Performance Testing written in
Java
. -
jmeter - A
Java
tool designed to load test functional behavior and measure performance of a variety of services, with a focus on web applications. -
k6 - A modern load testing tool, using
Go
andJavaScript
. -
locust - Scalable distributed load testing tool written in
Python
. -
multi-mechanize - Performance and load testing framework written in
Python
. -
mzbench - Expressive, scalable load testing tool, with multiple protocols support.
Erlang
-
ngrinder - Enterprise level performance testing solution based on The Grinder.
Java
-
predator - A distributed open-source platform for load testing APIs using custom version of artillery as load testing engine.
Node.js
-
tank - A cloud native load testing platform.
Java
-
tsung - A multi-protocol distributed load testing tool, developed in
Erlang
. -
yandex-tank - An extendable load testing tool which is especially good as a part of an automated load testing suite.
Python
,C
nosql
-
memtier_benchmark - A high-throughput benchmarking tool for Redis & Memcached.
C++
-
redisbench - Redis & Redis cluster benchmarking tool.
Go
storage
-
cosbench - A benchmark tool for cloud object storage service.
Java
-
diskspd - A storage performance testing tool from the Windows, Windows Server and Cloud Server Infrastructure engineering teams at Microsoft.
C++
-
fio - Flexible I/O tester.
C
-
go-ycsb - A Go port of Yahoo! Cloud Serving Benchmark (YCSB).
Go
-
ioarena - Embedded storage benchmarking tool.
C
-
mongoose - Distributed storage performance testing tool.
Java
-
ndbench - Netflix Data Store Benchmark, a pluggable cloud-enabled benchmarking tool that can be used across any data store system.
Java
-
tsbs - Time Series Benchmark Suite, a tool for comparing and evaluating databases for time series data.
Go
-
ycsb - Yahoo! Cloud Serving Benchmark (YCSB), a framework and common set of workloads for evaluating the performance of different "key-value" and "cloud" serving stores.
Java
k8s
-
kboom - The Kubernetes scale & soak load tester, equivalent of boom, written in
Go
. -
kube-burner - A tool aimed at stressing Kubernetes clusters by creating or deleting a high quantity of objects.
Go
graphql
-
easygraphql-load-tester - A
Node.js
library created to make load testing on GraphQL based on the schema. -
graphql-bench - A versatile tool for benchmarking and load testing GraphQL services, as a CLI application or via programmatic API.
TSQL
blockchain
-
caliper - A blockchain benchmark framework to measure performance of multiple blockchain solutions.
JavaScript
-
gohammer - A blockchain test tool designed to get performance metrics of the nodes and operation system by deploying a smart contract and calling smart contract's methods.
Go
DoS/DDoS penetration testing
For educational and security/stress testing (as part of development) purposes only.
-
finshir - A coroutines-driven Low & Slow traffic sender, written in
Rust
. -
golden-eye - HTTP DoS test tool using HTTP Keep Alive + NoCache as attack vector.
Python
-
goloris - Slowloris implementation for nginx DoS written in
Go
. -
hulk - Original HULK web server DoS attack tool ported to
Go
with some additional features. -
hulk-v3 -
Python
3 compatible async HULK script for DDoS attacks. -
lor-axe - A multi-threaded, low-bandwidth HTTP DoS tool, written in
Rust
. -
slowhttptest - A highly configurable application layer DoS attack simulator.
C++
-
slowloris - Low bandwidth DoS tool, rewrite in
Python
. -
wreckuests - Yet another one hard-hitting tool to run DDoS attacks with HTTP-flood.
Python
Traffic replay
-
goreplay - A network monitoring tool which can record live traffic, and use it for shadowing, load testing, monitoring and detailed analysis.
Go
-
ripley - HTTP traffic replay tool at multiples of the original rate.
Go
Contribute
Contributions are welcome!
Read the CONTRIBUTING guidelines first.