軟體工程 白盒測試 黑盒測試

2021-10-10 09:40:49 字數 2808 閱讀 7856

黑盒測試

白盒測試用例設計的乙個很重要的評估標準就是對**的覆蓋度。

白盒測試中常見的覆蓋有六種:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋。

語句覆蓋,顧名思義就是針對**語句。它的含義是我們設計若干個測試用例,執行被測程式,使得每一可執行語句至少執行一次。。通常語句覆蓋被認為是「最弱的覆蓋」,原因是它僅僅考慮對**中的執行語句進行覆蓋而沒有考慮各種條件和分支,因此在實際運用中語句覆蓋很難發現**中的問題。舉例:

在圖例中,正好所有的可執行語句都在路徑l1上,所以選擇路徑 l1設計測試用例,就可以覆蓋所有的可執行語句

測試資料不止一種情況,只是滿足這個要求的判定

判定覆蓋也被成為分支覆蓋(branch coverage),即要設計若干個測試用例,執行被測程式,使得程式中每個判斷的取真分支和取假分支至少經歷一次。用上面的例子,選擇的路徑:

判定覆蓋比語句覆蓋強一些,能發現一些語句覆蓋無法發現的問題。但是往往一些判定條件都是由多個邏輯條件組合而成的,進行分支判斷時相當於對整個組合的最終結果進行判斷,這樣就會忽略每個條件的取值情況,導致遺漏部分測試路徑。

條件覆蓋與分支覆蓋不同,條件覆蓋設計若干個測試用例,執行被測程式,使得程式中每個判斷的每個條件的可能取值至少執行一次

判定覆蓋是每個判斷都取真取假,條件覆蓋是每個判定的條件都取真取假。

滿足條件覆蓋一定滿足語句覆蓋。

滿足條件覆蓋不一定滿足判定覆蓋,此兩種之間不怎麼相互交叉,條件覆蓋通常比判定強

使用上述例子:

通常而言條件覆蓋比判定覆蓋強,因為條件覆蓋使得判定中的每乙個條件都取到了不同的結果,這一點判定覆蓋則無法保證。但條件覆蓋也有缺陷,因為它只能保證每個條件都取到了不同結果,但沒有考慮到判定結果,因此有時候條件覆蓋並不能保證判定覆蓋

判定條件覆蓋,說白了就是我們設計的測試用例可以使得判斷中每個條件所有的可能取值至少執行一次(條件覆蓋),同時每個判斷本身所有的結果也要至少執行一次(判定覆蓋)。不難發現判定條件覆蓋同時滿足判定覆蓋和條件覆蓋,彌補了兩者各自的不足,但是判定條件覆蓋並未考慮條件的組合情況。

組合覆蓋也叫做條件組合覆蓋。設計足夠的測試用例,執行被測程式,使得每個判斷的所有可能的條件取值組合至少執行一次。顯然,滿足條件組合覆蓋的測試用例一定是滿足判定覆蓋、條件覆蓋和判定條件覆蓋的。

條件組合覆蓋能夠同時滿足判定、條件和判定條件覆蓋,覆蓋度較高,但是組合覆蓋的測試用例數量相對來說也是比較多的。

路徑覆蓋,意思是說我們設計的測試用例可以覆蓋程式中所有可能的執行路徑。這種覆蓋方法可以對程式進行徹底的測試用例覆蓋,比前面講的五種方法覆蓋度都要高。那麼這種方法是不是就一定最好呢?當然不能講得這麼絕對,它的缺點也是顯而易見的:由於需要對所有可能的路徑全部進行覆蓋,那麼我們需要設計數量非常巨大的而且較為複雜的測試用例,用例數量將呈現指數級的增長。所以理論上來講路徑覆蓋是最徹底的測試用例覆蓋,但實際上很多時候路徑覆蓋的可操作性不強。

測試物件看做乙個盒子,測試人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的功能是否符合它的,功能說明。又叫做功能測試或資料驅動測試

基本思想:

把所有可能的輸入資料,即程式的輸入域劃分成若干部分,然後從每一部分中選取少數有代表性的資料作為測試用例。

等價類:某個輸入域的子集合。在該子集合中,各個輸入資料對於揭露程式中的錯誤都是等效的。

有效等價類:對於程式的規格說明來說,是合理的,有意義的輸入資料構成的集合

無效等價類:對於程式的規格說明來說,是不合理的,無意義的輸入資料構成的集合。

等價類劃分5個原則

等價類劃分步驟

確定等價類

建立等價類表,列出所有劃分出的等價類

為每乙個等價類規定乙個唯一編號;

設計乙個新的測試用例,盡可能多地覆蓋尚未被覆蓋的有效等價類,重複這一步,直到所有的有效等價類都被覆蓋為止;

設計乙個新的測試用例,僅覆蓋乙個尚未被覆蓋的無效等價類,重複這一步,直到

所有的無效等價類都被覆蓋為止

選取正好等於,剛剛大於,或剛剛小於邊界的值做為測試資料做為測試資料。

相當於輸入、輸出等價類而言,稍高、低於其邊界值的一些特定情況

軟體測試之黑盒測試 白盒測試

靜態測試 不用執行程式的測試,包括 檢查 靜態結構分析 質量度量 文件測試等等,它可以由人工進行,充分發揮人的邏輯思維優勢,也可以借助軟體工具 fxcop 自動進行。動態測試 需要執行 通過執行程式找到問題,包括功能確認與介面測試 覆蓋率分析 效能分析 記憶體分析等。白盒測試中的邏輯覆蓋包括語句覆蓋...

軟體測試方法 黑盒測試 白盒測試

一 白盒測試 白盒測試也稱為結構測試,主要用於檢測軟體編碼過程中的錯誤。程式設計師的程式設計經驗 對程式設計軟體的掌握程度 工作狀態等因素都會影響到程式設計質量,導致 錯誤。白盒測試的方法 強度由低到高 語句覆蓋 所有的 語句 都要覆蓋一遍。就是設計若干個測試用例,執行被測程式,使得每乙個執行語句至...

黑盒測試 白盒測試

黑盒測試 black box testing,又稱為功能測試或資料驅動測試 是把測試物件看作乙個黑盒子。利用黑盒測試法進行動態測試時,需要測試軟體產品的功能,不需測試軟體產品的內部結構和處理過程。黑盒測試注重於測試軟體的功能性需求,也即黑盒測試使軟體工程師派生出執行程式所有功能需求的輸入條件。黑盒測...