← ClaudeAtlas

mutation-testlisted

テ��トが本当にバグを検出できるか(テストの質)を検証したいとき、または「ミューテーションテストして」「テストの質を確認して」と言われたときに必ず使う。実行時間が長いため自動では発火しない。
takayoshitoyoda05/claude-ml-template · ★ 1 · Testing & QA · score 72
Install: claude install-skill takayoshitoyoda05/claude-ml-template
# ミューテーションテスト コードに意図的な小変更(ミューテーション)を入れ、テストがそれを検出できるかを測る。 カバレッジが高くてもアサーションが浅いテストはミューテーションを見逃す。 「テストがあるから安心」の落とし穴を検出する。 ## いつ使うか - regression-suite や property-test で生成したテストの質を確認したいとき - 重要なモジュール(評価指標の計算、データ分割など)のテストが 本当に信頼できるか確認したいとき - テストカバレッジは高いのにバグが漏れる、と感じたとき ## 前提条件 - pytest でテストが通る状態であること - mutmut がインストールされていること。無ければ「`uv add --dev mutmut` で 追加してよいか」をユーザーに確認してから導入する(依存とロックファイルが 変わるため、無断で追加しない) ## 進め方 1. 対象モジュールを確認する(全体は時間がかかりすぎるため、 モジュール単位で実行する)。 2. mutmut を実行する。 ``` uv run mutmut run --paths-to-mutate <対象モジュール> ``` 3. 結果を確認する。 ``` uv run mutmut results ``` 4. 生き残ったミュータント(survived)を1つずつ確認する。 ``` uv run mutmut show <ID> ``` 5. 以下の形式でレポートする。 ## レポート形式 ### ミューテーションテスト結果 - 対象: <モジュール> - ミュータント総数: N - 検出(killed): N / 生存(survived): N / タイムアウト: N - ミューテーションスコア: XX%(killed / 総数) #### 生き残ったミュータント(テストの穴) - [ID] <ファイル:行> どんな変更が検出されなかったか → 追加すべきテスト観点: (具体的に) ## 判断の目安 - スコア 80% 以上: ���ストの質は良好 - スコア 60〜80%: 生存ミュータントを確認し、重要な箇所だけテストを補強 - スコア 60% 未満: ��ストが浅い。アサーションの見直しを推奨 ## 注意 - このスキルはテストの追加提案までを行う。実際のテスト追加は ユーザーの承認を得てから行う(tdd または property-test スキルで)。 - 実行時間が長い(モジュールあたり数分〜数十分)。全体への一括実��はしない。 - 書き捨ての実験スクリプトには適用しない。