Freedom251 › Mutation Testing Tools
mutest-rs

What mutest-rs is
mutest-rs generates changes to Rust programs and runs tests against them to assess how well a test suite detects those changes. It operates through the `cargo mutest run` subcommand on Cargo packages and workspaces. The documentation says that when `cargo test` runs successfully for a package, its test suite will generally run under mutation analysis too. Implemented operators include boolean negation, call deletion, equality inversion, logical operator swaps, arithmetic changes, and relational operator changes. Users can select active operators with `--mutation-operators`, which defaults to `all`. An experimental batching method combines mutations in distinct program areas to increase parallel evaluation of test cases. The tool uses Cargo package and workspace targeting options and documents safety options, with `--safe` as the default. mutest-rs is free and dual licensed under Apache 2.0 and MIT terms. Its README characterizes it primarily as a research tool, originally developed for the maker's ongoing PhD work, and the site says the Software Testing Group at the University of Sheffield uses it in active research. Installation currently requires compiling from source, and the maker's repository says it relies on the nightly Rust compiler toolchain.
Who it suits
mutest-rs suits Rust developers and researchers assessing the effectiveness of Cargo test suites. It is a fit for users comfortable compiling Rust tools from source and using the nightly toolchain.
What it does well
- Works with Cargo packages and workspaces.
- Supports multiple mutation operators.
- Operator selection is configurable.
- Experimental batching supports parallel test evaluation.
- Free and dual licensed under Apache 2.0 and MIT.
What to know first
- Installation requires compiling from source.
- The nightly Rust compiler toolchain is required.
- The project is described primarily as a research tool.
Limits
The documented installation path requires compiling from source, including local builds of `mutest-runtime`, `mutest-driver`, and `cargo-mutest`. The project relies on nightly Rust, and batching starts disabled with a default batch size of 1.
Getting started
- Install the nightly Rust compiler toolchain
- Compile mutest-rs from source
- Build the `mutest-runtime` crate
- Install `mutest-driver` and `cargo-mutest` locally
- Run `cargo mutest run` on a Cargo package or workspace
- Select mutation operators with `--mutation-operators` when needed
Verdict
mutest-rs offers mutation analysis through a Cargo-compatible workflow, with configurable operators and experimental batching. Its source-only installation and nightly compiler requirement make it better suited to users comfortable with Rust development tooling.
Questions
What language does mutest-rs support?
It supports Rust programs and uses Cargo packages and workspaces.
Which test framework does it use?
It works with Cargo test; packages that run with `cargo test` will generally run under mutation analysis.
Is mutest-rs free?
Yes. It is free, open source, and dual licensed under Apache 2.0 and MIT terms.
How is it installed?
The documented option is compiling the project from source, then building `mutest-runtime` and installing `mutest-driver` and `cargo-mutest` locally.
Can mutation operators be selected?
Yes. The `--mutation-operators` argument controls active operators and defaults to `all`.
Does it run mutations in parallel?
Yes. An experimental batching technique is intended to increase parallel evaluation of test cases.
Facts from mutest-rs's own pages
- Batching default
- The batch size limit defaults to 1 and the batching algorithm defaults to none. · mutest.rs, 9 Oct 2026
- Build requirement
- The installation guide instructs users to build the `mutest-runtime` crate and install `mutest-driver` and `cargo-mutest` locally. · mutest.rs, 4 Oct 2026
- Cargo support
- The cargo mutest subcommand runs mutation analysis on Cargo packages and workspaces using standard Cargo target selection options. · mutest.rs, 9 Oct 2026
- Configuration
- Users can control the active mutation operators with the `--mutation-operators` argument; its default is `all`. · mutest.rs, 4 Oct 2026
- Installation
- The documented installation method is to compile the project from source; the site says compiling it yourself is currently the only option. · mutest.rs, 4 Oct 2026
- Installation limit
- The site says the only installation option is to compile mutest-rs yourself from source. · mutest.rs, 9 Oct 2026
- Integration
- The tool provides a Cargo-compatible interface and supports Cargo package and workspace targeting options. · mutest.rs, 4 Oct 2026
- License
- The project is dual-licensed under Apache 2.0 and MIT terms. · github.com, 9 Oct 2026
- Mutation batching
- Mutation batching combines mutations from distinct parts of a program so more test cases can be evaluated in each iteration. · mutest.rs, 9 Oct 2026
- Mutation operators
- The documented operators include boolean negation, call deletion, arithmetic and logical operator swaps, and relational operator changes. · mutest.rs, 9 Oct 2026
- Nightly requirement
- The maker's repository says mutest-rs relies on the nightly Rust compiler toolchain. · github.com, 9 Oct 2026
- Purpose
- mutest-rs generates and evaluates program mutations to assess Rust test suites. · mutest.rs, 9 Oct 2026
- Research status
- The project README describes mutest-rs as primarily a research tool originally developed for the maker’s ongoing PhD work. · github.com, 4 Oct 2026
- Research use
- The site says mutest-rs is used in active research by the Software Testing Group in the University of Sheffield's School of Computer Science. · mutest.rs, 9 Oct 2026
- Safety
- The documentation describes a safety property for mutations based on the safety of the scope where they are introduced and the safety flag used to invoke the tool. · mutest.rs, 4 Oct 2026
- Safety handling
- The tool treats possibly unsafe contexts as unsafe and propagates potential unsafety through the call graph when generating mutations. · mutest.rs, 9 Oct 2026
- Safety options
- The default safety flag is --safe, and the tool also documents --cautious, --risky, and --unsafe flags. · mutest.rs, 9 Oct 2026
- Test compatibility
- The documentation says that if `cargo test` works for a package, `cargo mutest run` will generally run the same test suite under mutation analysis. · mutest.rs, 4 Oct 2026
- Workflow
- It runs through the `cargo mutest run` subcommand on Cargo packages and workspaces. · mutest.rs, 4 Oct 2026
Where mutest-rs stands on Freedom251
- Mutation Testing Tools#24 of 25