Mne*_*nth 44 testing unit-testing code-coverage mutation-testing
你有变异测试的现实应用的例子吗?它比简单的测试覆盖工具更好吗?还是没用?
在现实世界中,突变测试有哪些优点/缺点?
Sma*_*acL 10
我前段时间看过变异测试作为检查自动回归测试脚本功效的方法.基本上,许多这些脚本都缺少检查点,因此在他们正在运行正确测试的应用程序时,他们没有根据基线数据验证结果.我发现比更改代码更简单的方法是编写另一个应用程序来引入对基线副本的修改,并针对修改后的基线重新运行测试.在这种情况下,任何传递的测试都是错误的或不完整的.
这不是真正的突变测试,而是使用类似范例来测试测试脚本功效的方法.它很容易实现,IMO做得很好.
我为最细小的人为应用而苦苦挣扎:
这是一个Java工具,可以自动生成突变体。您可以针对您的测试套件运行它,它将为您生成HTML报告,指示杀死了多少个突变体。看起来很有效,不需要太多的努力来设置。实际上,Java世界中有很多不错的工具可用于此类事情。也可以看看:
为覆盖。
我认为突变测试背后的概念是合理的。这只是工具支持和意识的问题。您正在权衡传统代码覆盖率指标的简单性和该技术的额外复杂性之间的权衡-实际上,这只能归结为工具。如果你能产生突变体,那么它将会帮助暴露在你的测试用例的弱点。在您已经进行的测试上付出一点点努力值得吗?怀着深深的兴趣,我的确发现它带来了似乎不太明显的测试用例。
变异测试是一个与单元/功能/集成测试方法完全不同的攻角。
小智 5
突变测试帮助我识别测试用例断言的问题。
\n\n例如,当您收到一份报告说“测试用例 x 没有杀死任何突变体”时,您看一下,结果发现该断言已被注释掉。
\n\n根据这篇论文,谷歌的开发人员使用变异测试作为代码审查和拉取请求检查的补充。他们似乎对结果很满意:
\n\n\n\n开发人员决定重新设计大块代码以使它们可测试,以便杀死突变体,他们在查看突变体的复杂逻辑表达式中发现了错误,他们决定删除具有等效突变体的代码,因为他们认为这是不成熟的优化,他们\xe2\x80\x99ve声称突变体为他们节省了数小时的调试时间,甚至生产中断,因为没有测试用例正确覆盖突变下的逻辑。变异测试被称为多年来代码审查验证中最好的改进之一。虽然这种反馈很难量化,但考虑到成千上万的开发人员愿意检查其代码更改中出现的突变,这一点就足以说明问题。
\n
| 归档时间: |
|
| 查看次数: |
5224 次 |
| 最近记录: |