0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從軟件測試白盒測試實例分析

數(shù)字芯片實驗室 ? 來源:數(shù)字芯片實驗室 ? 2023-08-20 14:44 ? 次閱讀

White-Box Testing

白盒測試是關(guān)注測試用例覆蓋程序邏輯(源代碼)的程度。最終的白盒測試是執(zhí)行程序中的每個路徑。但對于大多數(shù)的程序(例如帶有循環(huán)的程序),完全意義上的全路徑覆蓋是不現(xiàn)實的。

Logic Coverage Testing

你可能會覺得一個值得追求的目標(biāo)是至少執(zhí)行程序中的每一條語句。不幸的是,這是一個很弱的標(biāo)準(zhǔn)。假設(shè)下面這個圖表示一個要測試的小程序。相應(yīng)的Java代碼片段如下:

59a5e8c0-3f14-11ee-ac96-dac502259ad0.png

59c9e7ac-3f14-11ee-ac96-dac502259ad0.png

你可以通過編寫一條單獨(dú)的測試用例來執(zhí)行到路徑ace。也就是說,在a點設(shè)置A=2,B=0和X=3,每個語句將被執(zhí)行一次。

不幸的是,這個標(biāo)準(zhǔn)相當(dāng)差。

第一個條件可能是而不是。如果是這樣,這個bug將不會被檢測到。

第二個條件如果是是X>0,這個bug也不會被檢測到。

此外,程序中有一條路徑,X沒有改變(路徑abd)。如果這里存在一個錯誤,也不會被檢測到。

更強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)稱為條件覆蓋或分支覆蓋。這個標(biāo)準(zhǔn)規(guī)定,你必須編寫足夠的測試用例,使每個條件至少有一個true和一個false。以及每個分支方向必須至少遍歷一次。分支或條件語句的例子包括switch-case、do-while和if-else語句,以及在某些編程語言(如Fortran)中的多路徑GOTO語句。

在上圖中,分支覆蓋可以用兩個測試用例覆蓋路徑ace和abd,或者覆蓋路徑acd和abe。如果我們選擇后者,那么兩個測試用例的輸入分別是A=3, B=0, X=3和A=2, B=1, X=1。條件覆蓋是比語句覆蓋更強(qiáng)的標(biāo)準(zhǔn),但它仍然很弱。因為,此時我們?nèi)匀粵]有探索到x沒有改變的路徑(abd)。

如果第二個判斷有誤(寫成X<1而不是X>1),那么這個bug就不會被前面的測試用例(A=2, B=1, X=1)檢測到。

有時比分支覆蓋更強(qiáng)的標(biāo)準(zhǔn)是條件覆蓋。在這種情況下,你需要編寫足夠的測試用例來確保每個條件至少有一次取得所有可能的結(jié)果。上圖中有四個條件:A>1, B=0, A=2, 和X>1。因此,需要足夠多的測試用例來覆蓋以下情況:

在點a處A>1, A<=1, B=0, 和B!=0;

在點b處A=2, A!=2, X>1, 和X<=1。

盡管條件覆蓋標(biāo)準(zhǔn)乍一看似乎滿足分支覆蓋標(biāo)準(zhǔn),但并不總是如此。例如,兩個測試用例 A = 1,B = 0,X = 3 和A = 2,B = 1,X = 1 涵蓋了所有條件結(jié)果,但只涵蓋了四個分支中的兩個(它們都涵蓋了路徑abe,因此不會執(zhí)行第一個分支的true結(jié)果和第二個分支的false結(jié)果)。

擺脫這種困境的明顯方法是一種稱為分支+條件覆蓋的標(biāo)準(zhǔn)。它需要足夠的測試用例,以便每個分支判斷中的每個條件至少有一次取得所有可能的結(jié)果。

最后,大家再思考下,現(xiàn)有的仿真驗證的代碼覆蓋率有哪些類型的代碼覆蓋率,其實是會考慮所有分支里面的所有條件的輸入和輸出結(jié)果的組合的。

另外請再思考下,功能覆蓋率能夠覆蓋哪些代碼覆蓋率無法描述的場景組合呢?

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 軟件測試
    +關(guān)注

    關(guān)注

    2

    文章

    226

    瀏覽量

    18544
  • 白盒測試
    +關(guān)注

    關(guān)注

    1

    文章

    14

    瀏覽量

    10604
  • 芯片驗證
    +關(guān)注

    關(guān)注

    5

    文章

    34

    瀏覽量

    47181

