2011-03-05 79 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