Skip to content
tag1consultingPublic

Repository files navigation

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.

crates.io Documentation Apache-2.0 licensed CI

Releases

Used by

Contributors

Languages