Goose: A Powerful Load Testing Framework
What is Load Testing?
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.
Why Choose Goose?
-
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 at http://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?
Getting Started
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-control with 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.
Simple Example
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.
Contributing
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.19 first, with its CHANGELOG line under ## 0.19.1-dev.
- It is then forward ported to
main in its own pull request with git cherry-pick -x, carrying the same line under main’s ## 0.19.1-dev. If main has rewritten that code, the forward port fixes it there by hand and says so.
- Work merged to
main is for 0.20 and is not backported unless its pull request asks for it. A CHANGELOG line under ## 0.20.0-dev means main only.
- 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.
Community and Support
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.

评论