<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

White-Box Testing

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

Logic Coverage Testing

你可能會覺得一個值得追求的目標是至少執行程序中的每一條語句。不幸的是,這是一個很弱的標準。假設下面這個圖表示一個要測試的小程序。相應的Java代碼片段如下:

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

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

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

不幸的是,這個標準相當差。

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

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

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

更強的邏輯覆蓋標準稱為條件覆蓋或分支覆蓋。這個標準規定,你必須編寫足夠的測試用例,使每個條件至少有一個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。條件覆蓋是比語句覆蓋更強的標準,但它仍然很弱。因為,此時我們仍然沒有探索到x沒有改變的路徑(abd)。

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

有時比分支覆蓋更強的標準是條件覆蓋。在這種情況下,你需要編寫足夠的測試用例來確保每個條件至少有一次取得所有可能的結果。上圖中有四個條件: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。

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

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

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

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

編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件測試
    +關注

    關注

    2

    文章

    217

    瀏覽量

    18403
  • 白盒測試
    +關注

    關注

    1

    文章

    14

    瀏覽量

    10549
  • 芯片驗證
    +關注

    關注

    5

    文章

    33

    瀏覽量

    47067

原文標題:從軟件測試看芯片驗證-白盒測試

文章出處:【微信號:數字芯片實驗室,微信公眾號:數字芯片實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    [3.1.1]--3.1測試方法概述

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 20:31:49

    [3.4.1]--3.4其他測試方法

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 20:34:37

    [7.3.1]--測試-1

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 20:52:53

    [7.3.2]--測試-2_clip001

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 20:53:49

    [7.3.2]--測試-2_clip002

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 20:54:45

    [7.3.2]--測試-2_clip003

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 20:55:42

    [7.3.3]--測試-3_clip001

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 21:00:25

    [7.3.3]--測試-3_clip002

    軟件測試
    jf_75936199
    發布于 :2023年01月22日 21:01:21

    系統測試、驗收測試、黑盒測試、測試、單元測試、集成測試的區別

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

    什么是黑盒測試測試

    軟件測試其實就是對程序進行一些操作,來發現程序所存在的缺陷,衡量軟件的質量,并對其是否能滿足設計要求進行評估的過程。
    發表于 07-22 07:56

    嵌入式軟件的覆蓋測試該怎么進行?

    軟件測試是很廣的概念。其貫穿軟件生命周期全過程來看,測試可分為模塊測試、集成
    發表于 09-18 07:23

    測試有什么優缺點?

    測試法的覆蓋標準有邏輯覆蓋、循環覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。
    發表于 10-23 09:01

    【YOXIOS X3開發板(基于Linux的GUI)試用連載】基于網絡的軟件測試系統

    項目名稱:基于網絡的軟件測試系統試用計劃:目的:開發基于網絡的圖形界面的
    發表于 07-27 15:02

    軟件測試的相關資料推薦

    /軟件集成測試。前3個階段適用于任何軟件測試,硬件/軟件集成測試階段是嵌入式
    發表于 02-28 12:54

    基于模塊化設計的嵌入式軟件測試方法

    分析嵌入式軟件的特點,綜述傳統的軟件測試方法;針對嵌入式軟件的特點,提出嵌入式軟件的四級
    發表于 05-18 13:26 ?23次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>