jpskill.com
📦 その他 コミュニティ

generate-test-cases

Markdown形式の要件定義書から、持続的な学習と記憶に基づきテストケースのXMindファイルを自動生成するSkill。

📜 元の英語説明(参考)

自主学习型测试文档生成器。从需求文档(Markdown)生成测试用例 XMind 文件,支持持久化记忆和持续学习。当用户提到"生成测试用例"、"根据需求生成测试"时触发。

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

一言でいうと

Markdown形式の要件定義書から、持続的な学習と記憶に基づきテストケースのXMindファイルを自動生成するSkill。

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

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

🎯 この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-17
取得日時
2026-05-17
同梱ファイル
1

📖 Skill本文(日本語訳)

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

[スキル名] generate-test-cases

要求に基づいてテストケースを生成する

要求ドキュメントから、深い分析、品質自己検査、自己学習能力を備えたプロフェッショナルなテストケースを自動生成します。

コア機能

  • 深い分析:4つのテスト設計手法(EP/BVA/ST/EG)で要求を体系的にカバーします。
  • 品質組み込み:カバレッジ検証 + 優先度分布チェック + 自己検査ゲートにより、生成前に欠陥を阻止します。
  • 要求トレーサビリティ:要求↔テストケースの双方向トレーサビリティマトリックスを自動で構築し、カバレッジを定量化します。
  • 自己学習:永続的な記憶 + 履歴トレンド分析 + 曖昧な決定の再利用により、使えば使うほど精度が向上します。
  • インタラクティブな確認:高速モードで、重要なポイントは手動で確認します。

品質基準

生成されるテストケースは、以下の7つの側面を満たす必要があります(Phase 2.8の品質事前審査で項目ごとにチェックされます)。

側面 基準 チェック方法
要求カバレッジ 各要求に少なくとも1つのテストケースが関連付けられ、カバレッジ ≥ 95% トレーサビリティマトリックス計算
方法カバレッジ 各要求に少なくとも1つの設計方法が使用され、複雑な要求には ≥ 2つの方法 方法分布統計
優先度分布 P0: 10-15%, P1: 30-40%, P2: 30-40%, P3: 10-20% 分布比率チェック
ステップ実行可能性 各テストケースのステップが明確で操作可能であり、期待結果が検証可能であること AI自己検査
要求外の作成なし すべてのテストケースは要求ドキュメントに由来し、架空のシナリオを作成しないこと トレーサビリティ関係検証
用語の一貫性 テストケースで使用される用語が要求ドキュメント、terminology.json と一致していること 用語照合
冗長な重複なし 異なる設計方法で生成されたテストケースに意味的な重複がないこと。既にカバーされた検証目標は、異なるデータ状態を理由に重複して生成しないこと 重複排除スキャン

インタラクションパターン

詳細は INTERACTION-PATTERNS.md をご参照ください。

高速モードを採用しています。エンターキーで続行し、問題や異常が発見された場合にのみユーザーに質問します。

インタラクションチェックポイント

チェックポイント フェーズ 動作
解析確認 Phase 2.5 概要 + 問題がある場合に質問
曖昧さ処理 Phase 2.6 重要な曖昧さのみ
生成プレビュー Phase 2.8 統計データ

テスト設計方法

詳細な定義と例は TEST-DESIGN-METHODS.md をご参照ください。

4つの方法を順序通りに重ねて使用します

EP 同値分割 → BVA 境界値分析 → ST シナリオ法 → EG エラー推測
方法 コアアクション トリガー条件
EP 同値クラス 有効/無効同値クラスを分割し、無効クラスは個別にカバー 入力範囲、形式、列挙制約がある場合
BVA 境界値 上点、離点、内点をテスト 数値/長さ/時間の境界がある場合
ST シナリオ法 基本フロー→代替フロー→異常フローごとにテストケースを生成 複数ステップの業務プロセスが関与する場合
EG エラー推測 特殊文字、極端な値、並行シナリオを補完 リスクの高いモジュール、過去の欠陥が多い場合

要求トレーサビリティとカバレッジ

詳細な仕様は TRACEABILITY.md をご参照ください。

  • 要求IDREQ-xxxF1.2US_042PROJ-123 などのパターンを自動で識別します。IDがない場合は MOD_{略語}_{連番} を生成します。
  • 双方向トレーサビリティ:要求→テストケース + テストケース→要求、Phase 2.8でカバレッジ統計を出力します。
  • カバレッジ目標:≥ 95%、未カバーの要求はプレビューでハイライト表示し警告します。

