SuperAPI AI 工具集

fewer-tests-more-proof

测试与质量

查看项目

更新于 10-16 01:19

技能介绍

用途:在需要合并、去重、优化或清理测试套件,或在不损失覆盖的前提下缩减其规模与运行时间时使用。核心观点是测试套件的价值单位是“被证明的承诺”,而非测试条数;“更少测试”只是副作用,绝非目标,一旦合并会用证明换数量就应停止。

主要能力:先做清单,把每个测试映射到它所证明的承诺(一句一旦为假该测试就会失败的话);无法命名承诺的测试是首要发现。清单会暴露六类合并目标:同一承诺按实现在 N 个并行文件中重复(battery 目标)、同一 setup 在多文件重建(共享 harness 目标)、同一承诺一处弱测一处强测(包含目标)、一组手挑样例都在钉同一通用承诺(属性目标)、无法因可命名原因失败的测试(无断言、未抛异常、同义反复 mock)、概率性并发测试(sleep、重试、跑一百遍循环,确定性目标)。对应六种做法:battery 化、与可信实现做差分、用属性生成用例、用确定性控制替代重试、按普查提升 fixture、有证明地删除。

诚实底线:承诺覆盖必须单调,保留前后承诺清单,被删测试的承诺须出现在幸存测试上;用完整测试配置测 patch 与分支覆盖,注意仅在 bug 存在时才走到的检测分支;参数化断言要标注实现与用例,失败仍能指明原因。删除 flaky 测试不算合并。

防退化:让 enroll 被强制执行而非靠记忆,从代码库推导实现集合并断言每个实现都声明为 battery 支路,对真实例外显式豁免;推导为空时必须失败,豁免须对照现实复核。

报告应包含:测试数与运行时前后对比、承诺清单前后对比(须持平或上升)、每个被删测试的承诺现在何处及哪次破坏运行证明、各实现 enroll 状态与豁免、刻意不合并的部分及继续与否建议。相关技能:reading-isnt-proof、self-audit、less-code-same-behavior。