测试代码覆盖工具的价值

Mat*_*rts 5 testing tdd code-coverage

我们已经开始使用Part Cover来跟踪我们应用程序的测试代码覆盖率.IMO是一个很好的工具,用于获得测试的总分,并突出显示测试区域,你可能对测试有点懒,但今天我写了一个测试并意识到它没有真正测试任何有用的东西,它只是增加了我的报道!

如果您是TDD,那么您只编写代码来传递测试,并且测试充分描述了应用程序所需的所有功能.那么在这种情况下,进行覆盖率分析仍然非常有价值吗?

对于那些拥有覆盖工具的人来说,你是多么虔诚地坚持将覆盖率保持在100%并且你是否发现自己编写的测试没有真正测试任何东西,只是为了保持你的覆盖范围?这不是一件坏事吗?

Bil*_*ard 7

覆盖工具应该只被用来告诉你什么也没有经过测试.您指出的场景说明了为什么您不能依赖它们来向您展示已测试的代码.编写测试只是因为覆盖率为100%是没有意义的(正如您所怀疑的那样),并且它非常容易游戏,这不是一个真正有用的指标.我过去常常尝试保持在100%或接近100%,但我得出了与你相同的结论.我写的测试没有真正测试任何东西只是因为数字是正确的.使用这些工具来查找尚未测试的区域,然后编写好的测试或接受代码的这些部分并不重要的事实.


kdg*_*ory 6

我将扮演魔鬼的拥护者:如果增加你的覆盖率意味着编写一个"没有测试任何有用的测试",那么为什么那个代码呢?对我来说,这将是删除一些主线代码的论据.

或者开发一个有用的测试.例如,您可能会认为测试setter和getter没用.我也没有.但是,这些方法应该在测试其他东西时进行测试.否则,再次,为什么他们在那里?

但是你提出一个好的观点,即覆盖工具本身不应该是目的.特别是因为他们无法告诉你需要编写什么代码.

我在这里详细介绍了:http://www.kdgregory.com/index.php?page = junit.coverage