SuperAPI AI 工具集

recommending-devops-tests

部署与运维

查看项目

更新于 10-15 12:33

技能介绍

用途

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):

  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 变更(OrderApproval.flow):

  1. <SuiteName3> — Flow Test Provider | Trigger: Pre-Promote | Gate: <gateName or none>

Code Analyzer — Apex 规则:

  1. <SuiteName4> — Code Analyzer | Trigger: Pre-Promote | Gate: <gateName or none>

未找到匹配套件:

  • LWC 变更 — 没有 LWC 测试套件分配给该阶段

覆盖缺口(新方法——需要手动编写):

  • processRefund() in OrderService.cls — 新方法,尚未被任何套件覆盖

限制

v1 约束

只推荐现有套件。切勿建议生成新测试。如果存在缺口,指引开发者手动编写测试,并准确说明哪些方法需要覆盖。

相关技能

要从一次运行中分析失败,请使用 analyzing-test-failures。

要实际执行推荐的套件,请使用 running-devops-test-suite。