白盒測試

白盒測試

測試用例設計方法
白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基于代碼的測試。白盒測試是一種測試用例設計方法,盒子指的是被測試的軟件,白盒指的是盒子是可視的,你清楚盒子内部的東西以及裡面是如何運作的。"白盒"法全面了解程序内部邏輯結構、對所有邏輯路徑進行測試。"白盒"法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的内部結構,從檢查程序的邏輯着手,得出測試數據。貫穿程序的獨立路徑數是天文數字。采用什麼方法對軟件進行測試呢?常用的軟件測試方法有兩大類:靜态測試方法和動态測試方法。其中軟件的靜态測試不要求在計算機上實際執行所測程序,主要以一些人工的模拟技術對軟件進行分析和測試;而軟件的動态測試是通過輸入一組預先按照一定的測試準則構造的實例數據來動态運行程序,而達到發現程序錯誤的過程。在動态分析技術中,最重要的技術是路徑和分支測試。下面要介紹的六種複蓋測試方法屬于動态分析方法。
    中文名:白盒測試 外文名: 所屬學科: 英文名:White box testing 釋義:一種測試用例設計方法 别 名:透明盒測試 主要類别:測試

測試方法

白盒測試的測試方法中運用最為廣泛的是基本路徑測試法。

簡介

白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基于代碼的測試。

基本路徑測試法是在程序控制流圖的基礎上,通過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例的方法。

設計出的測試用例要保證在測試中程序的每個可執行語句至少執行一次。

在程序控制流圖的基礎上,通過分析控制構造的環路複雜性,導出基本可執行路徑集合,從而設計測試用例。包括以下4個步驟和一個工具方法:

1.程序的控制流圖:描述程序控制流的一種圖示方法。

2.程序圈複雜度:McCabe複雜性度量。從程序的環路複雜性可導出程序基本路徑集合中的獨立路徑條數,這是确定程序中每個可執行語句至少執行一次所必須的測試用例數目的上界。

3.導出測試用例:根據圈複雜度和程序結構設計用例數據輸入和預期結果。

4.準備測試用例:确保基本路徑集中的每一條路徑的執行。

工具方法

圖形矩陣:是在基本路徑測試中起輔助作用的軟件工具,利用它可以實現自動地确定一個基本路徑集。

程序的控制流圖:描述程序控制流的一種圖示方法。

圓圈稱為控制流圖的一個結點,表示一個或多個無分支的語句或源程序語句

流圖隻有二種圖形符号:

圖中的每一個圓稱為流圖的結點,代表一條或多條語句。

流圖中的箭頭稱為邊或連接,代表控制流

任何過程設計都要被翻譯成控制流圖。

如何根據程序流程圖畫出控制流程圖?

在将程序流程圖簡化成控制流圖時,應注意:

在選擇或多分支結構中,分支的彙聚處應有一個彙聚結點。

邊和結點圈定的區域叫做區域,當對區域計數時,圖形外的區域也應記為一個區域。

白盒測試工具一般是針對代碼進行測試,測試中發現的缺陷可以定位到代碼級,根據測試工具原理的不同,又可以分為靜态測試工具和動态測試工具。靜态測試工具直接對代碼進行分析,不需要運行代碼,也不需要對代碼編譯鍊接,生成可執行文件。

步驟

基本路徑測試法的步驟:

第一步:畫出控制流圖

流程圖用來描述程序控制結構。可将流程圖映射到一個相應的流圖(假設流程圖的菱形決定框中不包含複合條件)。在流圖中,每一個圓,稱為流圖的結點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結點,流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個結點,即使該結點并不代表任何語句(例如:if-else-then結構)。由邊和結點限定的範圍稱為區域。計算區域時應包括圖外部的範圍。

第二步:計算圈複雜度

圈複雜度是一種為程序邏輯複雜性提供定量測度的軟件度量,将該度量用于計算程序的基本的獨立路徑數目,為确保所有語句至少執行一次的測試數量的上界。獨立路徑必須包含一條在定義之前不曾用到的邊。

有以下三種方法計算圈複雜度:

流圖中區域的數量對應于環型的複雜性;

給定流圖G的圈複雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數量,N是流圖中結點的數量;

給定流圖G的圈複雜度V(G),定義為V(G)=P+1,P是流圖G中判定結點的數量。

第三步:導出測試用例根據上面的計算方法,可得出四個獨立的路徑。(一條獨立路徑是指,和其他的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路。V(G)值正好等于該程序的獨立路徑的條數。)

路徑1:4-14

路徑2:4-6-7-14

路徑3:4-6-8-10-13-4-14

路徑4:4-6-8-11-13-4-14

根據上面的獨立路徑,去設計輸入數據,使程序分别執行到上面四條路徑。

要求

1.保證一個模塊中的所有獨立路徑至少被使用一次;

2.對所有邏輯值均需測試true和false;

