我不太记得嵌套条件如何影响测试代码覆盖率的难度。
我的代码中有一个条件,可以用以下两种方法之一编写。第一个是:
if A && B && C && D:
// condition satisfied
第二种方式是:
if A:
if B:
if C:
if D:
// condition satisfied
在测试代码覆盖率方面,这里是否存在值得注意的区别?
我将编写一个辅助函数,以便我的实际代码如下:
if condition_met():
// condition satisfied, do stuff
但是我仍然必须对conditions_met()
函数进行单元测试。
答案 0 :(得分:0)
对于某些人来说,覆盖率仅仅是“我们正在使用的工具正在报告的覆盖率”,但是如果这是您要寻找的,那么您首先必须解释您所使用的工具正在报告的覆盖率。
假设您使用的语言对条件表达式进行了捷径评估,则两种不同的书写方式具有相同的含义。因此,对于同一测试套件,语句覆盖率,分支覆盖率,条件覆盖率等将相同。如果您查看某些非典型的覆盖范围(例如线覆盖范围),可能会有所不同。
如果您打算彻底测试代码,则无论使用哪种两种方式编写代码,都应提供相同的测试集。但是,然后,您不应该只关注覆盖范围:代码中的表达式必须以各种方式使用,测试边界情况。生产者和消费者之间的数据流关系应予以考虑,还有许多其他内容……