/load-testing-toolkit

Collection of open source tools for debugging, benchmarking, load and stress testing your code or services.

Creative Commons Attribution 4.0 InternationalCC-BY-4.0

Load testing toolkit

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

  • 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
  • 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
  • httping - A ping-like utility for HTTP requests. C
  • httpstat - curl statistics visualization in a way of beauty and clarity. Python
  • xh – Yet another httpie clone in Rust.

Benchmarking & load testing

http/s

  • ali - A load testing tool capable of performing real-time analysis, inspired by vegeta, written in Go.
  • apachebench (ab) - Standalone apachebench (ab), Apache HTTP server 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 witten in Go.
  • beeswithmachineguns - An utility for arming (creating) many bees (micro EC2 instances) to attack (load test) targets (web applications). Python
  • 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
  • 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
  • drill - A HTTP load testing application, written in Rust, inspired by Ansible syntax.
  • f1 - A flexible load testing framework using Go for test scenarios.
  • 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-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
  • 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.
  • 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
  • hurl - HTTP server load test and parallel curl utilities. C++
  • iago2 - A load generator, built for engineers. Scala
  • jetty-load-generator - An API to load-test HTTP servers, based on Jetty's HttpClient and Java 11+.
  • kboom - The Kubernetes scale & soak load tester, equivalent of boom, written in Go.
  • legion - A JavaScript-based load testing tool for HTTP servers and other kinds of software.
  • 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-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.
  • phantomas - PhantomJS-based web performance metrics collector and monitoring tool. JavaScript
  • 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
  • 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.
  • 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 - 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
  • flotilla - Automated message queue orchestration for scaled-up benchmarking. Go
  • massive-attack - Load testing Thrift, made simple. Scala
  • memtier_benchmark - NoSQL Redis and Memcache traffic generation and benchmarking tool. C++
  • mqperf - A benchmark of message queues with data replication and at-least-once delivery guarantees. Scala
  • rabbitmq-perf-test - RabbitMQ performance testing tool. Java
  • 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

multi-protocol

  • artillery - A modern load and functional testing toolkit written in Node.js, with test scenario scripting in Javascript.
  • 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.
  • 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
  • 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

storage

  • ioarena - Embedded storage benchmarking tool. C
  • cosbench - A benchmark tool for cloud object storage service. Java
  • go-ycsb - A Go port of Yahoo! Cloud Serving Benchmark (YCSB). Go
  • mongoose - Distributed storage performance testing tool. 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

Stress testing

http/s

  • hulken - Stress testing tool for everything speaking HTTP. JavaScript
  • pewpew - Flexible HTTP command line stress tester for websites and web services. Go

non-http/s

  • dhammer - DHCP stress tester and benchmark tool. Go
  • dnstress - A DNS stress testing tool. C
  • mqtt-stresser - Load testing tool to stress MQTT message broker. Go

DoS/DDoS penetration testing

For educational and stress testing (as part of development) purposes only.

  • finshir - A coroutines-driven Low & Slow traffic sender, written in Rust.
  • 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