優先度と回帰分類

詳細なルールは TEST-PRIORITY.md をご参照ください。

レベル 出典 回帰テストセット
P0 コア 基本フローテストケース スモークテスト(ビルドごと)
P1 主要 代替フロー + 境界値 コア回帰(毎日/テスト提出時)
P2 次要 異常フロー + エラー推測 全量回帰(リリース前)
P3 辺縁 辺縁エラー推測 全量回帰(リリース前)

.memory 記憶システム

完全なスキーマ定義は MEMORY-SCHEMA.md をご参照ください。

スキルはプロジェクト内に .memory/ フォルダを作成し、セッションをまたがる学習データを保存します。

.memory/
├── project-context.json      # プロジェクトコンテキスト(パス、名前)
├── terminology.json          # ドメイン用語集(自動学習 + 手動補完)
├── generation-history.json   # 生成履歴(品質トレンド分析)
├── user-preferences.json     # ユーザー設定(インタラクションモード、デフォルトタグ)
└── ambiguity-decisions.json  # 曖昧さ決定記録(重複する質問を回避)

コアメカニズム

  • 生成ごとに generation-history.json に自動書き込み(カバレッジ、優先度分布、タグを含む)
  • 曖昧さ処理の決定は ambiguity-decisions.json に書き込まれ、以降の類似する曖昧さには履歴の決定が自動で再利用されます。
  • ユーザーが修正した用語や設定は自動で永続化され、次回のセッションからすぐに適用されます。

ワークフロー

Phase 0: プロジェクト初期化(初回実行時)

  1. プロジェクト構造を検出します(requirements/test-docs/ などのディレクトリをスキャンします)。
  2. .memory/ フォルダを作成します(memory_manager.py --action init)。
  3. 要求ドキュメントからドメイン用語を抽出し、terminology.json に保存します。
  4. ユーザー設定を user-preferences.json に保存します。

Phase 1: 要求の読み込み

  1. requirements/ ディレクトリ内のすべての .md ファイルを直接読み込み、ファイル名順にソートし、ファイル間を --- で区切って完全な要求テキストに結合します。
  2. requirements/ ディレクトリ内のすべての画像ファイル(.png.jpg.jpeg.gif.webp.bmp.svg)を読み込み、要求テキストとともにマルチモーダル入力として扱います。
  3. 上記の内容でPhase 2の解析に進みます。

Phase 2: 要求の解析

  1. 記憶の読み込みと適用
    • terminology.json を読み込み → 解析時に用語を統一し、同義語の重複を回避します。
    • ambiguity-decisions.json を読み込み → 類似する曖昧さには履歴の決定を自動で再利用し、質問をスキップします。
    • generation-history.json を読み込み → 履歴の優先度分布をベースラインとして抽出し、過去によく見られた見落としシナリオタイプを識別して積極的に補完します。
    • user-preferences.json を読み込み → ユーザーのステップ粒度、タイトルスタイルなどの設定を適用します。
  2. 要求IDの抽出:要求の一意な識別子を識別または生成します。
  3. 構造識別:機能モジュール、受け入れ条件、ビジネスルールを識別します。
  4. 体系的なテスト設計(EP→BVA→ST→EGの順序で重ねて使用します):
    • 同値分割:すべての入力の有効/無効同値クラスを識別します。
    • 境界値抽出:数値、長さ、時間の境界を識別します。
    • シナリオフロー識別:基本フロー、代替フロー、異常フローを識別します。
    • エラー推測補完:入力タイプとモジュールリスクレベルに基づいてトリガーします。
    • ビジネスルール補完:BUSINESS-RULES.md を参照し、要求が関わる機能タイプ(リスト、入力ボックス、ボタンなど)に一致する対応するルールテストケースを自動で追加します。
  5. 重複排除スキャン:異なる方法で生成されたテストケースは意味的に重複する可能性があります(例:EPの無効クラスとEGのエラー推測シナリオが重複する場合)。同等のテストケースをマージし、より具体的なものを残します。
    • 状態バリアントの重複排除:あるルールが明確なテストケースで既に検証されている場合、"異なるデータ状態"を理由に同じ検証目標のバリアントテストケースを生成しないでください。
      • ✅ 「システムレポートに【システム】タグが表示される」+「カスタムレポートに【システム】タグが表示されない」が既に存在する場合 → 「カスタムレポートのみが存在する場合にタグが表示されない」「システムレポートを追加した後に自動的にタグが表示される」「システムレポートを削除した後にカスタムレポートにタグが表示されない」は生成する必要はありません。検証目標は完全に同じであり、前置データ状態が異なるだけだからです。
      • 判断基準:新しいテストケースの検証目標("何を検証するか")が既存のテストケースでカバーされているかどうか。カバーされている場合は破棄します。"何を検証するか"が異なる場合にのみ保持します。
    • シナリオ修飾語バリアントの重複排除:既存のテストケースに"混合時" "同時に存在する場合" "共存時"などのシナリオ修飾語を追加して新しいテストケースを生成しないでください。検証目標が実質的に同じであればマージします。
      • ✅ 「システム集計表が上部に、カスタム集計表が下部に表示される」が既に存在する場合 → 「システム表とカスタム表が混在する場合のソートルールが正しい」は生成する必要はありません。"混合シナリオ"は前者の前置条件であり、両者の検証目標は完全に同じだからです。
      • 判断基準:修飾語を取り除いた後、2つのテストケースのコアアサーション("システムが上で、カスタムが下")が一致するかどうか。一致する場合はマージし、より明確な表現のものを残します。
  6. 曖昧さ検出:不明確な要求記述を識別します。ambiguity-decisions.json と比較し、類似する曖昧さには履歴の決定を自動で再利用します。
  7. カバレッジ事前計算:要求→テストケースのマッピングを統計し、未カバーの要求をマークします。
  8. PARSING-RULES.md を参照します。

