標籤:
在軟體測試中,大家對於白盒測試應該都很熟悉,白盒測試是與黑箱測試完全相反的一種測試,正如它們的名字一樣相反。黑箱測試是基於輸入和輸出的測試,不用考慮其內部的執行情況,而白盒測試則是依賴於程式內部構成來進行的一種測試。
白盒測試又稱結構測試、邏輯驅動測試或基於程式的測試。白盒測試一般被用來剖析器的內部結構。白盒測試的測試者可以看到被測程式的內部,因此,白盒測試要求對被測的程式做到一定程度的覆蓋,並且要求軟體中的各類成分都要被測試,而白盒測試的優良標準也會以程式的某種成分是否被測試來評判,這也被稱為基於覆蓋的測試技術。
白盒測試在不同的時期提出了不同的覆蓋準則,到現在已經有幾十種不同的覆蓋準則。
這次從兩個方面來介紹一些用的比較廣泛並且普遍被接收的覆蓋準則:
一、控制流程測試
在軟體的發展曆史中,人們發現非結構化的程式會給測試,排錯及維護帶來極大的不便,因此人們開始要求寫出的程式是結構良好的,符合結構化的。而控制流程圖在用來刻畫程式結構已經非常成熟。此後人們按照覆蓋準則在控制流程中提出了幾個著名的覆蓋準則。
1、語句覆蓋準則
語句覆蓋準則是最簡單的測試方法之一,當然也是比較暴力的一種測試方法、其要求被測程式的每條語句都被運行,而在控制流程圖中則表現在每條語句對應的節點都被覆 蓋。語句測試的覆蓋率表達為在控制流程圖中被覆蓋的節點數[NODE(LT)]除以控制流程圖中的所有節點數(NG)。
運算式為 語句測試的覆蓋率 = ||NODE(LT)||/||NG ||
2、分支覆蓋準則
語句覆蓋測試時最基本的測試手段,因此其對很多軟體錯誤而言還是無能為力,所以在這個時候更強的覆蓋準則就被提出來了。分支測試是要求在軟體測試中每一分支至少要獲得一個“真”和一次“假”;即為每一個分支都必須進行一次正確和一次錯誤的測試。因此也稱分支覆蓋測試包含語句覆蓋測試。分支測試的覆蓋率運算式為控制流程圖中所有被覆蓋的有向邊數[EDGE(LT)]除以控制流程圖中的所有有向邊的總數(EG)。
運算式為 分支測試的覆蓋率 = ||EDGE(LT)||/||EG||
3、路徑覆蓋準則
路徑覆蓋準則是要求在觀察到的程式的整個路徑中,要求程式的運行能夠覆蓋所有的完整路徑。
LT邊說GP中的被覆蓋的完整路徑,EP(GP)為控制流程圖中的所有完整路徑,其覆蓋率的運算式為:
路徑覆蓋測試的覆蓋率 = ||LT||/||EP(GP)||
二、資料流測試
1、資料流覆蓋準則
在資料流測試中最簡單的測試方式是測試每一個資料定義的正確性。其定義為: 如果對具有資料流資訊的控制流程圖GP中的每一個變數x的定義性出現,若該定義性出現能夠可行的傳遞到該變數的某一個引用性出現,那麼LT重存在一條路徑A,它包含一條子路徑A`,使得A`將該定義出現傳遞到某一個引用性出現。則稱測試資料集T對測試程式P滿足定義覆蓋準則。
以上準則即為在白盒測試中適用性高的其中幾個。
軟體測試·白盒測試