SuperAPI AI 工具集

dsh-ci-test-reliability

测试与质量

查看项目

更新于 10-15 20:35

技能介绍

用途:在仓库真实 CI 拓扑下编写可靠的 DSH 测试与夹具,而不只是在本机安静环境中单独运行通过。该技能负责隔离与可靠性决策,不替代仓库的测试层级策略,也不决定推送时应执行的全部命令。

主要能力与做法: 一是建模执行拓扑。默认同一 Vitest 文件内、不同文件或 worker 进程、同一 job 内的独立进程、共享同一 runner 主机的不同 Actions job 都可能重叠。进程隔离并不隔离主机端口、可预测的文件系统路径、外部服务、数据库、套接字或继承的子进程;对每个获配资源要明确所有者、原子分配机制、可观测就绪信号、登记的清理与静默完成信号。不要因某个夹具缺乏隔离就串行整个套件。 二是原子分配资源。使用资源所有者的分配器;网络夹具用 listen(0) 绑定回环并在服务器报告监听后读取地址,不要先扫描空闲端口再稍后绑定;用 mkdtemp 创建每测试私有临时根目录;共享数据库、套接字、会话与输出位置使用每测试唯一命名空间;需要路径不存在时使用独占创建;把稳定记录标识与临时传输地址分开。仅作为解析输入或期望值的字面路径与 URL 不算获配资源,不要因其看似固定而改写。 三是收敛进程全局状态。把 process.env、cwd、假定时器、locale 与时区、模块 mock、注册表、console 钩子、globalThis、全局 fetch 拦截视为独占可变资源;优先注入依赖或实例级适配器;必须修改时记录原值是否存在、精确恢复、立即登记恢复、在最小改动范围内用 try/finally,并在 afterEach 保留兜底。 四是尊重平台语义差异。CI 在 Windows 与 POSIX 上运行同一套件;还原文件 mtime 仅在断言容忍写回失败时安全;Windows 环境变量名大小写不敏感,NTFS 滴答为 100 纳秒,文件句柄异步释放,且没有 POSIX 权限与信号语义,相关用例应显式按平台跳过并说明原因。 五是按 lane 预算设置超时,describe 或 case 超时会覆盖运行器 --testTimeout,hook 预算要随测试预算提升;以超时为主题的用例,外层等待应远大于被测超时。 六是同步状态而非固定 sleep,等待显式就绪事件、握手、状态转换、自有 promise 或外部可观测条件,超时只用于限制等待。 七是清理至静默:获配后立即登记清理,停止新回调与请求、解绑监听、恢复全局钩子、终止自有工作并等待子进程退出、服务器关闭或等效完成信号。 八是证明目标回归:先观察普通回归失败,竞态用屏障证明重叠,端口与子进程类修复需并发独立进程验证,并用外部状态、事件、文件、日志、退出与释放证据代替组件自述;压力运行只是补充。 九是拒绝掩盖性修复:未识别等待状态就加超时、加重试、全量串行、吞错、削弱断言、归一化不稳定行为、在清理或断言前加 sleep,都不能当作确定性本地测试的根因修复;重试仅适用于真实 API 策略下有记录的瞬时外部提供方测试。 十是诊断现有 flake 时按 CI flake 诊断工作流进行,仅诊断的请求保持只读,报告原因与证据。最后用 dsh-pre-push-checks 推送前校验,并报告确切命令与观察结果,不把重试、跳过测试或未完成 CI 描述为通过。

限制:文中未给出具体命令、配置示例与收费信息,暂未提供;该技能不替代仓库测试层级策略,也不负责为一次推送选择全部命令。