原文標(biāo)題:從軟件測試看芯片驗證-白盒測試

文章出處:【微信號:數(shù)字芯片實驗室,微信公眾號:數(shù)字芯片實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    系統(tǒng)測試、驗收測試、黑盒測試、測試、單元測試、集成測試的區(qū)別

    正確的接受?能否輸出正確的結(jié)果?  3、是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文件)訪問錯誤?  4、性能上是否能夠滿足要求?  5、是否有初始化或終止性錯誤?  軟件測試是對
    發(fā)表于 10-22 12:42

    測試有什么優(yōu)缺點?

    測試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。
    發(fā)表于 10-23 09:01

    【YOXIOS X3開發(fā)板(基于Linux的GUI)試用連載】基于網(wǎng)絡(luò)的軟件測試系統(tǒng)

    項目名稱:基于網(wǎng)絡(luò)的軟件測試系統(tǒng)試用計劃:目的:開發(fā)基于網(wǎng)絡(luò)的圖形界面的
    發(fā)表于 07-27 15:02

    測試教程ppt

    測試測試概念測試覆蓋標(biāo)準(zhǔn)邏輯驅(qū)動
    發(fā)表于 09-19 09:39 ?0次下載

    測試

      測試的英文全稱:White-box Testing     
    發(fā)表于 10-22 12:36 ?3615次閱讀

    黑盒測試測試區(qū)別

    黑盒測試測試區(qū)別   黑盒測試  黑盒測試也稱功能
    發(fā)表于 10-22 12:40 ?9349次閱讀

    黑盒測試、測試、單元測試、集成測試、系統(tǒng)測試、驗收測試

    黑盒測試、測試、單元測試、集成測試、系統(tǒng)測試、驗
    發(fā)表于 10-22 12:43 ?2538次閱讀

    測試中源代碼變更管理方法的研究與實現(xiàn)

    在大型軟件測試項目中,源代碼的頻繁變化給測試工作增加了很大難度,對源代碼進(jìn)行管理和控制是對白
    發(fā)表于 04-03 23:20 ?30次下載

    PRQA測試軟件使用說明書

    PRQA測試軟件使用說明書
    發(fā)表于 05-05 11:17 ?7次下載

    測試和黑盒測試的優(yōu)缺點

    測試和黑盒測試軟件測試的兩種基本方法。
    發(fā)表于 11-02 11:18 ?1.9w次閱讀
    <b class='flag-5'>白</b><b class='flag-5'>盒</b><b class='flag-5'>測試</b>和黑盒<b class='flag-5'>測試</b>的優(yōu)缺點

    詳談黑盒測試測試的異同及用例

    詳談黑盒測試測試的異同及用例
    的頭像 發(fā)表于 08-19 17:07 ?6634次閱讀
    詳談黑盒<b class='flag-5'>測試</b>與<b class='flag-5'>白</b><b class='flag-5'>盒</b><b class='flag-5'>測試</b>的異同及用例

    VectorCAST/QA如何在LiteOS-A內(nèi)核上實現(xiàn)系統(tǒng)測試

    本文將通過演示實例介紹VectorCAST/QA如何在LiteOS-A內(nèi)核上實現(xiàn)系統(tǒng)測試,獲取被測程序的代碼覆蓋信息。具體實現(xiàn)在支持sudo超級用戶模式的Ubuntu 18.04(
    的頭像 發(fā)表于 06-26 16:21 ?9299次閱讀
    VectorCAST/QA如何在LiteOS-A內(nèi)核上實現(xiàn)系統(tǒng)<b class='flag-5'>白</b><b class='flag-5'>盒</b><b class='flag-5'>測試</b>

    4G終端主板測試報告

    4G終端主板測試報告
    發(fā)表于 09-30 16:35 ?17次下載

    滲透測試的優(yōu)勢是什么

    滲透測試是一項重要的進(jìn)攻性安全演習(xí)或操作。如果執(zhí)行得當(dāng),它會極大地提高您組織的安全性。滲透測試分為三種類型,根據(jù)滲透測試人員或道德黑客可獲得的信息量分類,其中一種是
    的頭像 發(fā)表于 09-19 10:04 ?1132次閱讀

    功能測試還是黑盒測試

    功能測試軟件測試的一種方法,主要用于驗證軟件的功能是否滿足需求規(guī)格說明書中的要求。功能測試可以采用
    的頭像 發(fā)表于 05-30 14:53 ?687次閱讀