iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0

可以獲得什麼?

理解什麼是白箱測試與黑箱測試,他們有哪些運用理論可以使用。


測試方法

測試方法是指在軟體開發過程中使用的測試技術、策略或過程。通常包括一系列的步驟和流程,以驗證軟體是否滿足特定的需求、規格和預期行為。在軟體測試中依照對於系統的了解程度,一般分為黑箱測試白盒測試

黑箱測試

黑箱測試(Black Box Testing)是一種測試方法,它不需要測試人員了解軟體的內部實作方式,也不需要具備程式碼和程式語言的專門知識。相反,它關注的是軟體的輸入和輸出,以確認軟體是否按照規格正確運作。這種測試方法主要是從使用者的角度對軟體介面、功能和外部結構進行測試,而不考慮程式內部的邏輯結構。

黑箱測試由於不關心軟體內部的程式碼,而是專注於確保軟體在不同情況下都能正確執行,所以適用於大部分的測試階段,包括整合測試、系統測試和驗收測試等。

典型的黑盒測試設計方法包括:

  • 等價類劃分法:將輸入值劃分成不同的等價類別,以確保每個等價類都得到適當的測試。
  • 邊界值分析法:測試輸入值的邊界情況,通常邊界值情況容易引起錯誤。
  • 錯誤推測法:根據測試人員的經驗和直覺,推測可能的錯誤情況,然後進行測試。
  • 因果圖法:建立因果圖,以確定可能導致錯誤的因素,然後進行測試。
  • 判定表法:使用判定表來生成測試用例,根據不同的條件和動作進行組合。
  • 正交試驗法:使用正交表格來生成測試用例,以測試不同的輸入組合。
  • 功能圖法:創建功能圖,以描述軟體的功能和交互作用,然後生成測試用例。
  • 場景法:根據不同的使用場景和使用者需求,創建測試用例。
  • 優點

    • 不需要瞭解程式邏輯,進入門檻低
    • 適合用在大量的程式碼、複雜的系統中
  • 缺點

    • 低覆蓋率
    • 測試人不會瞭解程式邏輯,無法知道程式是否有寫錯

白箱測試

白箱測試(White Box Testing)又稱透明盒測試(glass box testing)、結構測試(structural testing)是一種測試方法,其特點在於測試人員需要了解軟體的內部結構和程式碼。這種測試方法基於程式碼的內部邏輯進行測試案例的設計,以確保每個程式路徑都得到測試。

白箱測試的優勢在於能夠檢測程式碼及其邏輯,因此適用於多個測試階段,包括單元測試(unit testing)、整合測試(integration testing)以及系統測試。這種測試方法可以測試整合過程中每一個單元之間的路徑,也可以用於測試主系統與子系統之間的路徑。

白箱測試設計技術包括以下代碼覆蓋標準:

  • 控制流測試(Control Flow Testing):以確保程式的各個可能路徑都被觸發和測試,包括不同的條件分支、循環等。這有助於確保程式在不同的控制流情況下都能正確執行。
  • 資料流測試(Data Flow Testing):重點在於測試程式中的資料流動,以確保資料在程式中的傳遞和處理都是正確的。這有助於發現潛在的資料流問題,如未初始化的變數、資料競爭等等。
  • 分支測試(Branch Testing)針對程式中的不同分支路徑進行測試,用以確保每條分支條件都得到適當的測試。有助於確保程式在各種條件下都能正確執行。
  • 語句覆蓋(Statement Coverage):用來衡量在測試過程中程式中的每一條語句是否都被執行至少一次。這是一種較簡單的覆蓋標準,但不能保證所有可能的程式路徑都已經測試到。
  • 判定覆蓋(Decision Coverage):是確保在測試過程中每個決策點(例如,if語句或迴圈的條件)的所有可能結果都被執行至少一次。較前者嚴謹。
  • 修正條件/判定覆蓋(Modified Condition/Decision Coverage,MC/DC):MC/DC是一種更嚴格的白箱測試標準,主要用於高度可靠性的系統,如飛行控制軟體、醫療設備軟體。它要求每個判定式(Decision)的每個條件(Condition)得到充分測試,確保了更高的測試品質。
  • 主要路徑測試(Primary Path Testing):主要路徑測試是一種白箱測試方法,它專注於測試程式中的主要路徑或主要執行路徑。主要路徑通常是程式中最重要的執行路徑,因此測試人員會確保這些路徑被充分測試。
  • 路徑測試(Path Testing):目的在於測試程式中不同路徑組合。在設計測試案例,會盡量涵蓋所有可能的路徑,確保程式在各種情況下都能正確執行。這是一種複雜的測試方法,通常用於高度可靠性的系統。
  • 優點

    • 測試人員可以指出程式邏輯的缺陷
    • 確保程式運作邏輯符合預期,以及每個步驟產生的資料都是正確
    • 高覆蓋率
    • 從原始碼層面測試提供可追溯性
    • 容易實現自動化
  • 缺點

    • 需提供程式碼
    • 測試者需要程式能力,也依賴期能力,能力越強越可以找出程式缺陷
    • 根據測試層面的複雜性,白箱測試需要知識水平更高的程式設計師
    • 花費時間較多

後記

測試的方法很多,僅列出一些比較常見的,還有一些細節沒有說明,這些後續自己的努力。畢竟每個測試方法,其背後有多稍論文支持著,無法用三言兩語就結束。


參考


上一篇
【D9】敏捷開發與測試
下一篇
【D11】實例簡述:測試四階段與測試方法
系列文
精實30天:QA 概念養成計劃31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言