Repolode
mbj

mbj/mutant

Ruby向けのミューテーションテストツール。コードに変更を加え、テストスイートが見逃す変更を報告します。

スター
2,212
フォーク
163
未解決の Issue
127
最終コミット
昨日

これは何?

MutantはRuby向けのミューテーションテストツールです。演算子の入れ替え、文の削除、戻り値の変更など、コードに小さな変更を体系的に加え、それぞれの変更に対してテストを実行します。どのテストにも失敗しないミューテーションは「生存」として報告され、テストが実際には検証していない振る舞いを示します。

生存したミューテーションごとに、テストで正しい振る舞いがすでに固定されているためコードを簡素化するか、不足しているテストを追加するかを判断します。テストがパスするだけでは、そのテストが意味のある内容を検証しているとは限らないため、AIツールがコードやテストを生成した場合に役立ちます。

MutantはRSpec、Minitest、Test::Unitと連携し、ワーカーごとにデータベースを分離してRailsアプリケーションでも実行できます。CI向けの増分実行に対応し、後から確認できるようセッション結果を記録します。オープンソースでの利用は無料で、商用利用には有料ライセンスが必要です。

主な機能

  • 01Rubyコードに演算子、文、戻り値のミューテーションを適用し、それぞれに対してテストを実行します。
  • 02テストされていない振る舞いを示す、生存したミューテーションを報告します。
  • 03RSpec、Minitest、Test::Unitと連携します。
  • 04PostgreSQLとSQLiteでワーカーごとのデータベース分離を行い、Railsに対応します。
  • 05CIでの実行に使える増分モードを備え、過去の結果を確認できるようセッション履歴を保存します。

ユースケース

  • AIアシスタントが作成したテストが、コードの振る舞いを実際に検証しているか確認する。
  • リファクタリングの前に、既存のRubyテストスイートの弱点を見つける。
  • 変更されたコードだけを対象に、CIで増分ミューテーションテストを実行する。

クイックスタート

  1. 1

    RSpec連携gemをインストールする

    gem install mutant-rspec
  2. 2

    コード内の対象に対してmutantを実行する

    mutant run --use rspec --usage opensource --require ./lib/person 'Person#adult?'

使う前に知っておきたいこと

  • LinuxとmacOSでのみサポートされています。
  • オープンソースの場合のみ無料です。商用利用には有料サブスクリプションが必要です。
  • READMEには明確なオープンソースライセンスが記載されていません(メタデータはNOASSERTIONです)。

収録されている特集

トピック

#mutation-testing#ruby#testing#rspec#minitest#code-quality#rails#code-quality-analyzer#code-review#coverage

よくある質問

mutant とは?
Ruby向けのミューテーションテストツール。コードに変更を加え、テストスイートが見逃す変更を報告します。 MutantはRuby向けのミューテーションテストツールです。演算子の入れ替え、文の削除、戻り値の変更など、コードに小さな変更を体系的に加え、それぞれの変更に対してテストを実行します。どのテストにも失敗しないミューテーションは「生存」として報告され、テストが実際には検証していない振る舞いを示します。
mutant は無料で使えますか?ライセンスは?
mutant は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
mutant は今もメンテナンスされていますか?
活発にメンテナンス中。mutant の最終コミットは 2026年11月6日 です。
mutant は何に使えますか?
AIアシスタントが作成したテストが、コードの振る舞いを実際に検証しているか確認する。 リファクタリングの前に、既存のRubyテストスイートの弱点を見つける。 変更されたコードだけを対象に、CIで増分ミューテーションテストを実行する。
mutant のインストール方法は?
RSpec連携gemをインストールする: gem install mutant-rspec コード内の対象に対してmutantを実行する: mutant run --use rspec --usage opensource --require ./lib/person 'Person#adult?'
mutant はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/mbj/mutant

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト