用途
Recommending DevOps Tests 会分析提交差异与可用的 DevOps Center 测试套件元数据,从 Review 流水线阶段已分配的现有套件中推荐与本次提交最相关的测试套件,并标记新增方法缺少套件覆盖的缺口。
前置条件
需先加载并遵循 checking-devops-prerequisites 技能(前提 1–4)。该技能需要已确认的 DevOps Center 组织别名和 pipeline 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 — 标记没有套件覆盖的新方法
对于差异中新增的任何方法,无论提供者是否匹配,都将其标记为缺口:
"⚠ processRefund() in OrderService.cls is a new method. No existing suite can confirm it's covered until tests are authored and linked."
5 — 返回推荐列表
按变更类型分组推荐,以便清楚说明每个套件被建议的原因。
输出格式
本次提交推荐的套件:
检测到 Apex 变更(OrderService.cls、InvoiceService.cls):
- <SuiteName> — Apex Test Provider | Trigger: Pre-Promote | Gate: <gateName or none>
- <SuiteName2> — Apex Test Provider | Trigger: Post-Promote | Gate: <gateName or none>
检测到 Flow 变更(OrderApproval.flow):
- <SuiteName3> — Flow Test Provider | Trigger: Pre-Promote | Gate: <gateName or none>
Code Analyzer — Apex 规则:
- <SuiteName4> — Code Analyzer | Trigger: Pre-Promote | Gate: <gateName or none>
未找到匹配套件:
- LWC 变更 — 没有 LWC 测试套件分配给该阶段
覆盖缺口(新方法——需要手动编写):
processRefund()inOrderService.cls— 新方法,尚未被任何套件覆盖
限制
v1 约束
只推荐现有套件。切勿建议生成新测试。如果存在缺口,指引开发者手动编写测试,并准确说明哪些方法需要覆盖。
相关技能
要从一次运行中分析失败,请使用 analyzing-test-failures。
要实际执行推荐的套件,请使用 running-devops-test-suite。