什麼是白盒測試?技術、示例、型別和工具
白盒測試
白盒測試是一種軟體測試技術,它涉及測試產品的底層結構、設計和程式碼,以驗證輸入-輸出流程並改進設計、可用性和安全性。白盒測試也稱為透明盒測試、開放盒測試、清晰盒測試、基於程式碼的測試和玻璃盒測試,因為程式碼對測試人員是可見的。
它是軟體測試方法(稱為盒測試)的兩個組成部分之一。另一方面,黑盒測試是從外部或終端使用者的角度進行測試。另一方面,白盒測試側重於應用程式的內部工作原理,並圍繞內部測試展開。
由於透明盒的概念,“白盒”一詞應運而生。“清晰盒”或“白盒”這個名稱指的是能夠透過軟體的外部外殼(或“盒”)看到軟體的內部工作原理。同樣,“黑盒測試”中的“黑盒”表示無法觀察軟體的內部工作原理,只能評估終端使用者的體驗。
在白盒測試中,您檢查什麼?
白盒測試需要對軟體程式碼進行以下測試:
內部安全漏洞
程式碼過程中中斷或結構不良的路徑
特定輸入透過程式所採取的路徑。
預期結果
條件迴圈在各種情況下都很有用。
每個語句、物件和函式的個性化測試
軟體開發可能包括系統、整合和單元級別的測試。白盒測試的主要目標之一是確保應用程式的操作流程正確。它涉及將一組預定的輸入與預期或所需輸出進行比較,目的是在其中一個輸入未能提供預期結果時識別錯誤。
您如何進行白盒測試?
為了便於理解,我們將白盒測試分解為兩個簡單的階段。在使用白盒測試技術測試應用程式時,測試人員執行以下操作:
步驟 1:理解原始碼
程式的原始碼通常是測試人員首先學習和理解的內容。因為白盒測試涉及測試應用程式的內部工作原理,所以測試人員必須精通被測應用程式中使用的程式語言。此外,測試人員必須精通安全的編碼技術。
軟體測試的主要目標之一是確保其安全性。測試人員應該能夠檢測安全漏洞並防止駭客和可能會故意或無意地將危險程式碼注入程式的幼稚使用者攻擊。
步驟 2:建立和執行測試用例
白盒測試的第二個基本步驟是對應用程式的原始碼進行正確流程和結構的測試。一種方法是編寫更多程式碼來測試應用程式的原始碼。對於應用程式中的每個步驟或一系列過程,測試人員都會建立小型測試。此方法需要測試人員對程式碼有深入的瞭解,並且經常由開發人員執行。手動測試、反覆試驗測試和使用測試工具是一些稍後將在本文中討論的其他方法。
白盒測試示例
程式碼:
Printme (int a, int b) {------------ it is a function
int result = a+ b;
If (result > 0)
Print ("Positive", result)
Else
Print ("Negative", result)
} ----------- End of the code軟體工程中的白盒測試旨在確保程式碼中的所有決策分支、迴圈和語句都是正確的。
白盒測試用例將用於測試前面白盒測試示例中的語句。
A = 1; B = 1
A = -1, B = -3
白盒測試技術
程式碼覆蓋率分析是一種流行的白盒測試技術。透過程式碼覆蓋率分析來填補測試用例套件的漏洞。它識別一組測試用例中未進行測試的程式部分。一旦檢測到漏洞,您就會編寫測試用例來檢查程式碼中未經測試的區域,從而提高軟體產品的質量。
可以使用自動化技術執行程式碼覆蓋率分析。盒式測試人員可以使用以下覆蓋率分析技術:
語句覆蓋率 - 在軟體工程測試過程中,此技術要求程式碼中每個可能的語句至少測試一次。
分支覆蓋率 - 此技術檢查軟體應用程式的每個可能的路徑(if-else和其他條件迴圈)。
除了上述覆蓋率型別外,還有許多其他型別,包括條件覆蓋率、多條件覆蓋率、路徑覆蓋率和函式覆蓋率。每種方法都有其自身的優點,並旨在測試(覆蓋)軟體程式碼的所有方面。通常,您可以使用語句和分支覆蓋率達到 80-90% 的程式碼覆蓋率,這已經足夠了。
以下是一些重要的白盒測試技術:
- 語句覆蓋率
- 判定覆蓋率
- 分支覆蓋率
- 條件覆蓋率
- 多條件覆蓋率
- 有限狀態機覆蓋率
- 路徑覆蓋率
- 控制流測試
- 資料流測試
我們為什麼要進行白盒測試 (WBT)?
為了確保:
每個模組的獨立路徑至少測試過一次。
所有邏輯決策都經過測試,以檢視它們是真還是假。
所有在邊界處及其操作約束內執行的迴圈都確保內部資料結構的有效性。
為了查詢以下型別的錯誤:
當我們建立和實現不屬於程式一部分的函式、條件或控制元件時,我們更有可能犯邏輯錯誤。
由於程式邏輯流程與其實際執行之間的不匹配而導致的設計缺陷
檢查語法和句法錯誤
白盒測試型別
白盒測試是指用於評估應用程式、程式碼片段或特定軟體包可用性的各種測試方法。以下是列表:
單元測試 - 單元測試通常是執行的第一種應用程式測試。隨著每個單元或程式碼塊的開發,它都將進行單元測試。程式設計師主要負責單元測試。作為軟體開發人員,您編寫幾行程式碼、單個函式或物件,然後對其進行測試以確保其正常工作,然後再繼續執行下一步。在軟體開發生命週期的早期,單元測試有助於檢測大多數問題。在此階段發現的錯誤成本更低,更容易修復。
記憶體洩漏測試 - 記憶體洩漏是導致應用程式執行緩慢的最常見原因之一。當您擁有執行緩慢的軟體應用程式時,您需要一位熟練於檢測記憶體洩漏的質量保證專業人員。除了上述內容外,黑盒測試和白盒測試都包含一些測試形式。以下是它們的列表。
白盒滲透測試 - 在這種型別的測試中,測試人員/開發人員可以訪問程式的整個原始碼,以及廣泛的網路資訊、涉及的 IP 地址和所有伺服器資訊。目標是從多個方面攻擊程式碼,以暴露安全漏洞。
白盒變異測試 - 白盒變異測試通常用於確定軟體解決方案增長方面的最佳編碼策略。
白盒測試的優勢
透過檢測隱藏缺陷來最佳化程式碼。
白盒測試用例易於自動化。
由於通常涵蓋所有程式碼路徑,因此測試更徹底。
即使無法訪問 GUI,也可以在 SDLC 的早期開始測試。
白盒測試的缺點
白盒測試可能既耗時又昂貴。
它會讓習慣於執行白盒測試場景的開發人員感到厭煩。開發人員在白盒測試中缺乏細節可能會導致生產問題。
白盒測試需要具備對程式設計和實現有深入瞭解的專業資源。
白盒測試需要時間,較大的程式設計應用程式需要更多時間才能進行徹底測試。
結論
白盒測試是一項艱鉅的任務。被測應用程式與所涉及的難度有很大關係。對執行單個簡單任務的小型應用程式進行白盒測試可能需要幾分鐘時間,而較大的程式設計程式可能需要幾天、幾周甚至幾個月才能完全測試。
軟體測試應該在軟體應用程式開發過程中、編寫完成後以及每次修改後進行。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP