generating-tests

sekka's avatarfrom sekka

ユニットテスト、統合テスト、E2Eテストのコード生成を支援します。テスト設計、AAA パターン、テストシナリオを提供します。テストコード実装、テストカバレッジ拡大が必要な場合に使用してください。

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 2, 2026

When & Why to Use This Skill

This Claude skill provides comprehensive support for generating unit, integration, and E2E tests. It streamlines the testing lifecycle by assisting with test design, implementing the AAA (Arrange-Act-Assert) pattern, identifying edge cases, and providing framework-specific guidance to maximize code coverage and software reliability.

Use Cases

  • Automated Test Generation: Quickly generate boilerplate and logic for unit tests using the AAA pattern to ensure code quality from the start.
  • Coverage Expansion: Analyze existing codebases to identify untested paths and generate scenarios to increase overall test coverage.
  • Cross-Framework Implementation: Receive tailored testing code and configurations for popular frameworks such as Jest, Vitest, Pytest, and RSpec.
  • Mocking and Dependency Management: Define clear strategies for mocking external APIs, databases, and file systems to create isolated and reliable test environments.
  • Quality Metric Optimization: Analyze and improve test health by identifying flaky tests and optimizing execution time for faster CI/CD pipelines.
namegenerating-tests
descriptionユニットテスト、統合テスト、E2Eテストのコード生成を支援します。テスト設計、AAA パターン、テストシナリオを提供します。テストコード実装、テストカバレッジ拡大が必要な場合に使用してください。

テストコード生成

概要

テストコードの生成、テスト設計、品質メトリクス分析を包括的に支援するスキルです。

実行フロー

Step 1: テスト環境の確認

  • package.json からテストフレームワークを特定(Jest, Vitest, pytest等)
  • 既存のテストファイルからプロジェクトのテストパターンを確認
  • テスト設定ファイルを確認

Step 2: 対象コードの分析

  • 関数/クラスのシグネチャを確認
  • 依存関係を特定(モックが必要なもの)
  • エッジケースを洗い出し

Step 3: テストケースの設計

正常系

  • 基本的な入力での期待される動作
  • 複数の有効な入力パターン

異常系

  • 無効な入力(null, undefined, 空文字, 不正な型)
  • エラーハンドリングの確認
  • 例外がスローされるケース

境界値

  • 最小値/最大値
  • 空配列/空オブジェクト
  • 文字列の長さ制限

Step 4: テストコードの実装

AAAパターン(Arrange-Act-Assert):

test('ユーザー作成時にIDが割り当てられる', () => {
  // Arrange: テストデータを準備
  const userData = { name: 'Test User' };

  // Act: 対象の動作を実行
  const user = createUser(userData);

  // Assert: 結果を検証
  expect(user.id).toBeDefined();
});

Step 5: テスト実行戦略

段階的なテスト実行:

  1. 変更モジュールのテストのみ実行(高速フィードバック)
  2. 関連する統合テストを実行
  3. フルテストスイートを実行(最終確認)

実行時間目標:

  • ユニットテスト: <100ms
  • 統合テスト: <1s

Step 6: テスト失敗時の分析

失敗分析プロトコル:

  1. コードのバグ → コードを修正
  2. 正当な挙動変更 → テスト期待値を更新
  3. 脆いテスト → テストをリファクタ
  4. 環境問題 → 設定やセットアップを修正

Step 7: 品質メトリクス

Test Health Metrics:

Pass Rate: >95% (green)
Flaky Rate: <1% (green)
Coverage: >80% (green)

フレーキーテスト対処:

  • タイミング問題: 適切なwait/mocksを追加
  • テスト分離: 各テスト前後に状態をクリーンアップ
  • 外部依存: モックまたはスタブを使用

モック/スタブの方針

対象 方針
外部API呼び出し モック必須
データベース モックまたはテスト用DB
ファイルシステム モック推奨
日時 固定値にモック
乱数 シード固定またはモック

フレームワーク固有のガイダンス

JavaScript/TypeScript

  • Jest: describe, test/it, expect, beforeEach/afterEach
  • Vitest: Jest互換 + Viteの高速性
  • Testing Library: ユーザー視点のテスト

Python

  • Pytest: def test_*, assert, @pytest.fixture
  • unittest: TestCase, self.assert*

その他

  • Go: testing package, testify
  • Ruby: RSpec, Minitest
  • Java: JUnit, Mockito

ベストプラクティス

  1. 振る舞いをテスト: 実装詳細ではなく外部から見た動作
  2. AAAパターン: Arrange-Act-Assertで構造化
  3. 高速に保つ: ユニット<100ms、統合<1s
  4. テストデータファクトリ: 一貫性のあるテストデータ
  5. ドキュメントとして機能: テスト名で仕様が理解できる

目標

実バグを捉えつつ変更に安心感を与える健全で信頼性の高いテストスイートを作成・維持すること。

関連ファイル