mutation-testlisted
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 スキルで)。
- 実行時間が長い(モジュールあたり数分〜数十分)。全体への一括実��はしない。
- 書き捨ての実験スクリプトには適用しない。