Phase 2.5: 【チェックポイント1】解析確認

AskUserQuestion を使用して解析結果を確認します。

X個のモジュール、Y個の要求、Z個のルールを識別しました。

ℹ️ タグ:前回選択した「{default_tag}」を使用します(または初回に質問します)。

警告が検出された場合、またはdefault_tagがない場合にのみユーザーに質問します。
警告がなく、default_tagがある場合は自動で続行します。

default_tag がない場合、または警告が検出された場合、この段階でタグ(適用対象)を質問します。質問する前に、要求ドキュメントに明示的なプラットフォーム宣言があるかを確認します

  • 要求に tagはPCのみに適用APPのみに適用適用対象:ミニプログラム のような直接的な宣言文がある場合、それを直接読み取って適用し、ユーザーに質問してはなりません。概要には ℹ️ タグ:要求ドキュメントから「{tag}」を読み取りました と表示します。
  • 要求に明示的な宣言がない場合、以下のオプションを表示して質問します。
今回のテストケースはどのプラットフォームに適用されますか?番号を入力するか、直接入力してください:
1. PC
2. APP
3. C端
4. PC, APP
5. ミニプログラム
6. その他(説明してください)

重要:タグに関する質問はこの段階で完了した後、Phase 2.6 / 2.8 およびそれ以降のすべての段階で適用対象を再度質問してはなりません。たとえそれを曖昧さと見なす場合でも例外ではありません。

Phase 2.6: 曖昧さ処理

検出された曖昧な要求について一つずつ質問します。

要求原文:{text}
曖昧さの種類:境界が不明確 / ルールが衝突 / 条件が不足
私の理解:{interpretation}

選択してください:
1. 私の理解を受け入れる
2. 異なる解釈を提供する
3. この要求をスキップする
4. 確認待ちとしてマークする
  • P0/P1に影響する重要な曖昧さのみを質問し、その他の曖昧さはAIの理解を自動で採用し、注釈を付けます。

Phase 2.8: 【チェックポイント2】品質事前審査 & 生成プレビュー

AskUserQuestion を使用して生成計画をプレビューします。

品質自己検査(不合格の場合は修正後に再表示)

□ カバレッジ ≥ 95%(未カバーの要求リストをハイライト表示)
□ P0の割合 10-15%
□ P1の割合 30-40%
□ 各要求に少なくとも1つの設計方法が関連付けられている
□ 要求外で作成されたシナリオがない
□ 意味的に重複するテストケースがない
X個のテストケースを生成します | カバレッジ ZZ% | P0:X P1:X P2:X P3:X

品質自己検査が不合格の場合にのみ質問します。
合格の場合はエンターキーで続行します。

