SuperAPI AI 工具集

Hardening

测试与质量

查看项目

更新于 10-15 20:31

技能介绍

用途:Hardening 用于加固已经存在的测试、ISC 和代码,提升其健壮性,不添加新功能。其核心思路是“测试测试本身”(meta-test),即检验那些用来检验系统的测试是否足够有效。

主要能力:共五个工作流,覆盖测试面与代码面。PropertyTest 基于 fast-check 做属性测试,把通用量化断言写成属性,失败时收缩到最小反例;MutationTest 基于 Stryker 做变异测试,验证测试套件能否捕获注入的缺陷;CrapAnalysis 做 CRAP 复杂度评分,找出高风险且测试不足的代码;DryAnalysis 用 jscpd 扫描重复代码;AcceptanceTestMutation 通过扰动 ISC 文本,检测空洞或承载性 ISC。

使用方式:按触发词路由工作流。例如“property test”“PBT”“fast-check”进入 PropertyTest;“mutation test”“Stryker”进入 MutationTest;“CRAP score”进入 CrapAnalysis;“DRY scan”“jscpd”进入 DryAnalysis;“acceptance test mutation”进入 AcceptanceTestMutation。PropertyTest 不替代 bun-test 的示例测试,属性表达通用声明,示例是其采样实例。属性测试失败时应固定种子,如 // fc seed: 0xdeadbeef。默认预算 numRuns: 1000,关键不变量可增至 10000,慢生成器可降至 100。

适用场景:纯函数、解析器、序列化器、数据转换与不变量等场景;可用于识别只有示例覆盖的纯函数,以及评估测试套件的健壮性。

限制:当前仅 PropertyTest 为完整可用(v1.0),其余四个工作流均为存根,尚未构建。MutationTest 因等待 Stryker 集成被推迟;CrapAnalysis 需 AST 遍历器;DryAnalysis 需 jscpd 包装;AcceptanceTestMutation 需 ISC 文本扰动生成器。属性测试对非纯函数不适用,生成器约束不足会产生无效输入,过度约束会掩盖缺陷,需按函数实际有效输入域约束。