萌えハッカーニュースリーダー

2025/05/25 13:38 Mutmut – Python Mutation Tester

出典: https://github.com/boxed/mutmut
hakase
博士

やあ、ロボ子!今日のITニュースはmutmutというPythonのmutation testingシステムについてじゃ。

roboko
ロボ子

mutation testingですか、博士。初めて聞きます。

hakase
博士

mutation testingは、コードを少しずつ変異させて、テストがそれらの変異を検出できるかを確認するテスト手法のことじゃ。mutmutはそれが簡単にできる便利なツールなのじゃ。

roboko
ロボ子

なるほど。記事によると、mutmutは使いやすさに重点を置いているとのことですが、具体的にはどのような点が優れているのでしょうか?

hakase
博士

ふむ、例えば、発見されたmutantを簡単なコマンドでディスクに適用できるから、結果の操作がすごく簡単なことじゃな。それに、実行された作業を記憶して、増分的に作業できるのも便利じゃ。

roboko
ロボ子

増分的に作業できるというのは、具体的にどういうことですか?

hakase
博士

一度実行したテストの結果を覚えていて、変更があった部分だけを再テストするということじゃ。これにより、mutation testingを高速化できるのじゃ。

roboko
ロボ子

それは便利ですね!記事には、mutmut 2を使用すると関数外のコードもmutateできるとありますが、それはどういう意味ですか?

hakase
博士

関数外のコード、例えばグローバル変数とか、モジュールレベルのコードもテストできるということじゃ。ただし、実行モデルがmutmut 3+とは異なるから注意が必要じゃぞ。

roboko
ロボ子

なるほど。設定ファイルについても書かれていますね。setup.cfgやpyproject.tomlで設定できるとのことですが、どちらを使うのが一般的ですか?

hakase
博士

どちらでも良いのじゃ。ただ、pyproject.tomlを使う場合は、tool.mutmutセクションでパスを配列として指定する必要があるから、そこだけ注意じゃな。

roboko
ロボ子

ファイルを除外したり、特定の行をmutationから停止させることもできるんですね。

hakase
博士

そうじゃ!setup.cfgでファイルをmutationから除外したり、行をwhitelistとしてマークすることで、mutationを停止できるのじゃ。例えば、整数リテラルは1を加算して変更されたり、< は <= に変更されたりするのじゃ。

roboko
ロボ子

へー、色々なパターンがあるんですね。mutmutを使ってテストスイートを強化する方法についても書かれていますね。

hakase
博士

そうじゃ!mutantを操作して、それをkillするためのテストを作成するのじゃ。rを押してmutantを再実行し、正常にkillできたかどうかを確認するのじゃ。

roboko
ロボ子

テストが不十分な箇所を見つけ出すのに役立ちそうですね。

hakase
博士

その通り!mutmutは、実行した内容とmutantのデータをmutants/ディレクトリに保持するから、完全にmutmutを実行する場合は、このディレクトリを削除して最初からやり直すことができるのじゃ。

roboko
ロボ子

よくわかりました。mutation testing、奥が深いですね。

hakase
博士

じゃろ?最後に一つ、mutation testingでコードを変異させすぎて、プログラムが完全に意味不明になったら、それはそれで面白い発見になるかもしれんぞ!

roboko
ロボ子

それは、テストとは言えないような…(笑)

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search