tft每日頭條

 > 圖文

 > 白盒測試和黑盒測試區别

白盒測試和黑盒測試區别

圖文 更新时间:2025-01-27 20:29:57

白盒測試,也稱為結構化測試、基于代碼的測試,是一種測試用例設計方法,已知産品的内部工作過程,通過測試證明每種内部操作是否符合設計規格要求。

它基于程序的控制結構;是基于-一個應用代碼的内部邏輯知識;基于覆蓋全部代碼、分支、路徑、條件,導出測試用例。

白盒測試産生的測試用例檢查點:

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

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

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

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

邏輯細節測試的原因:

邏輯錯誤和不正确假設與一條程序路徑被運行的可能性成反比。當我們設計和實現主流之外的功能、條件或控制時,錯誤往往開始出現在我們工作中。日常處理往往被很好地了解,而“特殊情況“的處理則難于發現。

我們經常相信某邏輯路徑不可能被執行,而事實上,它可能在正常的基礎上被執行。程序的邏輯流有時是違反直覺的,這意味着我們關于控制流和數據流的一-些無意識的假設可能導緻設計錯誤,隻有路徑測試才能發現這些錯誤。

筆誤是随機的。當一個程序被翻譯為程序設計語言源代碼時,有可能産生某些筆誤,很多将被語法檢查機制發現,但是,其他的會在測試開始時才會被發現。筆誤出現在主流上和不明顯的邏輯路徑上的幾率是一樣的。

1邏輯覆蓋

語句覆蓋、判斷覆蓋、條件覆蓋

2語句覆蓋

語句覆蓋就是設計若幹個測試用例,運行被測程序,使得每一-條可執行語句至少執行次。

3判斷覆蓋

判定覆蓋就是設計若千個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經曆一次。判定覆蓋又稱為分支覆蓋。

判定路徑覆蓋( Decision-to-Decision Paths Coverage,DDP Coverage )是判定覆蓋的一個變體。這裡的判定指的是一個序列語句,其起始位置是函數入口或一個判定(如If,while,switch等)的開始,結束位置是下一個判定的開始。

通過計算哪些判定路徑已經走過,哪些沒有走過,我們就可以得到DDP覆蓋率了。其公式如下:

DDP覆蓋= (至少被執行到一次的判定路徑數量) / (系統中判定路徑總數)

4條件覆蓋

條件覆蓋就是設計若幹個測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執行一次。

判定一條件覆蓋

判定一條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執行一次,同時每個判斷中的每個條件的可能取值至少執行一次。

條件組合覆蓋

條件組合覆蓋就是設計足夠的測試用例,運行被測程序,使得每個判斷的所有可能的條件取值組合至少執行一次。

更改條件判定覆蓋( Modified Conditions/Decisions Coverage,MC/DC Coverage )

是判定條件覆蓋的一個變體。更改條件判定覆蓋主要為多條件測試提供了方便,通過分析條件判定的覆蓋來增加測試用例,防止測試的指數上升趨勢。

MC/DC标準滿足下列需求:

被測試程序模塊的每個入口點和出口點都必須至少被走一次。并且每一個程序判定的結果至少被覆蓋一次。

通過分解邏輯操作,程序的判定被分解為基本的布爾條件表達式,每個條件獨立的傭于判定的結果,覆蓋所有條件的可能結果。

◆分支條件組合覆蓋 ( Branch Condition Combination Coverage )是一種比判定條件覆蓋更強的覆蓋。它的含義是,設計一定的測試用例,使得每個分支的各操作數值的組合都遍曆一次。其計算公式如下:

分支條件組合覆蓋= (被評價到的分支條件組合數) 1 (分支條件組合總數)

5函數覆蓋

有很多測試工具,例如TrueCoverage ,Logiscope 等,都提供了函數覆蓋的概念,函數覆蓋是針對系統或-一個子系統的測試的,它表示在該測試中,有哪些函數被測試到了,其被測試到的頻率有多大,這些函數在系統所有函數中占的比例有多大。函數覆蓋是--個比較容易自動化的技術,同時也易于理解。其公式如下:

函數覆蓋= (至少被執行一 -次的函數數量) / ( 系統中函數的總數)

由于函數覆蓋也是基于代碼的,因此你可以把其歸入到白盒的範疇内。

6基本路徑測試

在程序控制流程圖的基礎上,導出可以執行的路徑集合,設計測試用例。

Z路徑覆蓋是路徑覆蓋的一個變體。路徑覆蓋是白盒測試最為典型的問題。着眼于路徑分析的測試可稱為路徑測試。完成路徑測試的理想情況是做到路徑覆蓋。對于比較簡的小程序實現路徑覆蓋是可能做到的。但是如果程序中出現多個判斷和多個循環,可能的路徑數目将會急劇增長,達到天文數字,以至實現路徑覆蓋不可能做到。

為了解決這一問題,我們必須舍掉- -些次要因素,對循環機制進行簡化,從而極大地鹹少路徑的數量,使得覆蓋這些有限的路徑成為可能。我們稱簡化循環意義下的路徑覆蓋為Z路徑覆蓋。

這裡所說的對循環化簡是指,限制循環的次數。無論循環的形式和實際執行循環體的次數多少,我們隻考慮循環- -次和零次兩種情況。也即隻考慮執行時進入循環體一次 和跳過循環體這兩種情況。

對于程序中的所有路徑可以用路徑樹來表示。當得到某一程序的路徑樹後,從其根結點開始,一次遍曆,再回到根結點時,把所經曆的葉結點名排列起來,就得到一個路徑。如果我們設法遍曆了所有的葉結點,那就得到了所有的路徑。

當得到所有的路徑後,生成每個路徑的測試用例,就可以做到Z路徑覆蓋測試。

條件測試路徑選擇

當程序中判定多于一個時,形成的分支結構可以分為兩類:嵌套型分支結構和連鎖型分支結構。

對于嵌套型分支結構,若有n個判定語句,需要n 1個測試用例;

對于連鎖型分支結構,若有 n個判定語句,需要有2n個測試用例,覆蓋它的2n條路徑。

當n較大時将無法測試。

循環測試路徑選擇

循環分為4種不同類型:簡單循環、連鎖循環、嵌套循環和非結構循環。

簡單循環

零次循環:從循環入口到出口

次循環:檢查循環初始值

二次循環:檢查多次循環

m次循環:檢查在多次循環

最大次數循環、比最大次數多- -次、 少- -次的循環。

嵌套循環

對最内層循環做簡單循環的全部測試。所有其它層的循環變量置為最小值;

逐步外推,對其外面-層循環進行測試。測試時保持所有外層循環的循環變量取最小值,所有其它嵌套内層循環的循環變量取”典型”值。

反複進行,直到所有各層循環測試完畢。

對全部各層循環同時取最小循環次數,或者同時取最大循環次數。

人連鎖循環

如果各個循環互相獨立,則可以用與簡單循環相同的方法進行測試。但如果幾個循環不題相獨立的,則需要使用測試嵌套循環的辦法來處理。

非結構循環

這一類循環應該使用結構化程序設計方法重新設計測試用例。

最後:【可能給你帶來幫助的教程】

點擊免費領取軟件測試資料 100 名企測試内推資源傾情分享(私聊q1領取)

白盒測試和黑盒測試區别(10年騰訊測試經驗告訴你白盒測試是什麼及其測試方法)1

這一些資料,對做【軟件測試】的朋友而言應該是較為完整了,這類學習資料也陪伴我走過了最艱難的路程,希望也可以幫助到你!萬事要盡早,尤其是技術行業,一定要提升技術功底。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved