DEV Community · Show DEV9/2 02:0151 分
我用Agent修复坏测试,发现自家尺子有八个Bug
I Built an Agent to Fix Bad Tests. I Found Eight Bugs in My Own Ruler.
作者构建了一个Agent来修复质量差的测试,并在此过程中发现自己的测试工具存在八个Bug。文章以Python函数withdraw及其测试为例,指出行覆盖率47%但变异杀死率仅9.5%,说明行覆盖率无法检测代码逻辑错误。作者认为变异测试虽能真实衡量测试质量,但未普及是因为它只指出问题而不提供修复方案。因此,他开发了一个Agent,通过生成测试来杀死存活的变异体,并以子进程退出码作为硬性标准。在12个流行Python库上运行,生成455个变异体,其中133个存活,53个位于测试实际执行的行上。作者强调,工具虽不完善,但测量工具本身存在系统性偏差,这比工具本身更有趣。