2011-03-05 47 views
2

我想了解使用本书的Block Testing:Alen Page,Ken Johnston,Bj Rollison“如何测试Microsoft的软件”。在本书的第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) 

被认为是4块在BlockExample2

回答

3

下面的代码的所讨论的简化:

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

由于用于短路(当c1如果假)的电势的,该代码是等效于以下:

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

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

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

谢谢!真棒解释! – Angel 2011-03-06 17:59:26

+0

有一件事我仍然没有得到。如果我比较上面提供的Block Example 2 Function并且不考虑返回语句,根据你的解释它应该等于5个块。相反,该书指出有6个街区。你还可以详细说明>#2的覆盖范围吗?在代码较少的代码中,似乎很清楚,但是在短路示例中,我无法确定它覆盖的是什么块 – Angel 2011-03-06 18:31:43

+0

@Angel我试图模仿作者的块计数方法,但我没有完全理解它们。 – FMc 2011-03-07 03:31:45