1. 程式人生 > >白盒測試基本方法

白盒測試基本方法

白盒測試作為測試人員常用的一種測試方法,越來越受到測試工程師的重視。白盒測試並不是簡單的按照程式碼設計用例,而是需要根據不同的測試需求,結合不同的測試物件,使用適合的方法進行測試。因為對於不同複雜度的程式碼邏輯,可以衍生出許多種執行路徑,只有適當的測試方法,才能幫助我們從程式碼的迷霧森林中找到正確的方向。

1.白盒測試的概述

由於邏輯錯誤和不正確假設與一條程式路徑被執行的可能性成反比。由於我們經常相信某邏輯路徑不可能被執行而事實上,它可能在正常的情況下被執行。由於程式碼中的筆誤是隨機且無法杜絕的,因此我們要進行白盒測試。

白盒測試又稱結構測試,透明盒測試、邏輯驅動測試或基於程式碼的測試。白盒測試是一種測試用例設計方法,盒子指的是被測試的軟體,白盒指的是盒子是可視的,

你清楚盒子內部的東西以及裡面是如何運作的。

1)白盒的測試用例需要做到:

·保證一個模組中的所有獨立路徑至少被使用一次

·對所有邏輯值均需測試 true  false

·在上下邊界及可操作範圍內執行所有迴圈

·檢查內部資料結構以確保其有效性

2)白盒測試的目的:

通過檢查軟體內部的邏輯結構,對軟體中的邏輯路徑進行覆蓋測試;在程式不同地方設立檢查點,檢查程式的狀態,以確定實際執行狀態與預期狀態是否一致。

3)白盒測試的特點:

依據軟體設計說明書進行測試、對程式內部細節的嚴密檢驗、針對特定條件設計測試用例、對軟體的邏輯路徑進行覆蓋測試。

4)白盒測試的實施步驟:

測試計劃階段:根據需求說明書,制定測試進度。

測試設計階段:依據程式設計說明書,按照一定規範化的方法進行軟體結構劃分和設計測試用例。

測試執行階段:輸入測試用例,得到測試結果。

測試總結階段:對比測試的結果和程式碼的預期結果,分析錯誤原因,找到並解決錯誤。

5)白盒測試的方法:總體上分為靜態方法和動態方法兩大類。

靜態分析是一種不通過執行程式而進行測試的技術。靜態分析的關鍵功能是檢查軟體的表示和描述是否一致,沒有衝突或者沒有歧義。

動態分析的主要特點是當軟體系統在模擬的或真實的環境中執行之前、之中和之後 , 對軟體系統行為的分析。動態分析包含了程式在受控的環境下使用特定的期望結果進行正式的執行。它顯示了一個系統在檢查狀態下是正確還是不正確。在動態分析技術中,

最重要的技術是路徑和分支測試。下面要介紹的六種覆蓋測試方法屬於動態分析方法。

6)白盒測試的優缺點

優點

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

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

·揭示隱藏在程式碼中的錯誤

·對程式碼的測試比較徹底

·最優化

 缺點

·昂貴

·無法檢測程式碼中遺漏的路徑和資料敏感性錯誤

·不驗證規格的正確性

2.本文介紹六種白盒子測試方法:(強度由低到高)語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋。

1)所謂語句覆蓋:就是設計若干個測試用例,執行被測程式,使得每一可執行語句至少執行一次。這裡的“若干個”,意味著使用測試用例越少越好。語句覆蓋率的公式可以表示如下:

語句覆蓋率=被評價到的語句數量/可執行的語句總數 x 100%

2)判定覆蓋:使設計的測試用例保證程式中每個判斷的每個取值分支(t or f)至少經歷一次

[優點]:判定覆蓋具有比語句覆蓋更強的測試能力,而且具有和語句覆蓋一樣的簡單性,無需細分每個判定就可以得到測試用例。

[缺點]:往往大部分的判定語句是由多個邏輯條件組合而成(如,判定語句中包含ANDORCASE),若僅僅判斷其整個最終結果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。

  例如:

  int a,b;

  if(a || b)

  執行語句1

  else

  執行語句2

要達到這段程式的判斷覆蓋,我們採用測試用例:1)a = true , b = true ;2)a = flase, b = flase

3)條件覆蓋:條件覆蓋是指選擇足夠的測試用例,使得執行這些測試用例時,判定中每個條件的所有可能結果至少出現一次,但未必能覆蓋全部分支

條件覆蓋要檢查每個符合謂詞的子表示式值為真和假兩種情況,要獨立衡量每個子表示式的結果,以確保每個子表示式的值為真和假兩種情況都被測試到。

