mutation-testing について
コードに変異を加え、テストが検出できるかを調べてテストスイートを評価するスキルです。JavaScript、TypeScript、Java、Python 向けのガイドを扱います。
主な機能
- 01ミューテーションテストの基礎
- 02Strykerの設定と実行
- 03JavaScriptとTypeScriptのガイド
- 04JavaとPythonのガイド
- 05レポートの読み解き
活用シーン
- 01動作変更をテストが検出するか評価
- 02未テストのコードパスの特定
- 03弱いテストや重複テストの確認
- 04重要なロジックのテスト優先度付け
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill mutation-testingインストール後、Claude Code で/mutation-testingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/mutation-testing-reports.mdmutmut-for-python.mdpitest-for-java.mdstryker-for-javascripttypescript.mdscripts/scaffold-tests.shtemplates/test-template.js詳細
ミューテーションテスト
目次
概要
ミューテーションテストでは、ソースコードに小さな変更(ミューテーション)を加え、テストが失敗することを確認して、テストスイートの品質を評価します。テストでミューテーションを検出できない場合、テストカバレッジまたはテスト品質に不足があることを示しています。この手法により、弱いテストや効果のないテストを特定できます。
使用する場面
- テストスイートの有効性を評価する
- テストされていないコードパスを見つける
- テスト品質の指標を改善する
- 重要なビジネスロジックが十分にテストされていることを検証する
- 冗長または弱いテストを特定する
- 行カバレッジ以外の実質的なテストカバレッジを測定する
- テストで実際に動作が検証されていることを確認する
クイックスタート
最小限の実行可能な例:
# Install Stryker
npm install --save-dev @stryker-mutator/core @stryker-mutator/jest-runner
# Initialize configuration
npx stryker init
# Run mutation testing
npx stryker run
リファレンスガイド
詳細な実装については、references/ ディレクトリを参照してください。
| ガイド | 内容 |
|---|---|
| JavaScript/TypeScript 向け Stryker | JavaScript/TypeScript 向け Stryker |
| Java 向け PITest | Java 向け PITest |
| Python 向け mutmut | Python 向け mutmut |
| ミューテーションテストのレポート | ミューテーションテストのレポート |
ベストプラクティス
✅ 推奨事項
- 重要なビジネスロジックをミューテーションテストの対象にする
- 重要なコードでは、ミューテーションスコア 80% 以上を目指す
- 生き残ったミュータントを確認して、テストを改善する
- 同等なミュータントには印を付け、除外する
- 重要なモジュールでは、CI でミューテーションテストを実施する
- 境界条件を徹底的にテストする
- コードの実行だけでなく、実際の動作を検証する
❌ 禁止事項
- どこでもミューテーションスコア 100% を期待する
- すべてのコードでミューテーションテストを実行する(時間がかかりすぎます)
- 同等なミュータントを無視する
- ミューテーションテストで getter/setter をテストする
- 生成されたコードにミューテーションを実行する
- 複雑なロジックでミューテーションテストを省略する
- 行カバレッジだけに注目する
コメント
Markdown 対応