3.在上下邊界及可操作範圍内運行所有循環;

4.檢查内部數據結構以确保其有效性。

目的

通過檢查軟件内部的邏輯結構,對軟件中的邏輯路徑進行複蓋測試;在程序不同地方設立檢查點,檢查程序的狀态,以确定實際運行狀态與預期狀态是否一緻。

優缺點

優點

·迫使測試人員去仔細思考軟件的實現

·可以檢測代碼中的每條分支和路徑

·揭示隐藏在代碼中的錯誤

·對代碼的測試比較徹底

·最優化

缺點

·昂貴

·無法檢測代碼中遺漏的路徑和數據敏感性錯誤

·不驗證規格的正确性

局限

但即使每條路徑都測試了仍然可能有錯誤。可能出現的情況如下:

窮舉路徑測試決不能查出程序違反了設計規範,即程序本身是個錯誤的程序。

窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。

窮舉路徑測試可能發現不了一些與數據相關的錯誤。

工具挑選

白盒測試主要用在具有高可靠性要求的軟件領域,例如:軍工軟件、航天航空軟件、工業控制軟件等等。白盒測試工具在選購時應當主要是對開發語言的支持、代碼複蓋的深度、嵌入式軟件的測試和測試的可視化等。

語言支持

白盒測試工具是對源代碼進行的測試,測試的主要内容包括詞法分析與語法分析、靜态錯誤分析、動态檢測等。但是對于不同的開發語言,測試工具實現的方式和内容差别是較大的。測試工具主要支持的開發語言包括:标準C、C++、Visual C++、Java和Visual J++等。

覆蓋深度

從複蓋源程序語句的詳盡程度分析,邏輯複蓋标準包括以下不同的複蓋标準:語句複蓋、判定複蓋、條件複蓋、條件判定組合複蓋、多條件複蓋和修正判定條件複蓋。

1.語句複蓋為了暴露程序中的錯誤,程序中的每條語句至少應該執行一次。因此語句複蓋(Statement Coverage)的含義是:選擇足夠多的測試數據,使被測程序中每條語句至少執行一次。語句複蓋是很弱的邏輯複蓋。

2.判定複蓋比語句複蓋稍強的複蓋标準是判定複蓋(Decision Coverage)。判定複蓋的含義是:設計足夠的測試用例,使得程序中的每個判定至少都獲得一次“真值”或“假值”,或者說使得程序中的每一個取“真”分支和取“假”分支至少經曆一次,因此判定複蓋又稱為分支複蓋。

3.條件複蓋在設計程序中,一個判定語句是由多個條件組合而成的複合判定。為了更徹底地實現邏輯複蓋,可以采用條件複蓋(Condition Coverage)的标準。條件複蓋的含義是:構造一組測試用例,使得每一判定語句中每個邏輯條件的可能值至少滿足一次。

4.多條件複蓋。多條件複蓋也稱條件組合複蓋,它的含義是:設計足夠的測試用例,使得每個判定中條件的各種可能組合都至少出現一次。顯然滿足多條件複蓋的測試用例是一定滿足判定複蓋、條件複蓋和條件判定組合複蓋的。

5.修正條件判定複蓋。修正條件判定複蓋是由歐美的航空/航天制造廠商和使用單位聯合制定的“航空運輸和裝備系統軟件認證标準”,在國外的國防、航空航天領域應用廣泛。這個複蓋度量需要足夠的測試用例來确定各個條件能夠影響到包含的判定的結果。它要求滿足兩個條件:首先,每一個程序模塊的入口和出口點都要考慮至少要被調用一次,每個程序的判定到所有可能的結果值要至少轉換一次;其次,程序的判定被分解為通過邏輯操作符(and、or)連接的布爾條件,每個條件對于判定的結果值是獨立的。

不同的測試工具對于代碼的複蓋能力也是不同的,通常能夠支持修正條件判定複蓋的測試工具價格是極其昂貴的。

嵌入式測試

對于嵌入式軟件的測試,我們還需要一方面進一步考慮測試工具對于嵌入式操作系統的支持能力,例如DOS、Vxworks、Neculeus、Linux和Windows CE等;另一方面還需要考慮測試工具對于硬件平台的支持能力,包括是否支持所有64/32/16位CPU和MCU,是否可以支持PCI/VME/CPCI總線。

可視化

白盒測試是工作量巨大并且枯燥的工作,可視化的設計對于測試來說是十分重要的。在選購白盒測試工具時,應當考慮該款測試工具的可視化是否良好,例如:測試過程中是否可以顯示複蓋率的函數分布圖和上升趨勢圖,是否使用不同的顔色區分已執行和未執行的代碼段顯示分配内存情況實時圖表等,這些對于測試效率和測試質量的提高是具有很大的作用的。

上一篇:霍蘭德職業興趣測試

下一篇:聚類分析

相關詞條

相關搜索

其它詞條