4)判定條件覆蓋:判定-條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執行一次,同時每個判斷的所有可能判斷結果至少執行,即要求各個判斷的所有可能的條件取值組合至少執行一次。

5)條件組合覆蓋:在白盒測試法中,選擇足夠的測試用例,使所有判定中各條件判斷結果的所有組合至少出現一次,滿足這種覆蓋標準成為條件組合覆蓋。

6)路徑覆蓋:是每條可能執行到的路徑至少執行一次;

說明:其中語句覆蓋是一種最弱的覆蓋,判定覆蓋和條件覆蓋比語句覆蓋強,滿足判定/條件覆蓋標準的測試用例一定也滿足判定覆蓋、條件覆蓋和語句覆蓋,條件組合覆蓋是除路徑覆蓋外最強的,路徑覆蓋也是一種比較強的覆蓋,但未必考慮判定條件結果的組合,並不能代替條件覆蓋和條件組合覆蓋。

舉例:

if A and B then Action1

if C or D then Action2

1)語句覆蓋最弱,只需要讓程式中的語句都執行一遍即可。上例中只需設計測試用例使得A=true B=true C=true 即可。

2)分支覆蓋又稱判定覆蓋:使得程式中每個判斷的取真分支和取假分支至少經歷一次,即判斷的真假均曾被滿足。上例需要設計測試用例使其分別滿足下列條件即可(1A=trueB=trueCtrueD=false2A=trueB=falseCfalseD=false

3)條件覆蓋:要使得每個判斷中的每個條件的可能取值至少滿足一次。上例中第一個判斷應考慮到A=trueA=falseB=trueB=false第二個判斷應考慮到CtrueCfalseD=trueD=false,所以上例中可以設計測試用例滿足下列條件(1A=trueB=trueCtrueD=true2A=falseB=falseCfalseD=false

4)路徑覆蓋:要求覆蓋程式中所有可能的路徑。所以可以設計測試用例滿足下列條件(1A=trueB=trueCtrueD=true2A=falseB=falseCfalseD=false3A=trueB=trueCfalseD=false4A=falseB=falseCtrueD=true

相關推薦

測試基本方法

白盒測試作為測試人員常用的一種測試方法,越來越受到測試工程師的重視。白盒測試並不是簡單的按照程式碼設計用例,而是需要根據不同的測試需求,結合不同的測試物件,使用適合的方法進行測試。因為對於不同複雜度的程式碼邏輯,可以衍生出許多種執行路徑,只有適當的測試方法,才能幫助我們從程

軟體測試——黑測試方法

軟體測試 黑盒白盒的區別不用說了,這裡介紹黑盒白盒測試所用的方法,都是關於測試樣例的設計 白盒測試 語句覆蓋 每條語句至少執行一次 判定覆蓋 每一判定的每個分支至少執行一次

軟體測試測試——基本路徑分析、及其他測試

一、基本路徑分析(例題分析) EG:例題一 1.基本路徑測試的步驟 (1)畫出程式控制流程圖    結點:代表操作、條件判斷及匯合點    控制流線或弧:控制的順序    區域:弧與結點圈定的部分 &nbs

測試及其基本方法

白盒測試 出現 及其 路徑 bsp 取值 判定覆蓋 clas lan 強度由低到高:語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋。 (1)語句覆蓋:就是設計若幹個測試用例,運行被測程序,使得每一可執行語句至少執行一次。 (2)判定覆蓋:使設計的測試

測試—六種覆蓋方法

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/write6/article/details/78702977  定義:    白盒測試又稱結構測試,透明盒測試、邏輯驅動測試或基於程式碼的測試。白盒測試是一種測試用例設計方法,

談談測試中的幾種覆蓋方法

 談談白盒測試中的幾種覆蓋方法  白盒測試用例設計的一個很重要的評估標準就是對程式碼的覆蓋度。一說到覆蓋,大家都感覺非常熟悉,但是常見的覆蓋都有哪些?各自有什麼優缺點?在白盒測試的用例設計中我們應該如何自如地運用呢?今天小編就為大家總結了一下幾種常見的覆蓋以及各自的優缺點。  白盒測試中常見的覆蓋有六種:語句

測試基本路徑測試法

白盒測試的測試方法有程式碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、Z路徑覆蓋、程式變異。 其中運用最為廣泛的是基本路徑測試法。 基本路徑測試法是在程式控制流圖的基礎上,通過分析控制構造的環路複雜性,匯出基本可執行路徑集合,從而設計

第4代測試方法介紹--理論篇

首先在被測函式上設定斷點,接著用指令碼構造除錯環境,包括修改變數、設定指令碼樁等,然後發起測試,在斷點觸發後的單步跟蹤狀態,觀察各個變數值是否預期,還可以修改變數使被測函式中特定分支能夠執行。最後在除錯完成時,可以將當前除錯操作,包括設定斷點、檢查變數值是否預期、修改變數等,自動轉化為測試指令碼。 上述

測試中邏輯覆蓋的六種方法

   1.語句覆蓋。這個是起碼要做到的覆蓋了,程式裡的每條可執行的語句都要至少執行一次。這個設計起來比較簡單,用例資料很直觀的就能看出來。但是語句裡的判定,分支等就沒什麼意義了。可以說這樣的測試是最低的要求了。  2.判定覆蓋。每個判斷的真假分支至少執行一次,就是真要至少取一次,假要至少取一次。這個設計起來也

[5]測試方法2—圖覆蓋準則

學習圖覆蓋準則需要了解一些其他基本概念。 可達:從某一個結點開始存在一條路徑可達子圖。 可達包括兩個方面:語法可達和語義可達。 語法可達:通過語法構建某種子圖結構當中,存在一條路徑可達到這個子圖。 語義可達:指在實際的程式當中存在這麼一個測試,可到到這個

測試方法-程式碼檢查法

程式碼檢查包括桌面檢查、程式碼審查和走查等,主要檢查程式碼和設計的一致性,程式碼對標準的遵循、可讀性,程式碼邏輯表達的正確性,程式碼結構的合理性等方面;發現違背程式編寫標準的問題,程式中不安全、不明確和模糊的部分,找出程式中不可移植部分、違背程式程式設計風格的內容,包括變

測試基本路徑法)程式碼

