SuperAPI AI 工具集

chunk-testing-gaps

测试与质量

查看项目

更新于 10-15 17:34

技能介绍

用途:对当前代码库执行变更测试(mutation testing),找出测试覆盖缺口。变更测试是指对生产代码做小幅刻意修改以模拟真实缺陷;若测试失败说明“变异体”被杀,若测试仍通过则“变异体”存活,即暴露覆盖缺口。目标是按风险优先级找出尽可能多的存活变异体。

前提:需在 VCS 项目的本地克隆中运行;若不是则停止并说明。测试前需确保本地依赖已启动,例如 docker compose up -d 或等效命令;若 compose 失败,检查是否有其他项目容器占用端口并终止。

变更对象优先级(高到低):安全与认证(认证检查、权限门、加密、令牌校验、输入净化);控制流(条件反转如 == ↔ !=、< ↔ <=,删除或反转 if 分支,switch/case 调整,增删提前返回);校验(删除或削弱输入校验、改边界检查、删除 nil/null 防护);状态与值(变量置零或硬编码、改默认值、改常量);错误处理(吞掉错误、删除重试、删除回退路径)。不应对测试代码、测试辅助、fake、mock、fixture、端到端测试框架,以及仅日志/追踪/指标代码(除非影响控制流)、生成代码或 vendor 依赖做变更。

偏向存活:重点观察测试 mock 与生产默认值耦合、测试直接断言模型字段、只有 happy path、缺少边界值/空集合/nil 输入/零长字符串等模式。

方法分阶段:一、发现,可用子代理按包/模块并行,每个候选变更分配唯一序号(如 MUT-001),密度约每 50 行生产代码 1 个变更,3 分钟无新候选则停止;记录编号、文件路径与行号、变更描述、可能存活理由。二、验证,为每个候选在新分支 chunk/mut-<NUMBER>-<kebab描述> 上创建 git worktree,应用变更,运行项目标准静态分析(linter、类型检查、编译,如 ./do 或 Taskfile),再运行涉及被改函数/类型的定向测试(Go 用 -race -timeout 1m,超 1 分钟视为可行);本地失败记为本地被杀并删除 worktree,存活则推送远端触发或等待 CI;批量推送(如每次 10–20 个)并轮询 CI 结果,CI 失败记为 CI 被杀,通过记为存活;被杀后及时清理 worktree。汇总表含编号、变更、文件、行号、分支链接、状态。三、生产交叉验证,借助可观测性工具(Honeycomb 查最近 7 天相关 trace 的 span 数与错误率;Datadog 查相关端点/服务/函数指标与请求量、延迟分位;或 Kibana、Prometheus、New Relic、CloudWatch 等)判断存活变异体代码路径是否有生产流量,列 High/Low/None found/Unknown;无观测权限则说明并跳过。四、风险评估,依据变更严重性、生产流量、影响范围、可检测性给出 Critical/High/Medium/Low,并按风险从高到低输出最终汇总表,含生产流量、风险、理由。限制:需本地克隆与可运行依赖,CI 与可观测性访问可能不可用,变更数量受时间与项目规模约束。具体命令、工具与平台可用性暂未提供。