testing について
Claude-Craftの複数の技術スタックを対象に、TDD/BDDの原則、品質目標、テスト手法をまとめたスキルです。
主な機能
- 01RED–GREEN–REFACTORのTDDサイクル
- 02カバレッジとテストピラミッドの目標
- 03ミューテーションテストとプロパティベーステスト
- 04技術スタック別のツール推奨
- 05ブラウザテストとモノレポのガイド
活用シーン
- 01新機能のテストスイートの計画
- 02技術スタックに合うテストツールの選定
- 03カバレッジ以外の指標によるテスト品質の評価
- 04モノレポでのブラウザテストの整理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ thebeardedbearsas/ claude-craft --skill testingインストール後、Claude Code で/testingを入力して読み込まれたか確認します。
同梱ファイルREADME.mdREFERENCE.md
詳細
テスト - TDD/BDD の原則(2026)
Claude-Craft フレームワークのすべてのテクノロジーに共通するテストの原則です。
基本原則
- TDD サイクル:RED → GREEN → REFACTOR
- 目標カバレッジ:>= 80%
- ピラミッド:単体(70%)> 結合(20%)> E2E(10%)
- パターン:Arrange-Act-Assert(AAA)
- 命名:動作を説明する記述的なテスト名
2026 年の推奨ツール
| スタック | 単体/コンポーネント | E2E/ブラウザー | ミューテーションテスト |
|---|---|---|---|
| JS/TS/React | Vitest 4.1+(Browser Mode が安定) | Playwright | Stryker |
| PHP/Laravel/Symfony | Pest 4.5+(PHPUnit 12、ブラウザーテスト) | Pest 経由の Playwright | Infection |
| Python | pytest 8.x + Ruff 0.8+ | Playwright | Mutmut |
| Flutter | flutter_test + bloc_test 10+ | Patrol 3.13+ | 組み込み |
| React Native | RNTL + Jest | Detox/Maestro | Stryker |
ソース: Vitest 4、Pest 4、Stryker Mutator
2026 年の戦略
Vitest 4 — Browser Mode が安定
重い JSDOM は使わず、Chromium/Firefox/WebKit をネイティブで使用します。
// vitest.config.ts
export default defineConfig({
test: {
browser: {
enabled: true,
name: 'chromium', // ou 'firefox', 'webkit'
provider: 'playwright',
},
},
});
ソース: Vitest Browser Mode
ミューテーションテスト —「カバレッジは嘘をつき、ミューテーションスコアが真実を語る」
テストの品質を検証します。ミューテーションスコアは 80% 以上を目指します。
# Stryker (JS/TS/C#)
npx stryker run
# Infection (PHP)
vendor/bin/infection --min-msi=80
# Mutmut (Python)
mutmut run
ソース: Stryker Mutator
プロパティベーステスト
不変のプロパティからテストを生成します。
// fast-check (JS/TS)
import fc from 'fast-check';
test('sorting preserves all elements', () => {
fc.assert(
fc.property(fc.array(fc.integer()), (arr) => {
const sorted = [...arr].sort();
return sorted.length === arr.length;
})
);
});
ソース: fast-check
Pest 4 — ブラウザーテストを統合
// Pest 4.5+ avec Playwright natif
test('user can login', function () {
$this->browse(function (Browser $browser) {
$browser->visit('/login')
->type('email', '[email protected]')
->type('password', 'secret')
->press('Login')
->assertPathIs('/dashboard');
});
});
Vitest Workspaces — モノレポ
// vitest.workspace.ts
export default defineWorkspace([
'packages/*/vitest.config.ts', // Unit tests
{
test: {
browser: { enabled: true, name: 'chromium' },
include: ['e2e/**/*.test.ts'],
},
}, // Browser tests
]);
ソース: Vitest Workspaces
詳しくは @.claude/references/base/testing.md を参照してください。
コメント
Markdown 対応