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

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

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

從軟件測(cè)試白盒測(cè)試實(shí)例分析

數(shù)字芯片實(shí)驗(yàn)室 ? 來(lái)源:數(shù)字芯片實(shí)驗(yàn)室 ? 2023-08-20 14:44 ? 次閱讀

White-Box Testing

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

Logic Coverage Testing

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

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

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

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

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

第一個(gè)條件可能是而不是。如果是這樣,這個(gè)bug將不會(huì)被檢測(cè)到。

第二個(gè)條件如果是是X>0,這個(gè)bug也不會(huì)被檢測(cè)到。

此外,程序中有一條路徑,X沒(méi)有改變(路徑abd)。如果這里存在一個(gè)錯(cuò)誤,也不會(huì)被檢測(cè)到。

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

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

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

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

在點(diǎn)a處A>1, A<=1, B=0, 和B!=0;

在點(diǎn)b處A=2, A!=2, X>1, 和X<=1。

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

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

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

另外請(qǐng)?jiān)偎伎枷?,功能覆蓋率能夠覆蓋哪些代碼覆蓋率無(wú)法描述的場(chǎng)景組合呢?

編輯:黃飛

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

    關(guān)注

    2

    文章

    231

    瀏覽量

    18606
  • 白盒測(cè)試
    +關(guān)注

    關(guān)注

    1

    文章

    14

    瀏覽量

    10625
  • 芯片驗(yàn)證
    +關(guān)注

    關(guān)注

    5

    文章

    34

    瀏覽量

    47238

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    測(cè)試有什么優(yōu)缺點(diǎn)?

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

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

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

    測(cè)試教程ppt

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

    測(cè)試

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

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

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

    黑盒測(cè)試、測(cè)試、單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試

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

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

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

    PRQA測(cè)試軟件使用說(shuō)明書

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

    測(cè)試和黑盒測(cè)試的優(yōu)缺點(diǎn)

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

    詳談黑盒測(cè)試測(cè)試的異同及用例

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

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

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

    4G終端主板測(cè)試報(bào)告

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

    滲透測(cè)試的優(yōu)勢(shì)是什么

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

    功能測(cè)試還是黑盒測(cè)試

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