Load testing is a critical step in ensuring your web application can handle real-world traffic patterns. It helps you identify performance bottlenecks, optimize resource allocation, and ensure a seamless user experience.
-
Fast and Scalable: Built with Rust, Goose is designed for speed and scalability.
-
Flexible and Customizable: Supports simple and complex load tests, tailored to mimic real-world user behavior.
-
Realistic User Behavior Simulation: Goes beyond just sending requests; simulates user behaviors like logging in, filling out forms, and navigating through your application.
-
Live Dashboard: Opt-in web UI (compile with
--features dashboard, run with--dashboard) streams live metrics (RPS, users, latency charts) over SSE while a test runs. Optional authenticated control lets you Start, Stop, and set target users from the browser—see Live Dashboard in the Goose Book. -
MCP Controller: Opt-in Model Context Protocol tools for AI agents (compile with
--features mcp, run with--mcp) serve every Controller command athttp://127.0.0.1:5119/mcp, so an agent can read a running test's metrics and start, stop and change it; see MCP Controller in the Goose Book (published with 0.20; until then its source). -
Have you ever been attacked by a goose?
To use Goose, you'll need to write a Rust application using the Goose library. Then, compile it to create a tailored load testing tool specific to your needs.
You may find the following resources helpful:
-
The Goose Book A comprehensive guide to getting started with Goose.
-
Live Dashboard Observe (and optionally control) a running load test from the browser (
--features dashboard,--dashboard,--dashboard-controlwith a token or--dashboard-no-auth). -
Developer Documentation Detailed API information and tutorials.
-
AGENTS.md For AI agents working in this repository: the layout, the build and test commands CI runs, the conventions, and how to drive a run through the MCP Controller.
Check out our examples on GitHub. You can also use Goose Eggs, a helper crate that provides useful functions for writing load tests, such as validation helpers for HTTP responses.
main is the next minor release (0.20.0-dev); release-0.19 is the maintenance branch for 0.19.x.
- A fix for 0.19.x is made against
release-0.19first, with its CHANGELOG line under## 0.19.1-dev. - It is then forward ported to
mainin its own pull request withgit cherry-pick -x, carrying the same line under main's## 0.19.1-dev. Ifmainhas rewritten that code, the forward port fixes it there by hand and says so. - Work merged to
mainis for 0.20 and is not backported unless its pull request asks for it. A CHANGELOG line under## 0.20.0-devmeansmainonly. - Patch releases (0.19.1, 0.19.2, ...) are tagged from
release-0.19.
CI runs on pull requests against main and any release-* branch.
Developed by Tag1 Consulting, Goose has a growing community and a series of blog posts and podcasts detailing its features, comparisons with other tools, and real-life testing scenarios.