jpskill.com
🛠️ 開発・MCP コミュニティ

testing-guide

効果的なテストを書くための制約条件を提供し、ユニットテスト、結合テスト、E2Eテストを網羅率だけでなく品質指標も用いてガイドすることで、テスト作成やレビュー、戦略策定を支援するSkill。

📜 元の英語説明(参考)

Opinionated constraints for writing effective tests. Guide unit tests, integration tests, and E2E tests with quality metrics beyond coverage. Use when users write tests, review test code, or need testing strategy. Triggers on keywords like "test", "testing", "单元测试", "集成测试", "E2E", "测试质量", "coverage", "断言".

🇯🇵 日本人クリエイター向け解説

一言でいうと

効果的なテストを書くための制約条件を提供し、ユニットテスト、結合テスト、E2Eテストを網羅率だけでなく品質指標も用いてガイドすることで、テスト作成やレビュー、戦略策定を支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o testing-guide.zip https://jpskill.com/download/8781.zip && unzip -o testing-guide.zip && rm testing-guide.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/8781.zip -OutFile "$d\testing-guide.zip"; Expand-Archive "$d\testing-guide.zip" -DestinationPath $d -Force; ri "$d\testing-guide.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して testing-guide.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → testing-guide フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

テストガイド

高品質なテストを作成するための制約と規範です。テストが単にコードを網羅するだけでなく、実際に動作を検証することを保証します。

言語

  • 中国語と英語の両方の質問を受け付けます
  • 常に中国語で回答します

トリガー条件

  • ユーザーがテストコードを作成している
  • ユーザーがテスト戦略のガイダンスを必要としている
  • ユーザーがテストカバレッジ、アサーション、変異テストについて言及している
  • コードレビューでテストコードが扱われている

核心理念

テストの目的は「コードを網羅すること」ではなく、「動作を検証すること」です。
テストの根拠はコードからではなく、要件から得られます。

テスト品質ピラミッド

Level 3: テスト有効性 ─ 変異スコア≥80%, 要件追跡率100%
Level 2: アサーション品質   ─ 弱いアサーションの禁止, 実装ではなく動作を検証
Level 1: コードカバレッジ   ─ 行/分岐カバレッジ≥80% (必要条件だが十分条件ではない)

詳細な説明は templates/core-concepts.md を参照してください


制約

ユニットテストの制約

  • [ ] 各テストは、≥1 個の具体的なアサーションを持つ必要があります
  • [ ] 弱いアサーションを唯一のアサーションとして使用することを禁止します (toBeDefined, toBeTruthy, not.toBeNull)
  • [ ] テスト名は、予想される動作を記述する必要があります
  • [ ] テストの根拠はコードからではなく、要件から得られます
  • [ ] 外部依存関係のみを Mock し、内部実装は Mock しません
  • [ ] 各テストは、1 つの動作のみを検証します

詳細なガイドは templates/unit-testing.md を参照してください

カバレッジの制約

  • [ ] 行カバレッジ ≥ 80%
  • [ ] 分岐カバレッジ ≥ 80%
  • [ ] カバレッジは必要条件ですが、十分条件ではありません

変異テストの制約(推奨)

  • [ ] 変異スコア ≥ 60%(推奨 ≥ 80%)
  • [ ] コアビジネスロジックの変異スコア ≥ 80%

設定は templates/mutation-testing.md を参照してください

統合テストの制約

  • [ ] モジュール間のデータフローを検証する必要があります
  • [ ] インターフェースの契約を検証する必要があります
  • [ ] テストデータは独立している必要があります

詳細なガイドは templates/integration-testing.md を参照してください

E2E テストの制約

  • [ ] P0 シナリオは 100% カバーする必要があります
  • [ ] 明示的な待機を使用し、ハードコードされた遅延を禁止します
  • [ ] テストは独立して実行可能である必要があります

詳細なガイドは templates/e2e-testing.md を参照してください

要件追跡の制約

  • [ ] 各要件には、対応するテストが必要です
  • [ ] テストコードには、要件IDを注釈する必要があります

テンプレートは templates/traceability-matrix.md を参照してください


テスト骨格の生成

AI 駆動のトップダウン開発:最初にテスト骨格を生成し、後で実装を埋めます。

标注规范

テストコードには、/devdocs-sync --trace スキャンに使用される追跡アノテーションを含める必要があります。

/**
 * @verifies AC-XXX - 验收标准描述
 * @testcase UT/IT/E2E-XXX
 */
test('テスト名称', () => {
  // テストコード
});
标注 用途 必须性
@verifies AC-XXX 验收标准との関連付け 必須
@testcase UT/IT/E2E-XXX テストケース番号 必須

骨格生成流程

03-test-cases.md (テスト用例設計)
        │
        ▼
生成测试骨架
        ├── describe 構造(機能点ごとにグループ化)
        ├── test.skip() プレースホルダー(各テストケース)
        ├── @verifies/@testcase 标注
        └── // TODO: 实现测试 注释
        │
        ▼
逐个实现测试
        ├── skip の削除
        ├── AAA 構造の記述
        └── 具体的なアサーションの追加

