FREEDOM251

Freedom251 › Mutation Testing Tools

mutator

Free plan Linux

Visit mutator Alternatives

mutator's own site

What mutator is

mutator is a free mutation testing tool for R developers assessing whether package tests detect systematic changes to source code. It alters code at the abstract syntax tree level and reports a mutation score: the ratio of killed mutants to the total mutants. Its mutation operators cover arithmetic, comparisons, logic, constants, return values and statement deletion. The tool supports testthat and tinytest, with a generic installed-tests fallback for other layouts. For testthat and tinytest, coverage-guided selection runs tests covering each mutated line; with the generic fallback, mutator warns and runs the full suite. Test execution can run in parallel, and per-mutant timeouts are calibrated to detect hangs, with an option to override them. Users can cap the number of mutants. A reusable GitHub Actions workflow supports running mutation tests in continuous integration, and the tool reports surviving mutants and provides a mutation quality gate. Equivalent-mutant detection can use a configurable OpenAI-compatible API. The released version can be installed from CRAN, with development versions available from GitHub and R-universe. The package is licensed under GPL (>= 3), and its documentation links to GitHub for bug reports.

Who it suits

mutator is aimed at R developers who want to assess and improve package test suites. It supports testthat, tinytest and a generic installed-tests fallback.

What it does well

  • Reports a mutation score and surviving mutants
  • Supports testthat and tinytest
  • Runs tests in parallel
  • Includes a reusable GitHub Actions workflow
  • Users can cap mutants and override timeouts

What to know first

  • Generic installed-tests fallback runs the full suite
  • Coverage-guided selection is unavailable for the generic fallback
  • Equivalent-mutant detection uses an OpenAI-compatible API

Limits

Users can cap the number of mutants and set a per-mutant timeout. The generic installed-tests strategy runs the full suite instead of coverage-guided selection.

Getting started

  1. Open the mutator project website
  2. Install the released package from CRAN with install.packages("mutator")
  3. Use a development build from GitHub or R-universe if needed
  4. Run it with a testthat, tinytest, or installed-tests layout
  5. Add the reusable GitHub Actions workflow for CI

Verdict

mutator offers mutation testing for R packages, including CI support and controls for test execution. Developers using the generic installed-tests fallback should account for its full-suite run instead of coverage-guided selection.

Questions

What language does mutator support?

It supports R.

Which test frameworks are supported?

mutator supports testthat and tinytest, plus a generic installed-tests fallback.

Is mutator free?

Yes. It has a free plan.

Where can it be installed?

The released version is available from CRAN. Development versions are available from GitHub and R-universe.

Can it run in continuous integration?

Yes. A reusable GitHub Actions workflow runs mutation testing in CI.

What license does it use?

The package is licensed under GPL (>= 3).

Facts from mutator's own pages

AST mutations
mutator applies mutations at the abstract syntax tree level. · pdonatbouillud.com, 7 Oct 2026
CI integration
It provides a reusable GitHub Actions workflow for mutation testing, including optional mutation-score thresholds and badge publishing. · prl-prg.github.io, 7 Oct 2026
Developers
The project is developed by Pierre Donat-Bouillud and Assanali Amandykov. · prl-prg.github.io, 7 Oct 2026
Equivalent mutants
It can use LLMs to flag likely equivalent mutants through a configurable OpenAI-compatible API. · prl-prg.github.io, 7 Oct 2026
Execution speed
It supports parallel test execution and coverage-guided selection that runs only tests covering each mutated line. · pdonatbouillud.com, 7 Oct 2026
Installation
The released version can be installed from CRAN with install.packages("mutator"), and development versions are available from GitHub and R-universe. · prl-prg.github.io, 7 Oct 2026
Intended users
The tool is for developers seeking to assess and improve R package test suites. · pdonatbouillud.com, 7 Oct 2026
License
The package is licensed under GPL (>= 3). · prl-prg.github.io, 7 Oct 2026
Limits and configuration
Users can cap the number of mutants and set a per-mutant timeout; coverage-guided selection falls back to the full suite for the generic installed-tests strategy. · prl-prg.github.io, 7 Oct 2026
LLM integration
Equivalent-mutant detection can use an OpenAI-compatible API. · prl-prg.github.io, 7 Oct 2026
Mutation method
It uses abstract syntax tree analysis and mutation operators for arithmetic, comparisons, logic, constants, return values, and statement deletion. · prl-prg.github.io, 7 Oct 2026
Mutation operators
Its operators include arithmetic, comparison and logical changes, constant and return-value replacements, and statement deletions. · pdonatbouillud.com, 7 Oct 2026
Mutation score
It reports the ratio of killed mutants to total mutants as a measure of test suite effectiveness. · pdonatbouillud.com, 7 Oct 2026
Notable limit
Coverage-guided selection is on by default for testthat and tinytest strategies; with the generic installed-tests fallback, it warns and runs the full suite. · prl-prg.github.io, 7 Oct 2026
Performance
It supports parallel test execution and coverage-guided test selection, which runs tests covering each mutated line. · prl-prg.github.io, 7 Oct 2026
Purpose
mutator is an automated mutation testing tool for the R language that checks whether a test suite detects systematic changes to source code. · pdonatbouillud.com, 7 Oct 2026
Support
The documentation links to a GitHub page for reporting bugs. · prl-prg.github.io, 7 Oct 2026
Test harnesses
It supports testthat and tinytest, with a generic installed-tests fallback for other layouts. · prl-prg.github.io, 7 Oct 2026
Timeouts
It self-calibrates per-mutant timeouts to detect hangs, and users can override the timeout. · prl-prg.github.io, 7 Oct 2026

Where mutator stands on Freedom251

Look at these too