Phase 3: ドキュメントの生成

  1. 優先度の割り当て:テストケースのタイプに基づいてP0-P3を自動で判断します。
  2. 要求IDの関連付け:各テストケースはソース要求を記録します。
  3. テストケース記述規則
    • タイトル形式:アクション + オブジェクト + 条件/シナリオ、曖昧な言葉(「正常」「正しい」)は使用禁止です。
    • ステップ粒度:各ステップは1つのことのみを行い、複数のアクションの結合は禁止です(例:「ユーザー名を入力してログインをクリックする」は2つのステップに分割すべきです)。ステップには操作のみを記述し、ステップ内で「検証」「チェック」「確認」などの検証動詞は使用禁止です。
    • ステップ番号:各操作は N. で開始します(例:1. ログインページを開く)。対応する期待結果も同じ番号を使用します(例:1. アカウントとパスワードの入力欄が表示される)。番号は1から連続して増加し、stepsと期待結果の配列の長さは等しくなければなりません。
    • 期待結果:検証可能でなければならず、具体的なデータ/状態を含み、「システムが正常に処理する」「正常に表示される」などの曖昧な記述は禁止です。1つのステップに複数の検証点がある場合は、カンマで区切って同じ期待結果に記述し、ステップを分割しません。
    • 前提条件:特定の環境準備が必要な場合にのみ記入し、「ユーザーはログイン済み」のような自明な内容は避けます。
    • ビジネスルール拡張(BUSINESS-RULES.md)は合理的な推論の範囲内であり、「作成なし」の制約を受けません。
    • user-preferences.json に保存されているステップ粒度、タイトルスタイルの設定を適用します。
  4. テストケースをJSON配列として整理し、プロジェクトの一時ファイル tmp/cases_<タイムスタンプ>.json に書き込みます(例:tmp/cases_20260225143022.json)。ディレクトリが存在しない場合は自動で作成します。
  • タイムスタンプは14桁でなければなりません:YYYYmmddHHMMSS(正規表現:^\d{14}$
  • 日付のみの命名は禁止です(例:tmp/cases_20260226.json)。
  1. scripts/generate_xmind.py -f tmp/cases_<タイムスタンプ>.json を呼び出してXMindファイルを生成し、出力パスは test-docs/testcases_<タイムスタンプ>.xmind に固定します。

Phase 4: 記憶の更新(自己学習ループ)

完全な学習ルールは LEARNING-RULES.md をご参照ください。

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

根据需求生成测试用例

从需求文档自动生成专业测试用例,具备深度解析、质量自检、自主学习能力。

核心能力

  • 深度解析:4 种测试设计方法(EP/BVA/ST/EG)系统性覆盖需求
  • 质量内建:覆盖率验证 + 优先级分布检查 + 自检门禁,生成前拦截缺陷
  • 需求追溯:自动建立需求↔用例双向追溯矩阵,量化覆盖率
  • 自主学习:持久化记忆 + 历史趋势分析 + 歧义决策复用,越用越准
  • 交互式确认:快速模式,关键节点人工把关

质量标准

生成的测试用例必须满足以下 7 维度(Phase 2.8 质量预审时逐项检查):

维度 标准 检查方式
需求覆盖 每条需求至少关联 1 条用例,覆盖率 ≥ 95% 追溯矩阵计算
方法覆盖 每条需求至少使用 1 种设计方法,复杂需求 ≥ 2 种 方法分布统计
优先级分布 P0: 10-15%, P1: 30-40%, P2: 30-40%, P3: 10-20% 分布比例检查
步骤可执行 每条用例的步骤明确、可操作,预期结果可验证 AI 自检
无需求外编造 所有用例来源于需求文档,不凭空编造场景 追溯关系验证
术语一致 用例中使用的术语与需求文档、terminology.json 一致 术语对照
无冗余重复 不同设计方法产生的用例无语义重复;已覆盖的验证目标不得以不同数据状态为由重复生成 去重扫描

交互模式

详见 INTERACTION-PATTERNS.md

采用快速模式:回车继续,仅在发现问题或异常时询问用户。

交互检查点

检查点 阶段 行为
解析确认 Phase 2.5 摘要 + 有问题时询问
歧义处理 Phase 2.6 仅关键歧义
生成预览 Phase 2.8 统计数据

测试设计方法

详细定义与示例见 TEST-DESIGN-METHODS.md

4 种方法按序叠加使用

EP 等价类划分 → BVA 边界值分析 → ST 场景法 → EG 错误推测
方法 核心动作 触发条件
EP 等价类 划分有效/无效等价类,无效类单独覆盖 有输入范围、格式、枚举约束
BVA 边界值 测试上点、离点、内点 有数值/长度/时间边界
ST 场景法 基本流→备选流→异常流各生成用例 涉及多步骤业务流程
EG 错误推测 补充特殊字符、极端值、并发场景 高风险模块、历史缺陷多

需求追溯与覆盖率

详细规范见 TRACEABILITY.md

  • 需求ID:自动识别 REQ-xxxF1.2US_042PROJ-123 等模式;无ID时生成 MOD_{缩写}_{序号}
  • 双向追溯:需求→用例 + 用例→需求,Phase 2.8 输出覆盖率统计
  • 覆盖率目标:≥ 95%,未覆盖需求在预览中高亮警告

优先级与回归分类

详细规则见 TEST-PRIORITY.md

级别 来源 回归集
P0 核心 基本流用例 冒烟测试(每次构建)
P1 主要 备选流 + 边界值 核心回归(每日/提测)
P2 次要 异常流 + 错误推测 全量回归(发版前)
P3 边缘 边缘错误推测 全量回归(发版前)

.memory 记忆系统

完整 Schema 定义见 MEMORY-SCHEMA.md

Skill 在项目中创建 .memory/ 文件夹,存储跨会话学习数据:

.memory/
├── project-context.json      # 项目上下文(路径、名称)
├── terminology.json          # 领域术语库(自动学习 + 手动补充)
├── generation-history.json   # 生成历史(质量趋势分析)
├── user-preferences.json     # 用户偏好(交互模式、默认标签)
└── ambiguity-decisions.json  # 歧义决策记录(避免重复询问)

核心机制

  • 每次生成自动写入 generation-history.json(含覆盖率、优先级分布、标签)
  • 歧义处理决策写入 ambiguity-decisions.json,后续相似歧义自动复用
  • 用户修正的术语、偏好自动持久化,下次会话即刻生效

Workflow

Phase 0: 项目初始化(首次运行)

  1. 检测项目结构(扫描 requirements/test-docs/ 等目录)
  2. 创建 .memory/ 文件夹(memory_manager.py --action init
  3. 从需求文档提取领域术语,存入 terminology.json
  4. 保存用户偏好到 user-preferences.json

Phase 1: 读取需求

  1. 直接读取 requirements/ 目录下所有 .md 文件,按文件名排序,文件间以 --- 分隔,拼接为完整需求文本
  2. 读取 requirements/ 目录下所有图片文件(.png.jpg.jpeg.gif.webp.bmp.svg),与需求文本一起作为多模态输入
  3. 以上述内容进入 Phase 2 解析

Phase 2: 解析需求

  1. 加载记忆并应用
    • 读取 terminology.json → 解析时统一术语,避免同义词重复
    • 读取 ambiguity-decisions.json → 相似歧义自动复用历史决策,跳过询问
    • 读取 generation-history.json → 提取历史优先级分布作为基线,识别历史常见遗漏场景类型并主动补充
    • 读取 user-preferences.json → 应用用户步骤粒度、标题风格等偏好
  2. 提取需求ID:识别或生成需求唯一标识
  3. 结构识别:功能模块、验收条件、业务规则
  4. 系统性测试设计(按 EP→BVA→ST→EG 顺序叠加):
    • 等价类划分:识别所有输入的有效/无效等价类
    • 边界值提取:识别数值、长度、时间边界
    • 场景流识别:基本流、备选流、异常流
    • 错误推测补充:根据输入类型和模块风险等级触发
    • 业务规则补充:参考 BUSINESS-RULES.md,匹配需求涉及的功能类型(列表、输入框、按钮等)自动追加对应规则用例
  5. 去重扫描:不同方法产生的用例可能语义重复(如 EP 无效类与 EG 错误推测场景重叠),合并等价用例,保留更具体的那条。
    • 状态变体去重:若某条规则已被一个清晰的用例验证,不要再以"不同数据状态"为由生成同等验证目标的变体用例。
      • ✅ 已有「系统报表展示【系统】标签」+ 「自定义报表不展示【系统】标签」→ 不需要再生成「仅存在自定义报表时不显示标签」「新增系统报表后自动显示标签」「删除系统报表后自定义报表仍不显示标签」,因为验证目标完全相同,只是前置数据状态不同
      • 判断标准:新用例的验证目标("验什么")是否已被现有用例覆盖,若是则丢弃;只有"验什么"不同才保留
    • 场景修饰词变体去重:不要在已有用例的基础上,通过添加"混合时""同时存在时""共存时"等场景修饰词生成新用例,若验证目标实质相同则合并。
      • ✅ 已有「系统汇总表排在上方自定义汇总表排在下方」→ 不需要再生成「存在系统表和自定义表混合时排序规则正确」,因为"混合场景"本就是前者的前置条件,两者验证目标完全相同
      • 判断标准:去掉修饰词后,两条用例核心断言("系统在上、自定义在下")是否一致,一致则合并,保留表述更明确的那条
  6. 歧义检测:识别不明确的需求描述;与 ambiguity-decisions.json 比对,相似歧义自动复用历史决策
  7. 覆盖率预计算:统计需求→用例映射,标记未覆盖需求
  8. 参考 PARSING-RULES.md

Phase 2.5: 【检查点1】解析确认

使用 AskUserQuestion 确认解析结果:

已识别 X 个模块,Y 条需求,Z 条规则

ℹ️ 标签:使用上次选择「{default_tag}」(或首次询问)

仅在发现警告或无 default_tag 时询问用户
无警告且有 default_tag 则自动继续

当无 default_tag 或发现警告时,在此阶段询问标签(适用端)。询问前先检查需求文档是否有显式平台声明

  • 若需求中存在类似 tag只适用于PC端仅适用于APP适用端:小程序直接声明语句,直接读取并应用,不得询问用户,并在摘要中提示 ℹ️ 标签:从需求文档读取「{tag}」
  • 若需求中没有显式声明,则展示如下选项询问:
本次用例适用哪些端?请输入编号或直接填写:
1. PC
2. APP
3. C端
4. PC, APP
5. 小程序
6. 其他(请说明)

重要:标签问题在此阶段完成后,Phase 2.6 / 2.8 及后续所有阶段不得再次询问适用端,即使将其视为歧义也不例外。

Phase 2.6: 歧义处理

对检测到的歧义需求逐一询问:

需求原文:{text}
歧义类型:边界不明确 / 规则冲突 / 条件缺失
我的理解:{interpretation}

请选择:
1. 接受我的理解
2. 提供不同解释
3. 跳过此需求
4. 标记为待确认
  • 仅询问影响 P0/P1 的关键歧义,其他歧义自动采用 AI 理解并标注

Phase 2.8: 【检查点2】质量预审 & 生成预览

使用 AskUserQuestion 预览生成方案:

质量自检(不通过则修正后再展示)

□ 覆盖率 ≥ 95%(未覆盖需求列表高亮)
□ P0 占比 10-15%
□ P1 占比 30-40%
□ 每条需求至少关联 1 种设计方法
□ 无需求外编造的场景
□ 无语义重复用例
将生成 X 条用例 | 覆盖率 ZZ% | P0:X P1:X P2:X P3:X

仅在质量自检不通过时询问
通过则回车继续

Phase 3: 生成文档

  1. 分配优先级:根据用例类型自动判断 P0-P3
  2. 关联需求ID:每个用例记录来源需求
  3. 用例写作规范
    • 标题格式:动作 + 对象 + 条件/场景,禁用模糊词(“正常”“正确”)
    • 步骤粒度:每步只做一件事,禁止多动作合并(如"输入用户名并点击登录"应拆为两步);步骤只写操作,禁止在步骤中使用"验证""检查""确认"等验证类动词
    • 步骤编号:每条操作以 N. 起始(如 1. 打开登录页面),对应预期结果使用相同编号(如 1. 显示账号密码输入框),编号从 1 开始连续递增,steps 与预期结果数组长度必须相等
    • 预期结果:必须可验证,包含具体数据/状态,禁用"系统正常处理""正常显示"等模糊描述;一个步骤有多个验证点时用逗号连接写在同一条预期结果中,不拆分步骤
    • 前置条件:仅当需要特定环境准备时填写,避免写"用户已登录"这类显而易见的内容
    • 业务规则扩充(BUSINESS-RULES.md)属于合理推断范围,不受"无编造"约束限制
    • 应用 user-preferences.json 中存储的步骤粒度、标题风格偏好
  4. 将用例组织为 JSON 数组,写入项目临时文件 tmp/cases_<时间戳>.json(如 tmp/cases_20260225143022.json),目录不存在时自动创建
  • 时间戳必须为 14 位YYYYmmddHHMMSS(正则:^\d{14}$
  • 禁止仅日期命名(如 tmp/cases_20260226.json
  1. 调用 scripts/generate_xmind.py -f tmp/cases_<时间戳>.json 生成 XMind 文件,输出路径固定为 test-docs/testcases_<时间戳>.xmind

Phase 4: 更新记忆(自学习闭环)

完整学习规则见 LEARNING-RULES.md

  1. 生成历史:写入 generation-history.json,包含覆盖率、优先级分布、用例数、标签、来源文件
  2. 歧义决策:将 Phase 2.6 中用户的歧义处理决策写入 ambiguity-decisions.json,后续相似歧义自动复用
  3. 新术语:如解析中发现新术语,更新 terminology.json
  4. 用户偏好:保存默认标签等到 user-preferences.json
  5. 质量趋势:与历史记录对比,生成趋势摘要(如覆盖率是否提升、用例数变化)

Phase 5: 用户反馈学习(生成后可选)

用户对生成结果提出修改时,自动触发学习:

反馈类型 示例 学习动作
纠正错误 “这条用例逻辑不对” 重新生成 + 记录歧义模式到 ambiguity-decisions.json
删减用例 “P2 太多了” 询问“是否调整优先级分布作为默认?”→ 写入 user-preferences.json
补充场景 “还缺并发场景” 增补用例 + 记录为常见遗漏到 generation-history.json
修改术语 “这里应该叫 XXX” 询问“是否记住?”→ 写入 terminology.json
调整步骤 “步骤太细了,合并一下” 询问“是否记住这个粒度偏好?”→ 写入 user-preferences.json

输出格式

测试用例 XMind

固定节点结构(符合 XMind 导入规范):

根节点(项目名称)
  └── 模块(最多8层)
        └── tc-p0: 用例标题  /  tc: 用例标题(无优先级时)
              ├── pc: 前置条件(非必填)
              ├── 步骤1
              │     └── 预期结果1
              ├── 步骤2
              │     └── 预期结果2
              └── tag: 标签1,标签2(非必填)

AI 生成用例时输出的 JSON 字段:

字段 必填 说明
模块 数组,最多8层,如 ["登录", "账号密码"]末级目录按功能区域分组,不以单个功能点命名,规则见下方「模块分组规则」
用例标题 格式:动作 + 对象 + 条件/场景,如“输入正确账号密码登录成功”
优先级 P0/P1/P2/P3,影响节点前缀
需求ID 关联的需求标识,如 REQ-001MOD_LOGIN_001
设计方法 EP/BVA/ST/EG 之一或多个,如 ["EP", "BVA"]
前置条件 生成 pc: 子节点
步骤 [{"操作": "1. ...", "预期": "1. ..."}],操作与预期均以数字序号起始,同一步骤编号一致
标签 测试端标识,多端用逗号+空格分隔,如 PCAPPPC, APP

模块分组规则

末级目录必须按功能区域归类,而非按单个功能点各自建目录。同一功能区域的所有用例共用同一个末级目录节点。

功能区域 末级目录名 包含的用例范围
列表展示、排序、标签、筛选、搜索 列表 列表页面上能看到的所有内容
新增/创建表单 新增 点击新增按钮后的页面/弹窗
编辑表单 编辑 编辑页面/弹窗相关用例
详情页 详情 查看详情页面相关用例
删除操作 删除 删除相关用例
导出功能 导出 导出相关用例
导入功能 导入 导入相关用例
权限控制 权限 权限相关用例

正确示例(汇总表需求含标签展示+排序逻辑,全部归入「列表」):

{"模块": ["汇总表", "列表"], "用例标题": "系统报表展示【系统】标签"}
{"模块": ["汇总表", "列表"], "用例标题": "自定义报表不展示【系统】标签"}
{"模块": ["汇总表", "列表"], "用例标题": "系统汇总表排在上方自定义汇总表排在下方"}

错误示例(为每个功能点各建一个目录,导致目录过多):

{"模块": ["汇总表", "系统报表标签"], "用例标题": "系统报表展示【系统】标签"}
{"模块": ["汇总表", "自定义报表标签"], "用例标题": "自定义报表不展示【系统】标签"}
{"模块": ["汇总表", "列表排序"], "用例标题": "系统汇总表排在上方自定义汇总表排在下方"}

JSON 完整示例

{
  "模块": ["用户登录", "账号密码登录"],
  "用例标题": "输入正确账号密码登录成功",
  "优先级": "P0",
  "需求ID": "REQ-001",
  "设计方法": ["ST"],
  "前置条件": "用户已注册账号,且处于未登录状态",
  "步骤": [
    {"操作": "1. 打开登录页面", "预期": "1. 显示账号、密码输入框和登录按钮"},
    {"操作": "2. 输入正确的账号和密码", "预期": "2. 输入内容正常显示,密码为密文"},
    {"操作": "3. 点击登录按钮", "预期": "3. 登录成功,跳转到首页"}
  ],
  "标签": "C端"
}

标签取值规则

  • 显式声明优先:需求文档中若有明确的平台声明语句(如 tag只适用于PC端适用端:APP),直接读取该值写入标签,无需询问用户
  • 禁止隐式推断:需求中未显式声明平台时,不得根据功能描述(如"用户在PC端操作"、"移动端约课"等上下文)自动推断标签;必须在 Phase 2.5 询问用户。
  • 在 Phase 2.5 解析确认阶段统一处理一次全程只处理一次,不得在 Phase 2.6、Phase 2.8 或生成阶段重复询问
  • 将用户输入(包括编号对应的文字)原样写入每条用例的 标签 字段,严禁对用户答案做任何翻译、展开或同义替换(例如:用户填 C端 就写 C端,不得改为 PC, APP;用户填 3 就写 C端,不得改为别的)。
  • 所有用例共用同一答案,除非某条用例有用户明确指定的例外。

脚本调用

生成 XMind

# 时间戳格式:YYYYmmddHHMMSS
TIMESTAMP=$(date +%Y%m%d%H%M%S)
mkdir -p "${SKILL_ROOT}/tmp"
# 先将用例 JSON 写入临时文件
cat > "${SKILL_ROOT}/tmp/cases_${TIMESTAMP}.json" << 'EOF'
[{...}]
EOF
# 再生成 XMind
python3 "${SKILL_ROOT}/scripts/generate_xmind.py" \
  --title "项目名称" \
  --output "test-docs/testcases_${TIMESTAMP}.xmind" \
  -f "${SKILL_ROOT}/tmp/cases_${TIMESTAMP}.json"

管理记忆

# 初始化
python3 "${SKILL_ROOT}/scripts/memory_manager.py" \
  --action init \
  --project "${SKILL_ROOT}"

# 记录本次生成历史(Phase 4 使用)
python3 "${SKILL_ROOT}/scripts/memory_manager.py" \
  --action add-record \
  --project "${SKILL_ROOT}" \
  --data '{"type":"test_case","source":"requirements/xxx.md","output":"test-docs/xxx.xmind","case_count":40,"coverage_rate":"100%"}'

自学习闭环

完整学习规则见 LEARNING-RULES.md

越用越准的核心机制

写入端(Phase 4/5)                    读取端(Phase 2)
─────────────────────                ─────────────────────
生成历史 ───→ generation-history.json ──→ 优先级基线 + 遗漏场景补充
歧义决策 ───→ ambiguity-decisions.json ─→ 相似歧义自动复用
新术语   ───→ terminology.json ────────→ 术语统一 + 缩写展开
用户偏好 ───→ user-preferences.json ────→ 标签/粒度/风格自动应用
用户反馈 ───→ 分发到以上各文件 ──────────→ 下次生成自动避免相同问题

记忆命令"更新术语表" / "清除记忆" / "查看偏好" → 调用 memory_manager.py 对应 action。

约束

质量底线

  • 需求追溯:所有用例必须关联需求ID,不允许悬空用例
  • 方法标记:所有用例必须标记至少 1 种设计方法
  • 优先级分布:P0: 10-15%, P1: 30-40%,P2 补足剩余,P3 ≤ 20%(异常时 Phase 2.8 拦截)
  • 覆盖率:≥ 95%(未达标时 Phase 2.8 高亮警告)
  • 无编造:不凭空编造需求中不存在的场景
  • 无冗余:不同设计方法产生的语义重复用例必须合并

标签规则

  • 需求有显式平台声明时直接读取,无需询问
  • 无显式声明时在 Phase 2.5 询问一次,全程不再重复询问
  • 用户输入原样写入,禁止翻译、展开或同义替换

交互规则

  • 仅在发现问题/异常时询问用户
  • 无异常时自动继续执行

其他

  • 遵循项目已有命名规范
  • 文件命名中的 <时间戳> 必须使用 YYYYmmddHHMMSS(14 位),不得使用仅日期(8 位)格式
  • 默认输出中文,除非项目配置为其他语言
  • .memory 文件夹应加入 .gitignore
  • 禁止复用 tmp/ 缓存:每次生成均从 Phase 1 重新开始,不得读取 tmp/ 中已有的 JSON 文件跳过生成步骤

参考文档