骨格示例

// tests/user.service.test.ts

describe('UserService', () => {
  describe('createUser', () => {
    /**
     * @verifies AC-001 - 邮箱格式校验
     * @testcase UT-001
     */
    test.skip('無効なメールアドレス形式を拒否するはず', () => {
      // TODO: 实现测试
      // Arrange: 無効なメールアドレスを準備
      // Act: createUser を呼び出す
      // Assert: ValidationError がスローされることを検証
    });

    /**
     * @verifies AC-002 - 密码强度校验
     * @testcase UT-002
     */
    test.skip('弱いパスワードを拒否するはず', () => {
      // TODO: 实现测试
    });

    /**
     * @verifies AC-003 - 用户名唯一性
     * @testcase UT-003
     */
    test.skip('重複するユーザー名を拒否するはず', () => {
      // TODO: 实现测试
    });
  });
});

骨格生成约束

  • [ ] 未実装のテストは test.skip() または test.todo() でマークする必要があります
  • [ ] @verifies@testcase アノテーションを追加する必要があります
  • [ ] 機能点 (F-XXX) ごとに describe 構造を編成する必要があります
  • [ ] コメントで AAA 構造を指示する必要があります
  • [ ] テスト名は、予想される動作を記述する必要があります
  • [ ] 1 つのテストで 1 つの AC のみを検証します

与 DevDocs 协作

阶段 Skill 输入 输出
测试设计 /devdocs-test-cases 需求文档 测试用例矩阵
骨架生成 /devdocs-dev-tasks 测试用例 测试骨架代码
测试实现 /testing-guide 骨架代码 完整测试
追溯同步 /devdocs-sync --trace 代码标注 更新矩阵

クイックリファレンス

テスト命名

[テスト対象メソッド] は [予想される動作] するはず [条件] の場合

テスト構造 (AAA)

Arrange → Act → Assert (具体的なアサーション)

禁止されている弱いアサーション

// ❌ 禁止
expect(result).toBeDefined();
expect(result).toBeTruthy();
expect(result).not.toBeNull();

// ✅ 要求
expect(result.status).toBe('success');
expect(result.items).toHaveLength(3);

常用命令

# 覆盖率
npm test -- --coverage          # Jest
pytest --cov=src               # pytest
go test -cover ./...           # Go

# 变异测试
npx stryker run                # JS/TS
mutmut run                     # Python
mvn pitest:mutationCoverage    # Java

テンプレートインデックス

コアガイド

模板 说明
core-concepts.md テストのコアコンセプトと品質ピラミッドの詳細
unit-testing.md ユニットテストの完全なガイド
integration-testing.md 統合テストの戦略と例
e2e-testing.md E2E テストのベストプラクティス

ツール設定

模板 说明
mutation-testing.md 8つの言語の変異テスト設定
ci-integration.md CI/CD 統合設定
traceability-matrix.md 要件追跡マトリックス
test-examples.md テストコードの例のコレクション

言語のベストプラクティス

语言 框架 模板
JavaScript/TypeScript Jest, Vitest best-practices/jest-vitest.md
Python pytest best-practices/pytest.md
Java JUnit 5 best-practices/junit5.md
C# / .NET xUnit, NUnit best-practices/xunit.md
Go testing, testify best-practices/go.md
Rust cargo test best-practices/rust.md
Swift XCTest best-practices/swift.md
C/C++ Google Test best-practices/googletest.md

他の Skills との連携

场景 Skill
测试用例设计 /devdocs-test-cases
代码可测试性 /code-quality
重构前测试 /refactor
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Testing Guide

编写高质量测试的约束规范,确保测试真正验证行为而非仅仅覆盖代码。

Language

  • Accept questions in both Chinese and English
  • Always respond in Chinese

Trigger Conditions

  • 用户正在编写测试代码
  • 用户需要测试策略指导
  • 用户提到测试覆盖率、断言、变异测试
  • Code Review 中涉及测试代码

核心理念

测试的目的不是"覆盖代码",而是"验证行为"。
测试依据来自需求,不是来自代码。

测试质量金字塔

Level 3: 测试有效性 ─ 变异得分≥80%, 需求追溯100%
Level 2: 断言质量   ─ 禁止弱断言, 验证行为非实现
Level 1: 代码覆盖   ─ 行/分支覆盖≥80% (必要非充分)

详细说明见 templates/core-concepts.md


Constraints

单元测试约束

  • [ ] 每个测试必须有 ≥1 个具体断言
  • [ ] 禁止弱断言作为唯一断言 (toBeDefined, toBeTruthy, not.toBeNull)
  • [ ] 测试名称必须描述预期行为
  • [ ] 测试依据来自需求,不是代码
  • [ ] 只 Mock 外部依赖,不 Mock 内部实现
  • [ ] 每个测试只验证一个行为

详细指南见 templates/unit-testing.md

覆盖率约束

  • [ ] 行覆盖率 ≥ 80%
  • [ ] 分支覆盖率 ≥ 80%
  • [ ] 覆盖率是必要条件,不是充分条件

