【評測真題-2013】下午題-試題一---(白盒測試)

【說明】
邏輯覆蓋法是設計白盒測試用例的主要方法之一,通過對程序邏輯結構的遍歷實現程序的覆蓋。針對以下由C語言編寫的程序,按要求回答問題。

【問題1】 請給出滿足100%DC(判定覆蓋)所需的邏輯條件。
 
【問題2】請畫出上述程序的控制流圖,並計算其控制流圖的環路複雜度V(G)。
 
【問題3】請給出問題2中控制流圖的線性無關路徑。


【分析】

本題考查白盒測試技術的應用

【問題1】

本問題考查白盒測試用例設計方法:判定覆蓋法。

判定覆蓋指設計足夠的測試用例,使得被測程序中每個判定表達式至少獲得一次“真”值和“假”值,從而使程序的每一個分支至少都通過一次。本題中程序有6個判定,所以滿足判定覆蓋一共需要12個邏輯條件。

編號 條件
1 ((filename[len-2]=='.')&&(filename[]len-1]=='c'))
2 !((filename[len-2]=='.')&&(filename[]len-1]=='c'))
3 input==NULL
4 input!=NULL
5 output==NULL
6 output!=NULL
7 !feof(input)
8 feof(input)
9 fread(&buffer,sizeof(unsigned char),1,input) != 1
10 fread(&buffer,sizeof(unsigned char),1,input) == 1
11 !feof(input)
12 feof(input)

【問題2】

本問題考查白盒測試用例設計方法:基本路徑法。涉及的知識點包括:根據代碼繪製控制流圖、計算環路複雜度。

控制流圖是描述程序控制的一種圖示方式,它由節點和定向邊構成。控制流圖的節點代表一個基本塊,定向邊代表控制流的方向。其中要特別注意的是,如果判斷中的條件表達式是複合條件,即條件表達式是由一個或多個邏輯運算符連接的邏輯表達式,則需要改變複合條件的判斷爲一系列之單個條件的嵌套的判斷。本題程序中,if((filename[len-2]=='.')&&(filename[]len-1]=='c'))這條判斷語句中的判定由兩個條件組成,因此在畫控制流圖的時候需要拆開成兩條判斷語句。程序的環路複雜度等於控制流圖中判定節點的個數加1,本題控制流圖中判定節點個數爲7,所以V(G)=8

【問題3】

本題考查白盒測試用例涉及方法:基本路徑法。涉及的知識點包括:根據控制流圖和環路複雜度給出線性無關路徑。

線性無關路徑是指包含一組以前沒有處理的語句或條件的路徑。從控制流圖上來看,一條線性無關路徑是至少包含一條在其他線性無關路徑中從未有過的邊的路徑。程序的環路複雜度等於線性無關路徑的條數,所以本題中應該有8條線性無關路徑。

  1. 1-2-3-4-6-7-8-9-10-11-12-13-10...
  2. 1-2-5-6-7-8-9-10-11-12-13-10...
  3. 1-2-3-5-6-7-8-9-10-11-12-13-10...
  4. 1-2-3-4-6-8-9-10-11-12-13-10...
  5. 1-2-3-4-6-7-8-10-11-12-13-10...
  6. 1-2-3-4-6-7-8-9-10-15
  7. 1-2-3-4-6-7-8-9--10-11-14-10...
  8. 1-2-3-4-6-7-8-10-11-12-10...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章