什麼是三明治測試(定義、型別、示例)?
整合測試是軟體測試中一個特定的階段,測試人員將所有獨立的模組組合成一個實體並進行測試。在此階段,測試人員測試介面和通訊的每個模組。這些測試使用兩種方法進行——自頂向下和自底向上整合測試。三明治測試,也稱為混合整合測試,包含自底向上和自頂向下兩種測試方法。簡而言之,在三明治測試中,測試人員可以獲得這兩種方法的優勢,使過程更加精確且以結果為導向。
三明治測試的特點
以下是三明治或混合測試的特點:
它包含三個層——主要目標層、目標層下方的層和目標層上方的層。
測試主要集中在中間目標層。
根據程式碼結構的特性選擇它。
測試人員可以採用三明治測試來處理軟體應用程式的工作版本。
它還用於在軟體開發生命週期的早期階段確定開發基本的工作系統。
三明治測試背後的主要目標是透過引入成熟的方法來消除弱點並提高產品質量。測試人員使用動態符號執行和基於搜尋的技術等高階技術來生成高質量的測試資料,涵蓋所有分支語句。這透過最小化測試用例,定期提高程式碼覆蓋率的準確性。
為什麼軟體測試中需要三明治測試?
缺乏適當的方法會導致專案失敗。每個軟體都有其特定的方法,每個方法都有其自身的特點。混合或三明治測試包含不同的技術,確保最大限度地覆蓋成功測試過程所需的方法。
三明治測試示例
三明治測試類似於 Web 應用程式測試。
例如,Windows 應用程式包含 .NET、MFC 和 WPF 等使用者介面的混合體。使用者可以在其系統上安裝此類混合應用程式。它們不僅沒有相容性問題,而且安裝和執行速度也更快。它們提供一致性和與主要裝置的完全跨平臺相容性。開發人員可以輕鬆地編寫一個指令碼並在多個平臺上執行它。
混合應用程式程式中涉及的測試
混合應用程式程式中涉及的測試 混合應用程式程式中進行三種類型的測試
功能測試——進行此測試以確保程式中的所有功能都正常工作。它確保應用程式可以輕鬆使用內建資源。
連線測試——它確保應用程式可以準確地與多種型別的網路連線配合使用。此外,它還驗證使用者是否可以切換不同的連線型別並在沒有網路連線的情況下工作。
相容性測試——它確保應用程式在不同的裝置上執行時不會出現任何相容性問題。
在進一步瞭解三明治方法之前,讓我們先簡要了解一下整合測試。
整合測試
軟體工程師使用各種策略來執行整合測試,包括:
大爆炸方法
增量方法:它分為三個階段——自頂向下、自底向上和三明治(自頂向下和自底向上的組合)方法
大爆炸測試
大爆炸測試非常適合小型系統。在此測試中,所有元件或模組都同時組合(也稱為實體)並作為一個單元進行測試。
增量測試
在增量測試中,至少兩個或多個模組(邏輯相關的)被整合並進行測試。然後,測試人員逐漸新增其他相關的模組,直到所有相關的模組都被成功整合和測試。
增量測試使用兩種方法進行:自底向上和自頂向下測試。
自底向上整合測試
在這種方法中,測試人員首先測試較低級別的模組。所有經過測試的模組隨後用於測試較高級別的模組。此過程持續進行,直到所有頂級模組都完全測試完畢。
優點:
易於進行故障定位
與大爆炸方法不同,無需開發所有模組即可開始測試過程。
限制:
由於關鍵模組是最後測試的,因此可能會導致缺陷
無法測試早期原型
自頂向下整合測試
在自頂向下整合方法中,測試從軟體系統控制流的頂部到底部進行。與自底向上方法相反,測試人員首先測試較高級別的模組,然後依次測試較低級別的模組。如果某些模組尚未準備好,測試工程師可以使用存根作為替代。
優點:
易於進行故障定位
更容易獲得早期原型
由於關鍵模組首先被測試,因此更容易在早期檢測到主要缺陷。
侷限性
較低級別的模組經常被忽略
需要許多存根
三明治測試
如前所述,三明治測試是自底向上和自頂向下方法的混合體。這意味著頂級模組和較低級別模組都作為一個系統進行整合和測試。因此,三明治測試也稱為混合整合測試。此測試需要使用存根和驅動程式。
如何執行三明治測試?
三明治測試過程可以分為五個步驟
步驟 1——準備測試計劃
步驟 2——開發測試場景、用例和指令碼
步驟 3——執行測試用例並報告缺陷
步驟 4——跟蹤缺陷並再次測試它們
步驟 5——重複步驟 3 和 4,直到整合成功完成
三明治測試的屬性
確定測試過程中要使用的方法或途徑
分配範圍和超出範圍的專案
分配角色和職責
滿足測試的前提條件
準備測試環境
準備風險和緩解計劃
整合測試的進入和退出標準
以下是進行整合測試的進入和退出標準
進入標準:
準備所有單元測試的元件或模組
修復並關閉所有高度關鍵的錯誤
完成所有模組的程式碼併成功整合它們
簽署並記錄所有整合測試計劃、測試用例和場景
設定所需的測試環境
退出標準
測試所有整合應用程式
記錄所有執行的測試用例
修復並關閉所有高度優先順序的錯誤
提交所有技術文件以及發行說明
在執行三明治測試之前,務必研究應用程式的架構設計。這有助於您更好地識別關鍵模組。測試人員可以聯絡架構團隊以獲取介面設計,以建立和驗證測試用例和介面詳細資訊。