变异测试约束(推荐)

  • [ ] 变异得分 ≥ 60%(建议 ≥ 80%)
  • [ ] 核心业务逻辑变异得分 ≥ 80%

配置见 templates/mutation-testing.md

集成测试约束

  • [ ] 必须验证模块间数据流
  • [ ] 必须验证接口契约
  • [ ] 测试数据必须独立

详细指南见 templates/integration-testing.md

E2E 测试约束

  • [ ] P0 场景必须 100% 覆盖
  • [ ] 使用显式等待,禁止硬编码延时
  • [ ] 测试必须可独立运行

详细指南见 templates/e2e-testing.md

需求追溯约束

  • [ ] 每个需求必须有对应测试
  • [ ] 测试代码应标注需求ID

模板见 templates/traceability-matrix.md


测试骨架生成

AI 驱动的自顶向下开发:先生成测试骨架,后填充实现。

标注规范

测试代码必须包含追溯标注,用于 /devdocs-sync --trace 扫描:

/**
 * @verifies AC-XXX - 验收标准描述
 * @testcase UT/IT/E2E-XXX
 */
test('测试名称', () => {
  // 测试代码
});
标注 用途 必须性
@verifies AC-XXX 关联验收标准 必须
@testcase UT/IT/E2E-XXX 测试用例编号 必须

骨架生成流程

03-test-cases.md (测试用例设计)
        │
        ▼
生成测试骨架
        ├── describe 结构(按功能点分组)
        ├── test.skip() 占位(每个测试用例)
        ├── @verifies/@testcase 标注
        └── // TODO: 实现测试 注释
        │
        ▼
逐个实现测试
        ├── 移除 skip
        ├── 编写 AAA 结构
        └── 添加具体断言

骨架示例

// tests/user.service.test.ts

describe('UserService', () => {
  describe('createUser', () => {
    /**
     * @verifies AC-001 - 邮箱格式校验
     * @testcase UT-001
     */
    test.skip('应该拒绝无效邮箱格式', () => {
      // TODO: 实现测试
      // Arrange: 准备无效邮箱
      // Act: 调用 createUser
      // Assert: 验证抛出 ValidationError
    });

    /**
     * @verifies AC-002 - 密码强度校验
     * @testcase UT-002
     */
    test.skip('应该拒绝弱密码', () => {
      // TODO: 实现测试
    });

    /**
     * @verifies AC-003 - 用户名唯一性
     * @testcase UT-003
     */
    test.skip('应该拒绝重复用户名', () => {
      // TODO: 实现测试
    });
  });
});

骨架生成约束

  • [ ] 必须使用 test.skip()test.todo() 标记未实现测试
  • [ ] 必须添加 @verifies@testcase 标注
  • [ ] 必须按功能点 (F-XXX) 组织 describe 结构
  • [ ] 必须在注释中提示 AAA 结构
  • [ ] 测试名称必须描述预期行为
  • [ ] 一个测试只验证一个 AC

与 DevDocs 协作

阶段 Skill 输入 输出
测试设计 /devdocs-test-cases 需求文档 测试用例矩阵
骨架生成 /devdocs-dev-tasks 测试用例 测试骨架代码
测试实现 /testing-guide 骨架代码 完整测试
追溯同步 /devdocs-sync --trace 代码标注 更新矩阵

Quick Reference

测试命名

[被测方法] 应该 [预期行为] 当 [条件]

测试结构 (AAA)

Arrange → Act → Assert (具体断言)

禁止的弱断言

// ❌ 禁止
expect(result).toBeDefined();
expect(result).toBeTruthy();
expect(result).not.toBeNull();

// ✅ 要求
expect(result.status).toBe('success');
expect(result.items).toHaveLength(3);

常用命令

# 覆盖率
npm test -- --coverage          # Jest
pytest --cov=src               # pytest
go test -cover ./...           # Go

# 变异测试
npx stryker run                # JS/TS
mutmut run                     # Python
mvn pitest:mutationCoverage    # Java

模板索引

核心指南

模板 说明
core-concepts.md 测试核心理念与质量金字塔详解
unit-testing.md 单元测试完整指南
integration-testing.md 集成测试策略与示例
e2e-testing.md E2E 测试最佳实践

工具配置

模板 说明
mutation-testing.md 8种语言变异测试配置
ci-integration.md CI/CD 集成配置
traceability-matrix.md 需求追溯矩阵
test-examples.md 测试代码示例集

语言最佳实践

语言 框架 模板
JavaScript/TypeScript Jest, Vitest best-practices/jest-vitest.md
Python pytest best-practices/pytest.md
Java JUnit 5 best-practices/junit5.md
C# / .NET xUnit, NUnit best-practices/xunit.md
Go testing, testify best-practices/go.md
Rust cargo test best-practices/rust.md
Swift XCTest best-practices/swift.md
C/C++ Google Test best-practices/googletest.md

与其他 Skills 协作

场景 Skill
测试用例设计 /devdocs-test-cases
代码可测试性 /code-quality
重构前测试 /refactor