淺談黑箱測試和白盒測試

來源:互聯網
上載者:User

標籤:

1. 黑箱測試和白盒測試的直觀圖

  可以直接看出來,黑箱測試就當整個程式是個黑盒子,我們看不到它裡面做了些什麼事情,只能通過輸入輸出看是否能得到我們所需的來測試。而白盒測試可以當盒子是透明的,裡面的一切我們都看的清楚,從而我們可以通過去測內部結構來測試。  

2. 黑箱測試 (Black-Box Testing)

  黑箱測試又稱為功能測試、資料驅動測試或基於規格說明書的測試,是一種從使用者觀點出發的測試。測試人員一般把被測程式當作一個黑盒子。

  黑箱測試主要測到的錯誤類型有:不正確或遺漏的功能;介面、介面錯誤;效能錯誤;資料結構或外部資料訪問錯誤;初始化或終止條件錯誤等等。

  常用的黑箱測試方法有:等價類別劃分法;邊界值分析法;因果圖法;情境法;正交實驗設計法;判定表驅動分析法;錯誤推測法;功能圖分析法。

  · 等價類別劃分法

    等價類別分為有效等價類別和無效等價類別,其中,有效等價類別是指對於程式的規格說明來說是合理的,有意義的輸入資料構成的集合;而無效等價類別是指對於程式的規格說明來說是不合理的,沒有意義的輸入資料構成的集合。

    確定等價類別的原則是:a. 在輸入條件規定了取值範圍或值的個數的情況下,則可以確定一個有效等價類別和兩個無效等價類別,比如若規定的輸入範圍是1<x<10的所有數,則有效是1~10內的任意數,而無效的是 -∞~0.9999 和10.00001~+∞; b. 在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,則可以確立一個有效等價類別和一個無效等價類別;c.在輸入條件是一個布爾量的情況下,可以確定一個有效等價類別和一個無效的等價類別;d. 在規定了輸入資料的一組值(假定n個),並且程式要對每一個輸入值分別處理的情況下,可以確立n個有效等價類別和一個無效等價類別;e. 在規定了輸入資料必須遵守的規則的情況下,可以確立一個有效等價類別(符合規則)和若干個無效等價類別(從不同角度違反規則);f.在確知已劃分的等價類別中各元素在程式處理中的方式不同的情況下,則應再將改等價類別進一步的劃分為更小的等價類別。

  · 邊界值分析法

    根據經驗法則,大量的錯誤是發生在輸入或輸出範圍的邊界上的,而不是發生在輸入輸出範圍的內部。因此針對各種邊界情況涉及測試案例,可以查出更多的錯誤。而使用邊界值的分析方法涉及測試案例,首先應確定邊界情況。通常輸入和輸出等價類別的邊界,應當選取正好等於,剛剛大於或者剛剛小於邊界的值作為測試資料,而不是選取等價類別中的典型值或任意值作為測試資料。

    邊界值選擇的原則: a. 如果輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍的邊界的值作為測試輸入資料。 例如,如果程式的規格說明中規定:“重量在10公斤至50公斤範圍內的郵件,其郵費計算公式為……”。作為測試案例,我們應取10及50,還應取10.01,49.99,9.99及50.01等;b. 如果輸入條件規定了值的個數,則用最大個數,最小個數,比最小個數小一,和比最大個數大一的數作為測試資料。例如,一個輸入檔案應包括1~255個記錄,則測試案例可取1和255,還應取0及256等。c. 將前面兩個原則應用於輸出條件,即涉及測試案例使輸出值達到邊界值及其左右的值。d.如果程式的規格說明給出的輸入欄位或輸出域是有序集合,則應選取集合的第一個元素和最後一個元素作為測試案例。e. 如果程式中使用了一個內部資料結構,則應當選擇這個內部資料結構的邊界上的值作為測試案例資料;f. 分析規格說明,找出其他可能的邊界條件。

  · 因果圖法

    因果圖是一種利用圖解法分析輸入的各種組合情況,從而設計測試案例的方法,它適合於檢查程式輸入條件的各種組合情況。

    利用因果圖產生測試案例的基本步驟有:1. 分析軟體規格說明描述中哪些是原因(輸入,包括前提條件,操作過程),哪些是結果(輸出),並給每個原因和結果賦予一個標識符;2. 分析軟體規格說明描述的語義,找出原因和結果之間,原因和原因之間的關係,根據這些關係,畫出因果圖;3. 在因果圖上用一些記號表明約束或限制條件;4. 把因果圖轉換為判定表;5. 把判定表的每一列拿出來作為依據,設計測試案例。

    因果圖的基本符號和約束符號:

    

  · 情境法

    情境法一般包含基本流和備用流,從一個流程開始,通過描述經過的路徑來確定的過程,經過遍曆所有的基本流和備用流來完成整個情境。其中,基本流就是正常的,正確情境;備選流一般指中斷操作的。

  · 正交實驗設計法

    使用正交實驗設計法首先要知道正交表,正交表是研究多因素多水平的一種設計方法,它是格局正交性從全面實驗中挑選出部分有代表性的點進行實驗,這些有代表性的點具備了“均勻分散,齊整可比”的特點,正交實驗設計是一種基於正交表的、高效率、快速、經濟的實驗設計方法。正交表由三個成分構成,Runs:正交表的行數,即實驗的次數;Factors:正交表的列數,即因素數;Levels:水平數,任何單個因素能夠取得的值的最大個數。 正交表的表現形式是:  L行數 (水平數因素數)   L runs(levels^factors  )。

    用正交表設計測試案例的步驟: 1. 有哪些因素(變數); 2.每個因素有那幾個水平(變數的取值):用等價類別劃分出來的;3. 選擇一個合適的正交表;4. 把變數的值對應到表中;5. 把每一行的各因素水平的組合作為一個測試案例;6. 加上你認為可以且沒有在表中出現的組合。

    如何選擇正交表呢?取行數最少的一個,情況分三種:1.因素數(變數)、水平數(變數值)相符;2. 因素數不相同: 取因素數最接近但略大的實際值的表;3. 水平數不相同: 有五個因素(變數)A、B、C、D和E。兩個因素有兩個水平(變數的取值)、兩個因素有三個水平,一個因素有六個水平。行數取最少的一個( 行數取最少的一個(L49(78)、 L18(3661)

  · 判定表驅動分析法

    判定表是分析和表達多邏輯條件下執行不同操作的情況的工具。判定表由以下部分構成:? 1. 條件樁(Condition Stub):列出了問題的所有條件。通常認為列出的條件的次序無關緊要; 2. ? 動作樁(Action Stub):列出了問題規定可能採取的操作。這些操作的排列順序沒有約束;3. ? 條件項(Condition Entry):列出針對它左列條件的取值在所有可能情況下的真假值; 4.? 動作項(Action Entry):列出在條件項的各種取值情況下應該採取的動作。

 

  · 錯誤推測法

    錯誤推測法是基於經驗和直覺推測程式中所有可能存在的各種錯誤, 從而有針對性的設計測試案例的方法。錯誤推測方法的基本思想: 列舉出程式中所有可能有的錯誤和容易發生錯誤的特殊情況, 根據它們選擇測試案例。

    最後,對於黑箱測試的綜合策略是:首先,考慮邊界值分析法,邊界值分析法是在任何情況下都必須使用的方法,因為經驗表明這種方法設計的測試案例發現程式錯誤的能力最強。必要時用等價類別劃分方法補充一些測試案例。其次,可以用錯誤推測法再追加一些測試案例。這時,可以對照程式邏輯,檢查已設計出的測試案例的邏輯覆蓋率,如果沒有達到要求的覆蓋標準,應當再補充足夠的測試案例;如果程式的功能說明中含有輸入條件的組合情況,則一開始就可以選用因果圖法。

3. 白盒測試 (White-Box Testing)

  為什麼要考慮白盒測試呢?舉個栗子說明,設x=0,y=5, 程式設計z=y/x, 如果只考慮輸入輸出的黑箱測試,我們看不出程式內部的邏輯錯誤(分母不能為零),即使我們使用黑箱測試的測試案例覆蓋的再全也發現不了這個問題,這個時候就要考慮使用白盒測試了。

  而什麼是白盒測試呢?白盒測試也稱為結構測試或邏輯驅動測試,是針對被測單元內部是如何進行工作的測試。它根據程式的控制結構設計測試案例,主要用於軟體或程式驗證。白盒測試法檢查程式內部邏輯結構,對所有的邏輯路徑進行測試,是一種窮舉路徑的測試方法,但即使每條路徑都測試過了,但仍然有可能存在錯誤。因為:窮舉路徑測試無法檢查出程式本身是否違反了設計規範,即程式是否是一個錯誤的程式;窮舉路徑測試不可能檢查出程式因為遺漏路徑而出錯;窮舉路徑測試發現不了一些與資料相關的錯誤。

  白盒測試需要遵循的原則有: 1. 保證一個模組中的所有獨立路徑至少被測試一次;2. 所有邏輯值均需要測試真(true)和假(false);兩種情況;3. 檢查程式的內部資料結構,保證其結構的有效性;4. 在上下邊界及可操作範圍內運行所有迴圈。

  白盒測試方法有:

  · 靜態測試&動態測試

  靜態測試是不用運行程式的測試,包括代碼檢查、靜態結構分析、代碼品質度量、文檔測試等等,它可以由人工進行,充分發揮人的邏輯思維優勢,也可以藉助軟體工具(Fxcop)自動進行。動態測試則需要執行代碼,也是我們用的最多的一種測試,通過運行程式找到問題,包括功能確認與介面測試、覆蓋率分析、效能分析、記憶體分析等。

  · 單元測試

  · 代碼檢查

  · 同行評審

  · 技術評審

  要實驗室檢驗的效果,就要去看測試的覆蓋率,當覆蓋率越大,說明測試成效越好,軟體的缺陷越少。但覆蓋率不是目標(品質才是目標)而只是一種手段。測試覆蓋率包括功能點覆蓋率和結構覆蓋率,其中,功能點覆蓋率大致用於表示軟體已經實現的功能與軟體需要實現的功能之間的比例關係;而結構覆蓋率包括語句覆蓋率、分支覆蓋率、迴圈覆蓋率和路徑覆蓋率等等。

  而邏輯覆蓋法中根據覆蓋目標的不同和覆蓋來源程式語句的詳盡程度,邏輯覆蓋又可分為:語句覆蓋; 判定覆蓋;條件覆蓋;判定/條件覆蓋;組合覆蓋;路徑覆蓋,且這些覆蓋程度越往後越全。

4. 灰盒測試 (Gray-Box Testing)

  灰盒測試更像是白盒測試和黑箱測試的混合測試,現階段對灰盒測試沒有更明確的定義,但更多的時候,我們的測試做的就是灰盒測試,即既會做黑箱測試又會做白盒測試。

淺談黑箱測試和白盒測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.