mcpField
R
recommending-devops-tests

recommending-devops-tests

github.com/forcedotcom测试与质量1.1k255 次安装1 天前更新
代码仓库

关于 recommending-devops-tests

该 Agent 技能根据提交差异和 Review 阶段已分配的测试套件,推荐相关套件并标出新方法的覆盖缺口。它只建议现有套件,不会生成测试。

主要功能

  1. 01按提交差异识别变更类型
  2. 02匹配并排序现有测试套件
  3. 03标记新方法的覆盖缺口
  4. 04按变更类型分组推荐

适用场景

  1. 01为提交选择相关的 Review 阶段测试套件
  2. 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、*.triggerApex
*.flow-meta.xml、*.flowFlow
*.javaJava
*.js、*.html(LWC 路径)LWC / JavaScript

单个提交可能包含多种变更类型。请识别所有类型。

2 — 将变更类型映射到测试提供方

对于识别出的每种变更类型,与已获取套件的 testProviderName 匹配:

变更类型匹配 testProviderName 包含以下内容的套件
ApexApex
FlowFlow
JavaJava
LWC / JavaScriptLWC 或 JavaScript
Code Analyzer(任意)Code Analyzer——然后按套件名称惯例进一步筛选:recommended → Apex/通用规则(建议用于 Apex 和 Java 变更),html → 建议用于 HTML/LWC 模板变更,css → 建议用于 CSS 变更。如果没有套件名称符合该惯例,则建议所有 Code Analyzer 套件,并说明存在歧义。

仅推荐提供方与差异中的至少一种变更类型匹配的套件。不匹配的提供方所对应的套件不纳入推荐。

3 — 对匹配的套件排序

在每个匹配的提供方组内,按以下顺序排列套件:

  1. triggerType 匹配程度——提交时检查优先选择 Pre-Promote 套件
  2. 是否存在质量门——具有 qualityGateRuleName 的套件优先级更高(它们会限制晋升)
  3. 套件名称相关性——如果套件名称包含已修改文件名中的词语,则提高其优先级
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。

评论

支持 Markdown