目前我有一些测试被归咎于没有很好地捕获错误。我想进行突变测试以检测它们(并防止添加新的无用的),但没有时间效率低的循环:更改代码 - >重新编译 - >运行测试 - >更改代码 - >重新编译 - >运行测试......等等。
最初我想以某种方式直接改变二进制精灵文件(无需重新编译),但正如后面的帖子建议的那样,没有任何意义。
答案 0 :(得分:3)
好的,通过将突变测试分为4个主要阶段,我能够部分地解决它:
实现是在python和C ++中完成的,它是大约1700行代码(带有测试)+生产代码中的小修改(CMake和gtest main.cpp文件)。它只支持几个简单的突变,但它仍然很有趣:)
答案 1 :(得分:2)
假设测试运行得很快,并且运行次数足够大(~1M,~1k ??),我应该粗略估计潜在错误的命中率?
没有。你的“精灵二进制文件中某处的一位错误”可能会破坏任何东西(从精灵格式到数据段再到调用堆栈等等)。您不会对错误的数量进行任何粗略的估计,而是粗略估计可执行文件的执行损坏的可能性(根本不说明您的应用程序)。
目前我有很多测试被归咎于根本没有捕获错误。
这是您必须直接解决的问题,并且没有捷径可供选择:您必须为测试建立新目标,重构代码以支持它们并实施它们。