了解块测试的块覆盖度量

时间:2011-03-05 04:52:49

标签: unit-testing testing block

我试图通过Alen Page,Ken Johnston,Bj Rollison的书“我们如何在微软测试软件”来理解Block Testing。在本书的第118和119页,我给出了两个块功能示例。

我提供了这些功能的图片:

Block Example 1

Block Example 2

该书说,块覆盖率测量分支未绑定的连续语句组的数量。我相信我不理解这一点。

有人可以解释原因吗

int x = 0, y = 0, z = 0;
if (condition)

被视为BlockExample1

中的1个区块
int x = 0, y = 0, z = 0;
if (condition 1 && condition2)

被视为BlockExample2中的4个区块?

1 个答案:

答案 0 :(得分:3)

以下是相关代码的简化:

int x = 0;
if (c1 && c2)
{
    x = 1;
}

由于可能发生短路(c1如果为false),该代码等同于以下内容:

int x = 0;        > #1                       > #5
if (c1)           |                          |
{                                  > #4      |
    if (c2)       > #2             |         |
    {                     > #3     |         |
        x = 1             |        |         |
    }                     |        |         |
}                                  |         |

相比之下,此代码具有更少的块:

int x = 0;        > #1        > #3
if (c1)           |           |
{                     > #2    |
    x = 1             |       |
}                     |       |