mcpField
M
mutation-testing

mutation-testing

github.com/aj-geddesテスト・品質374475 回インストール34 週間前に更新
リポジトリ

mutation-testing について

コードに変異を加え、テストが検出できるかを調べてテストスイートを評価するスキルです。JavaScript、TypeScript、Java、Python 向けのガイドを扱います。

主な機能

  1. 01ミューテーションテストの基礎
  2. 02Strykerの設定と実行
  3. 03JavaScriptとTypeScriptのガイド
  4. 04JavaとPythonのガイド
  5. 05レポートの読み解き

活用シーン

  1. 01動作変更をテストが検出するか評価
  2. 02未テストのコードパスの特定
  3. 03弱いテストや重複テストの確認
  4. 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.md
mutmut-for-python.md
pitest-for-java.md
stryker-for-javascripttypescript.md
scripts/
scaffold-tests.sh
templates/
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 向け StrykerJavaScript/TypeScript 向け Stryker
Java 向け PITestJava 向け PITest
Python 向け mutmutPython 向け mutmut
ミューテーションテストのレポートミューテーションテストのレポート

ベストプラクティス

✅ 推奨事項
  • 重要なビジネスロジックをミューテーションテストの対象にする
  • 重要なコードでは、ミューテーションスコア 80% 以上を目指す
  • 生き残ったミュータントを確認して、テストを改善する
  • 同等なミュータントには印を付け、除外する
  • 重要なモジュールでは、CI でミューテーションテストを実施する
  • 境界条件を徹底的にテストする
  • コードの実行だけでなく、実際の動作を検証する
❌ 禁止事項
  • どこでもミューテーションスコア 100% を期待する
  • すべてのコードでミューテーションテストを実行する(時間がかかりすぎます)
  • 同等なミュータントを無視する
  • ミューテーションテストで getter/setter をテストする
  • 生成されたコードにミューテーションを実行する
  • 複雑なロジックでミューテーションテストを省略する
  • 行カバレッジだけに注目する

コメント