SuperAPI AI 工具集

analyze-selective-testing

测试与质量

查看项目

更新于 10-15 15:23

技能介绍

用途

Analyze Selective Testing 是 tuist/agent-skills 下的一项技能,专门用于分析 Xcode 选择性测试(selective testing)在一次测试运行中的实际效果。选择性测试的核心目标是让未发生变化的测试被跳过、只运行受影响的测试,因此该技能关注的是:哪些测试目标被跳过、哪些被执行,以及当跳过率下降时原因是什么。

主要能力

  • 解析测试运行:列出并筛选最近的测试运行,可按分支过滤,查看某次运行的基础信息(分支、状态、scheme,以及 xcode_version、macos_version 等环境信息)。
  • 深入目标级数据:获取某次测试运行中每个测试目标的选择性测试状态,字段包括 name(测试目标名)、hit_status(miss 表示实际运行、local 表示通过本地缓存跳过、remote 表示通过远程缓存跳过)、hash(该目标的选择性测试哈希)。
  • 计算生效度:生效度 = (本地命中 + 远程命中) / 总目标数 × 100%,并据此判定:60-100% 为健康,30-60% 为中等,0-30% 为偏低,0% 为冷缓存。
  • 诊断回退:当生效度下降时,帮助判断是全局失效还是级联失效,并通过对比两次运行的 hash 与命中状态找出差异目标。

使用方式

按技能给出的步骤执行:

  1. 解析测试运行。用 tuist test list --json --page-size 10 列出最近的测试运行,可用 --git-branch <branch> 过滤;用 tuist test show <test-run-id> --json 查看某次运行的信息。若未指定,默认使用当前分支上最近的 CI 测试运行;作为对比基线,使用项目默认分支上最近的 CI 测试运行。

  2. 查看目标级选择性测试数据。用 tuist test xcode target list <test-run-id> --json 列出每个目标的状态,并可用 --hit-status miss|local|remote 过滤,进而统计并计算生效度。

  3. 诊断回退。若几乎所有目标都是 miss,可能发生全局失效,常见原因包括 Xcode 版本变更、CI 环境变更(macos_version、model_identifier)、项目图或依赖变更、被广泛依赖的核心目标变更。注意:Tuist CLI 版本升级很少导致哈希失效,因为哈希版本并非每次发布都更新。若只有部分目标是 miss,则可能是依赖变更级联所致;可将两次运行的目标按名称匹配,比较命中状态与 hash,寻找共同依赖。

  4. 给出建议。针对不同根因分别处理,例如统一 CI 的 Xcode/macOS 版本、评估是否确需修改被广泛依赖的模块(可考虑拆分)、新分支冷缓存时先跑一次预热。

适用场景

适用于使用 Tuist 运行 Xcode 测试的团队,在以下情况使用:检查某次测试运行的缓存跳过效果、发现测试耗时上升或命中率下降后追查原因、对比某分支与默认分支的运行、确认环境升级是否导致缓存整体失效。

限制

以上流程依赖 Tuist CLI 相关命令与 JSON 输出,需在具备这些命令的环境中执行。该技能本身为分析流程,不直接修改测试或缓存配置。关于具体版本的兼容性、权限或平台要求,资料中暂未提供。