关于 recommending-devops-tests
该 Agent 技能根据提交差异和 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 流水线阶段的测试套件元数据。这需要执行两个查询。
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。
注意:请勿使用 beta
/connect/devops/.../testSuites端点——它会返回空结果。请按上文所示直接查询DevopsTestSuiteStage。
切勿向用户透露原始 API 错误或原始 JSON。如果查询失败,请用通俗语言说明问题并停止。
提交差异由用户提供,或来自周边上下文。
推理步骤
1 — 按变更类型对差异分类
解析差异中的文件扩展名和路径,以确定变更类型:
| 文件模式 | 变更类型 |
|---|---|
*.cls、*.trigger | Apex |
*.flow-meta.xml、*.flow | Flow |
*.java | Java |
*.js、*.html(LWC 路径) | LWC / JavaScript |
单个提交可能包含多种变更类型。请识别所有类型。
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 套件,并说明存在歧义。 |
仅推荐提供方与差异中的至少一种变更类型匹配的套件。不匹配的提供方所对应的套件不纳入推荐。
3 — 对匹配的套件排序
在每个匹配的提供方组内,按以下顺序排列套件:
triggerType匹配程度——提交时检查优先选择Pre-Promote套件- 是否存在质量门——具有
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。