recommending-devops-tests について
コミット差分と Review ステージに割り当てられたテストスイートをもとに、関連するスイートを推奨し、新規メソッドのカバレッジ不足を示すエージェントスキルです。既存スイートのみを推奨し、テストは生成しません。
主な機能
- 01コミット差分から変更種別を特定
- 02既存テストスイートの照合と順位付け
- 03新規メソッドのカバレッジ不足を表示
- 04変更種別ごとに推奨を整理
活用シーン
- 01コミットに関連する Review ステージのスイートを選定
- 02テスト未カバーの新規メソッドを特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill recommending-devops-testsインストール後、Claude Code で/recommending-devops-testsを入力して読み込まれたか確認します。
詳細
DevOps テストの推奨
種類: 純粋な推論 — 以下に記載する前提データ取得クエリ以外のシステムコールは行いません。
機能: コミット差分と利用可能なスイートのメタデータを分析し、Review パイプラインステージに割り当てられている既存テストスイートのうち、最も関連性の高いものを推奨します。新しいメソッドをカバーするスイートがない場合は、カバレッジの不足を指摘します。
前提条件
まず checking-devops-prerequisites スキルを読み込み、その指示に従ってください(前提条件 1~4)。このスキルを実行するには、DevOps Center の組織エイリアスとパイプライン ID が確認済みである必要があります。
手順 1 — スイートのメタデータを取得する
推論を開始する前に、Review パイプラインステージに割り当てられたテストスイートのメタデータを取得してください。取得には 2 つのクエリが必要です。
1a — Review パイプラインステージのトリガーを検索する:
sf data query \
--query "SELECT Id FROM DevopsPipelineStageTrigger WHERE TriggerType = 'Review' AND RelatedRecordId = '<pipelineId>'" \
--target-org <doce-org-alias> \
--json
返された Id を <reviewTriggerId> として記録します。
1b — そのトリガーに割り当てられたスイートを取得する:
sf data query \
--query "SELECT Id, TestSuiteId, TestSuite.Name, IsQualityGateEnabled, DevopsQualityGateId FROM DevopsTestSuiteStage WHERE DevopsPipelineStageTriggerId = '<reviewTriggerId>'" \
--target-org <doce-org-alias> \
--json
各行には、TestSuiteId、TestSuite.Name、IsQualityGateEnabled、および(ゲートが設定されている場合は)DevopsQualityGateId が含まれています。
注:ベータ版の
/connect/devops/.../testSuitesエンドポイントは使用しないでください。空の結果が返されます。上記のとおり、DevopsTestSuiteStageを直接クエリしてください。
未加工の API エラーや未加工の JSON をユーザーに見せてはいけません。クエリが失敗した場合は、問題を平易な言葉で報告して終了してください。
コミット差分は、ユーザーまたは周辺のコンテキストから取得します。
推論手順
1 — 変更の種類ごとに差分を分類する
差分に含まれるファイルの拡張子とパスを解析し、変更の種類を特定します。
| ファイルパターン | 変更の種類 |
|---|---|
*.cls、*.trigger | Apex |
*.flow-meta.xml、*.flow | Flow |
*.java | Java |
*.js、*.html(LWC のパス) | LWC / JavaScript |
1 つのコミットに複数の変更の種類が含まれる場合があります。該当するものをすべて特定してください。
2 — 変更の種類をテストプロバイダーに対応付ける
特定した変更の種類ごとに、取得したスイートの testProviderName と照合します。
| 変更の種類 | testProviderName に以下を含むスイートを照合 |
|---|---|
| Apex | Apex |
| Flow | Flow |
| Java | Java |
| LWC / JavaScript | LWC または JavaScript |
| Code Analyzer(すべて) | Code Analyzer — 次に、スイート名の規則で絞り込みます:recommended → Apex/一般的なルール(Apex と Java の変更に提案)、html → HTML/LWC テンプレートの変更に提案、css → CSS の変更に提案。規則に合うスイート名がない場合は、Code Analyzer のスイートをすべて提案し、該当する規則を特定できない旨を記載します。 |
差分内の少なくとも 1 つの変更の種類にプロバイダーが一致するスイートのみを推奨してください。一致しないプロバイダーのスイートは推奨対象から除外します。
3 — 該当するスイートの順位を付ける
一致したプロバイダーグループ内で、次の順にスイートを順位付けします。
triggerTypeの適合度 — コミット時のチェックではPre-Promoteスイートを優先- Quality Gate の有無 —
qualityGateRuleNameがあるスイートを優先(昇格を制御するため) - スイート名との関連性 — スイート名に変更されたファイル名の用語が含まれる場合は順位を上げる
4 — スイートでカバーされていない新しいメソッドを指摘する
差分に追加された新しいメソッドは、プロバイダーとの一致にかかわらず、不足として指摘します。
「⚠
OrderService.clsのprocessRefund()は新しいメソッドです。テストが作成され、関連付けられるまでは、既存のスイートでカバーされていることを確認できません。」
5 — 推奨リストを返す
各スイートを推奨した理由が明確になるよう、変更の種類ごとに推奨をグループ化します。
出力形式
Recommended suite(s) for this commit:
Apex changes detected (OrderService.cls, InvoiceService.cls):
1. <SuiteName> — Apex Test Provider | Trigger: Pre-Promote | Gate: <gateName or none>
2. <SuiteName2> — Apex Test Provider | Trigger: Post-Promote | Gate: <gateName or none>
Flow changes detected (OrderApproval.flow):
1. <SuiteName3> — Flow Test Provider | Trigger: Pre-Promote | Gate: <gateName or none>
Code Analyzer — Apex rules:
1. <SuiteName4> — Code Analyzer | Trigger: Pre-Promote | Gate: <gateName or none>
No matching suite found for:
- LWC changes — no LWC test suite is assigned to this stage
Coverage gaps (new methods — manual authoring required):
- `processRefund()` in `OrderService.cls` — new method, not yet covered by any suite
v1 の制約
既存のスイートのみを推奨してください。新しいテストの生成は提案しないでください。不足がある場合は、開発者にテストを手動で作成するよう案内し、どのメソッドをカバーする必要があるかを具体的に説明してください。
関連スキル
- 実行結果の失敗を分析するには、
analyzing-test-failuresを使用してください。 - 推奨したスイートを実際に実行するには、
running-devops-test-suiteを使用してください。