Skip to content

aliesbelik/load-testing-toolkit

Repository files navigation

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

  • 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
  • hitt - File based HTTP testing tool focused on speed and simplicity. Rust
  • 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
  • clobbr - A tool to check the speed and resilience of API endpoints against multiple parallel or sequence requests. JavaScript
  • 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.
  • goku-bench - An HTTP load testing tool built out of a need to drill HTTP services inspired by drill and vegeta. Rust
  • goose - A Rust load testing tool inspired by locust.
  • gopayloader - HTTP/S benchmark/load testing cross-platform tool with optional JWT generation, inspired by bombardier. Go
  • 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
  • http_bench - An HTTP(/1/2/3) and WebSockets stress testing tool, with both single and distributed modes. Go
  • 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.
  • loadtesttoolbox - Lightweight tools for load testing web applications, written in C#.
  • mgun - A modern tool for load testing HTTP servers, written in Go.
  • minigun - Simple Kubernetes native HTTP benchmark tool, written in Go.
  • molotov - Simple Python 3.7+ 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 in Go.
  • 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
  • sb - SuperBenchmarker, ApacheBench (ab) on steroids. C#
  • 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
  • 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
  • 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

dns

  • dnsblast - A DNS performance testing utility. Go
  • dnsblast - A simple and stupid load testing tool for DNS resolvers. C
  • dnsmeter - A tool for testing performance of nameservers and the infrastructure around it. C++
  • dnsperf - DNS performance testing tools. C
  • dnstress - A DNS stress testing tool. C
  • flamethrower - A DNS performance and functional testing utility, originally built as an alternative to dnsperf. C++

grpc

  • ghz - Simple gRPC benchmarking and load testing tool. Go
  • strest-grpc - A load tester for stress testing gRPC intermediaries. Go

kafka

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
  • mqttwrk - A wrk/wrk2-inspired tool for scale and performance testing MQTT brokers. Rust
  • 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 in JavaScript.
  • 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 in Jython and Clojure.
  • 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 and JavaScript.
  • 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

data store

  • go-ycsb - A Go port of Yahoo! Cloud Serving Benchmark (YCSB). Go
  • ndbench - Netflix Data Store Benchmark, a pluggable cloud-enabled benchmarking tool that can be used across any data store system. Java
  • 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

io

  • 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
  • ioarena - Embedded storage benchmarking tool. C

object storage

  • cosbench - A benchmark tool for cloud object storage service. Java
  • gosbench - Distributed S3 performance benchmark tool with Prometheus exporter, Go reimplementation of cosbench.
  • mongoose - Distributed storage performance testing tool. Java
  • os-benchmark - Handy tool for object storage performance benchmarking. Python
  • ostorebench - A benchmark tool for distributed object storage systems. Go
  • s3-benchmark - S3 benchmarking tool. Go
  • warp - S3 benchmarking tool. Go

time-series

  • prometheus-benchmark - Benchmark for Prometheus-compatible systems on production-like workload. Go
  • tsbs - Time Series Benchmark Suite, a tool for comparing and evaluating databases for time series data. Go

k8s

  • k8s-bench-suite - Simple scripts to benchmark Kubernetes cluster features. Shell
  • k8s-netperf - Running networking performance tests against Kubernetes. Go
  • k-bench - Workload benchmark for Kubernetes. Go
  • 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
  • kubestr - A collection of tools to discover, validate and evaluate Kubernetes storage options. Go
  • perf-tests - Kubernetes-related performance testing tools and benchmarks. 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.
  • rip - An HTTP load testing and UDP flood attack tool. Go
  • 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
  • tcpcopy - A TCP stream replay tool to support real testing of server applications. C

Contribute

Contributions are welcome!
Read the CONTRIBUTING guidelines first.