As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。
已关闭8年。
我正在寻找代码覆盖率的一些不良副作用的真实示例。
我注意到最近发生这种情况是因为要实现100%的代码覆盖率。可以肯定,代码质量一直在提高,但是相反,测试人员似乎在编写更多宽松的测试计划,因为“代码已经过完全的单元测试了”。结果,一些逻辑错误得以解决。它们是一个调试的大难题,因为“代码已经过完全的单元测试了”。
我认为部分原因是因为我们的工具仅进行了声明覆盖。不过,本来可以花更多的时间。
如果有人对代码覆盖政策有其他负面影响,请分享。我想知道现实世界中还有哪些其他“问题”正在发生。
提前致谢。
编辑:感谢所有的非常好的答复。我将其中一些标记为答案,但不幸的是我只能标记一个。
已关闭8年。
我正在寻找代码覆盖率的一些不良副作用的真实示例。
我注意到最近发生这种情况是因为要实现100%的代码覆盖率。可以肯定,代码质量一直在提高,但是相反,测试人员似乎在编写更多宽松的测试计划,因为“代码已经过完全的单元测试了”。结果,一些逻辑错误得以解决。它们是一个调试的大难题,因为“代码已经过完全的单元测试了”。
我认为部分原因是因为我们的工具仅进行了声明覆盖。不过,本来可以花更多的时间。
如果有人对代码覆盖政策有其他负面影响,请分享。我想知道现实世界中还有哪些其他“问题”正在发生。
提前致谢。
编辑:感谢所有的非常好的答复。我将其中一些标记为答案,但不幸的是我只能标记一个。
最佳答案
一句话:代码覆盖率告诉您肯定尚未测试,而不是测试过的东西。
构建有值(value)的单元测试套件的一部分是找到最重要的高风险代码,并提出一些棘手的问题。您要确保将困难的工作作为优先事项。覆盖率数字既没有代码“重要性”的概念,也没有测试的质量。
以我的经验,您将要编写的许多最重要的测试是几乎根本没有增加覆盖率的测试(边缘情况在这里和那里都增加了一些额外的百分比,但是却发现了很多错误)。
设置硬的(可能适得其反)覆盖目标的问题是,开发人员可能不得不开始弯腰测试代码。使代码可测试,然后就折磨了。如果您通过出色的测试达到100%的覆盖率,那就太好了,但是在大多数情况下,付出额外的努力是不值得的。
此外,人们开始迷恋/摆弄数字,而不是专注于测试质量。我看过覆盖率超过90%的书面测试,就像看到过覆盖率只有60-70%的出色测试一样。
再次,我倾向于将覆盖率视为绝对没有测试的指标。
关于unit-testing - 代码覆盖的陷阱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/695811/