摘要:覆蓋測試是驗證軟件功能結構正確性以及查找問題的非常重要的方法和手段,它要借助一定的工具才能取得較好的效果,滿足軟件在質量和時間上的雙重要求(純粹的人工測試工作量大、不方便、周期長)。如何利用好這方面比較成熟的工具,對其機理的研究及適應性改造是很重要。本文著重描述這類工具的工作機理,以及對嵌入式軟件測試的特殊要求,并以對自主知識產權嵌入式操作系統的測試為例進行說明。
關鍵詞:嵌入式操作系統 覆蓋測試 軟件測試工具
1 概述
軟件測試是很廣的概念。從其貫穿軟件生命周期全過程來看,測試可分為模塊測試、集成測試、系統測試等階段。測試還可分為靜態檢查和動態運行測試兩大類。在動態運行測試中,又可有基于程序結構的白盒測試(或稱為覆蓋測試)和基于功能的黑盒測試。測試不僅關注程序的功能,還有性有測試、強度測試等等。
要達到比較好的測試效果,除了要有周全的測試計劃、本文具體討論了對一類特殊的系統軟件——嵌入式實時操作系統——進行覆蓋測試的情況。內容涉及對這類軟件特性的研究、測試的難點和特點、對現有測試工具的適應性改造和測試實例說明。
2 軟件覆蓋測試
覆蓋是一種白盒測試方法,測試人員必須擁有程序的規格說明和程序清單,以程序的內部結構為基礎,來設計測試案例。其基本準則是則測試案例來盡可能多地覆蓋程序的內部邏輯結構,發現其中的錯誤和問題。所以,覆蓋測試一般應用在軟件測試的早期,即單元測試階段。
覆蓋的幾種方法或策略如表1所列。
表1 幾種典型的覆蓋策略
覆蓋策略 | 定 義 |
語句覆蓋 | 在制定測試案例時,使程序中的每個語句都至少執行1次。其缺點是不能發現某些邏輯錯誤 |
判定覆蓋 | 執行足夠的測試案例,使得程序中每個判定都獲得一次“真”值和“假”值,或者說使每一個分支都至少通過1次 |
條件覆蓋 | 執行足夠的測試案例,使得判定中的每個條件獲得各種可能的結果 |
判定/條件覆蓋 | 執行足夠的測試案例,使得判定中的每個條件取得各種可能的值,并使得每個判定取得各種可能的結果 |
條件組合覆蓋 | 執行足夠的測試案例,使得每個判定中的條件的各種組合都至少出現1次。其特點是覆蓋較充分,滿足條件組合覆蓋的測試案例也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋。 |
從以上簡要介紹可看出,這幾種覆蓋策略的嚴格程序有如下趨勢:
其它一些覆蓋策略還包括:修改的條件/判斷覆蓋(通常簡稱為MCDC)、路徑覆蓋、函數覆蓋、調用覆蓋、線性代碼順序和跳轉覆蓋、數據流覆蓋、目標代碼分支覆蓋、循環覆蓋、關系操作符覆蓋等。隨著軟件規模的增長,實現全面的覆蓋所需的測試案例的數目也越來越龐大,因此根據被測軟件對象的特點選擇適當的覆蓋策略是非常重要的;同時,要確定合理測試目標,達到100%的覆蓋往往要付出很大的代價,應該同形式化評審等方法結合,以發現更多的軟件故障。
原文轉自:http://www.anti-gravitydesign.com