嵌套和复合条件语句的结构有何不同?

时间:2019-01-18 15:30:59

标签: unit-testing testing code-coverage

我不太记得嵌套条件如何影响测试代码覆盖率的难度。

我的代码中有一个条件,可以用以下两种方法之一编写。第一个是:

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()函数进行单元测试。

1 个答案:

答案 0 :(得分:0)

对于某些人来说,覆盖率仅仅是“我们正在使用的工具正在报告的覆盖率”,但是如果这是您要寻找的,那么您首先必须解释您所使用的工具正在报告的覆盖率。

假设您使用的语言对条件表达式进行了捷径评估,则两种不同的书写方式具有相同的含义。因此,对于同一测试套件,语句覆盖率,分支覆盖率,条件覆盖率等将相同。如果您查看某些非典型的覆盖范围(例如线覆盖范围),可能会有所不同。

如果您打算彻底测试代码,则无论使用哪种两种方式编写代码,都应提供相同的测试集。但是,然后,您不应该只关注覆盖范围:代码中的表达式必须以各种方式使用,测试边界情况。生产者和消费者之间的数据流关系应予以考虑,还有许多其他内容……