白盒測試的一種常用方法是基本路徑法,根據原始碼構造程式流程圖,轉換為控制流圖,得到基本路徑,進而為每條基本路徑設計測試用例。 基本路徑法的一個關鍵步驟是識別出所有的基本路徑。本次作業要求你寫一個C++程式: 輸入:待測程式的控制流圖輸出:圈複雜度、基本路徑集合 基本要求

測試---邏輯路徑覆蓋的五種方法和物理路徑覆蓋(一)

一、語句路徑覆蓋:是一個比較弱的邏輯路徑覆蓋標準。是指通過選擇足夠的測試用例,使得執行這些用例時,被測程式的每一個語句至少被執行一次。 舉例:  測試用例  輸入 預期輸出  被測路徑

測試用例設計方法-語句覆蓋法

一、概念 白盒測試技術:一般可以分為靜態分析技術和動態分析技術。 a.靜態分析技術:控制流分析技術、資料流分析技術、資訊流分析技術; b.動態分析技術:邏輯覆蓋率測試、程式插樁; 其中最常用的是邏輯

測試方法--邏輯覆蓋法

本文目的主要為軟考準備的複習內容。 例項程式碼: int method(bool a, bool b, bool c) { 1  int x; 2  x=0; 3  if(a && (b || c)) 4    x=1; 5  return x; } 1

軟體測試基本分類----黑測試測試

黑盒測試黑盒測試又叫功能測試、資料驅動測試或給予需求規格說明書的功能測試。這種測試注重於測試軟體的功能性需求。採用這種測試方法,測試工程師把測試物件看作一個黑盒子,不需要考慮程式內部的邏輯結構和特性,只需要依據程式的需求規格說明書,檢查程式的功能是否符合它的功能說明。黑盒測試

軟體測試 測試--邏輯覆蓋法&基本路徑測試法

白盒測試—邏輯覆蓋法&基本路徑測試法 題目一:使用邏輯覆蓋測試方法測試以下程式段 1.  int logicExample(int x, int y) 2.  { 3.      int magic=0; 4.      if(x>0 &&

第4代測試方法通俗釋義

從第3代到第4代,堅持調測一體的理念後,測試程式碼與被測程式碼真正同等的看成一種產品程式碼,兩者程式碼一同新增、一併維護,不是把被測程式碼寫完整了再設計測試指令碼,維護兩者也是對等的,只要相關聯的程式碼一處修改了,另一處也要跟著改。不僅如此,兩者的除錯過程也可融為一體,除錯測試指令碼與除錯被測程式碼有許多共性

第4代測試方法實踐之“VcTester插裝原理與各種覆蓋率配置”

VcTester與常見C/C++語言覆蓋測試工具一樣,提供多種覆蓋率統計,已涵蓋語句覆蓋、分支覆蓋、條件分支覆蓋、MCDC覆蓋。本文講解VcTester的插裝實現原理、描述該工具的覆蓋率使用特點。 VcTester插裝實現原理 VcTester是基於函式呼叫進行覆蓋統計的,

4.6.4 測試(第二部分)

6.4 png image log nbsp src -128 logs 4.6 4.6.4 白盒測試(第二部分)