[軟件測試] 第二部分 白盒測試
目錄
軟件測試期末復習系列
課件知識點整合:
PTA習題匯總:
概念與定義
-
白盒測試:側重于系統或部件內部機制的測試,類型分為分支測試(判定節點測試)、路徑測試、語句測試。
-
控制流分析(基于程序結構):控制流分析是一類用于分析程序控制流結構的靜態分析技術,目的在于生成程序的控制流圖,在編譯器設計程序分析、程序理解等領域都有重要應用。
-
邏輯覆蓋測試(對判定的測試)的原理:以程序內部的邏輯結構為基礎的用例設計方法,它通過對程序的邏輯結構的遍歷,來實現測試對程序的覆蓋。
-
測試覆蓋率:度量測試完整性的指標,是測試有效性的一個度量。
\[覆蓋率 = \frac{至少被執行一次的item總數}{item總數} \]測試覆蓋率不需要100%,因為覆蓋率越高,測試成本越高。
通常可以設置一個覆蓋率達標標準。
-
語句覆蓋:設計測試用例時應保證程序中每一條可執行語句至少應執行一次。(點覆蓋)
-
判定覆蓋(分支覆蓋):設計測試用例時應保證程序中每個判定節點取得每種可能的結果至少一次。或者程序中每個判定的真分支和假分支至少執行一次。(邊覆蓋)
-
條件覆蓋:設計測試用例時應保證程序中每個復合判定表達式中,每個簡單判定條件(子條件)的取真和取假情況至少執行一次。
-
判定-條件覆蓋:設計測試用例時應滿足判定節點的取真、取假分支至少執行一次,且每個簡單判定條件(子條件)的取真和取假情況也至少執行一次。即判定覆蓋+條件覆蓋。
-
條件組合覆蓋:條件組合覆蓋,設計測試用例時應滿足每個判定節點中,所有簡單判定條件(子條件)的所有可能的取值組合情況至少執行一次。通過列出真值表的方式來得到完全的覆蓋。
-
路徑覆蓋:要求設計足夠的測試用例,運行被測程序,覆蓋程序中所有可能組合的路徑。
-
程序圖:簡化的程序流程圖,不關注源代碼細節,只關注程序的基本結構。
-
環復雜度:用于描述程序結構復雜度的度量。
-
基本路徑測試:在程序的控制流圖的基礎上,通過分析控制流程的環路復雜性,導出獨立可執行路徑集合,從而設計測試用例的方法。
-
靜態白盒測試:又稱為結構分析,是在不執行程序的條件下審查軟件設計、體系結構和代碼,從而找出軟件缺陷的過程。測試對象是文檔、代碼等非計算機執行的部分。
簡答
白盒測試關注的對象
源代碼和程序結構。
白盒測試的優缺點
優點:
- 針對性強,便于快速定位,測試效率高;
- 在函數級別開始測試工作,缺陷修復的成本低;
- 通過不同的白盒覆蓋指標有助于了解和衡量對被測對象的測試覆蓋程度,
- 有助于代碼優化和缺陷預防。
缺點:
- 對測試人員的技術要求高。
- 成本高。
白盒測試的問題
- 軟件測試是不完備的;
- 軟件測試是有風險的;
- 測試設計應達到的目標:提高效率、降低風險、在代碼級別上提高軟件質量。
各種程序結構以及它們的復雜程度
程序結構有:線性結構(順序結構),條件判定結構,循環結構,以及這些結構的組合。
復雜程度:
邏輯覆蓋測試的六種測試方法

-
語句覆蓋
缺點:關注語句,而非關注判定節點。對隱式分支無效。
-
判定覆蓋(分支覆蓋)
局限性:判定覆蓋僅關心表達式的整體取值,并不關心表達式如何構成,不能覆蓋到每個子條件的所有取值情況,由此導致測試的漏洞。
-
條件覆蓋
局限性:條件覆蓋并不能確保滿足判定覆蓋。
-
判定-條件覆蓋(分支-條件覆蓋)
-
條件組合覆蓋
優點:
- 條件組合覆蓋準則滿足語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋準則;
- 方法簡單;只需要找到所有簡單條件,并列出真值表,窮盡所有組合情況即可。
局限性:
- 條件組合覆蓋不能保證所有組合的路徑被執行;
- 測試用例太多;
- 冗余嚴重。
-
路徑覆蓋
覆蓋面最廣。
100%滿足路徑覆蓋,一定能100%滿足判定覆蓋標準;但并不一定能100%滿足條件覆蓋和判定-條件覆蓋,也就不能滿足100%條件組合覆蓋。
各種覆蓋之間的關系
- 語句覆蓋太弱;
- 判定覆蓋、條件覆蓋不夠全面;
- 判定-條件覆蓋設計難度大;
- 條件組合覆蓋的測試用例數量太多,不能將所有路徑覆蓋;
- 路徑覆蓋的測試用例復雜且數量多,不能將所有的條件組合覆蓋。
單獨采用任何一種邏輯覆蓋方法都不能完全覆蓋所有的測試用例,任何一個高效的測試用例,都是針對具體測試場景的。
環復雜度的計算
直觀觀察法
觀察程序圖將二維平面分割為封閉區域和開放區域的個數。

公式計算法
方法一:
其中,\(E\) 是邊數, \(N\) 是節點或頂點數。
前提條件:單入口單出口。
例題:

方法二:
前提條件:無孤立節點,強連通圖。如果非強連通圖,則需要先添加輔助線。如下圖的藍線。
簡單地說,強連通圖就是圖中任意兩個點相互可達。

判定節點法
其中,\(P\) 是二分支判定節點的個數。
前提條件:僅計算二分支的判定節點。
如果沒有判定節點,只有一條執行路徑,則\(V=1\)。

如上圖,二分支判定節點分別有:A,B,C,D。
因此,\(V(G)=P+1=4+1=5\).
特殊情況的計算
環復雜度的計算公式都有特定的前提條件,遇到特殊情況,則使用其它可以使用的公式。

- 左圖,非單入單出,不能使用公式計算法的方法一,可以使用判定節點法,V=5
- 右圖,非二分支判定節點,不能使用判定節點法,可以使用公式計算法方法一,V=13
基本路徑測試的流程
-
生成路徑地圖

-
確定獨立路徑集合的規模
計算環復雜度\(V\),則需要\(V\)條獨立路徑。
-
找出一組獨立路徑。
- 確定主路徑(出錯概率最高的路徑,或者缺陷對用戶影響最大的路徑)。
- 根據主路徑抽取其它獨立路徑。

靜態白盒測試的方法
- 代碼檢查
- 靜態結構分析
- 靜態質量度量

同行評審的一般流程
- 計劃評審會議
- 召開評審預備會
- 準備評審會議
- 召開評審會議
- 召開第三小時會議
- 修復缺陷
- 確認修復
同行評審的五種角色
- 主持人:負責組織評審會議;
- 講解員:負責講解被評審的工作產品;
- 記錄員:負責記錄缺陷和決議;
- 作者:程序編寫者,負責提供被提審的工作產品;
- 評審員:程序設計者、測試專家,負責評審工作產品,也負責設計測試用例。

浙公網安備 33010602011771號