單元測試(又稱爲模塊測試)是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工做。程序單元是應用的最小可測試部件。在過程化編程中,一個單元就是單個程序、函數、過程等;對於面向對象編程,最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法。 編程
1 模塊接口測試(模塊接口測試是單元測試的基礎,只有在數據可以正確流入和流出模塊的狀況下,其餘測試纔有意義);數據結構
2 模塊局部數據結構測試(是爲了保證臨時存儲在模塊內的數據在程序執行過程當中完整、正確,在不少狀況下局部數據結構是錯誤的根源);ide
3 模塊邊界條件測試;函數
4 模塊中全部獨立執行通路測試;單元測試
5 模塊的各條錯誤處理通路測試。 測試
接口測試編碼
1 輸入的實際參數與形式參數的個數是否相同; spa
2 輸入的實際參數與形式參數的屬性是否匹配; 設計
3 輸入的實際參數與形式參數的量綱是否一致; 對象
4 調用其餘模塊時所給實際參數的個數是否與被調模塊的形參個數相同;
5 調用其餘模塊時所給實際參數的屬性是否與被調模塊的形參屬性匹配;
6 調用其餘模塊時所給實際參數的量綱是否與被調模塊的形參量綱一致;
7 調用預約義函數時所用參數的個數、屬性和次序是否正確;
8 是否存在與當前入口點無關的參數引用;
9 是否修改了只讀型參數;
10 對全程變量的定義各模塊是否一致;
11是否把某些約束做爲參數傳遞。
若模塊內包括外部輸入輸出,還應該考慮下列因素:
1 文件屬性是否正確;
2 OPEN/CLOSE語句是否正確;
3 格式說明與輸入輸出語句是否匹配;
4緩衝區大小與記錄長度是否匹配;
5文件使用前是否已經打開;
6是否處理了文件尾;
7是否處理了輸入/輸出錯誤;
8輸出信息中是否有文字性錯誤;
局部數據結構測試
1 不合適或不相容的類型說明;
2 變量無初值;
3 變量初始化或省缺值有錯;
4 不正確的變量名(拼錯或不正確地截斷);
5 出現上溢、下溢和地址異常。
注意:除了局部數據結構外,若是可能,單元測試時還應該檢查全局數據對模塊的影響。
獨立執行通路測試
在模塊中應對每一條獨立執行路徑進行測試,單元測試的基本任務是保證模塊中每條語句至少執行一次。此時設計測試用例是爲了發現因錯誤計算、不正確的比較和不適當的控制流形成的錯誤。此時基本路徑測試和循環測試是最經常使用且最有效的測試技術。
計算中常見的錯誤:
1 誤解或用錯了算符優先級;
2混合類型運算;
3變量初值錯;
4精度不夠;
5表達式符號錯。
6不一樣數據類型的對象之間進行比較;
7錯誤地使用邏輯運算符或優先級;
8因計算機表示的侷限性,指望理論上相等而實際上不相等的兩個量相等;
9比較運算或變量出錯;
10循環終止條件或不可能出現;
11迭代發散時不能退出;
12錯誤地修改了循環變量。
各條錯誤處理通路測試
1輸出的出錯信息難以理解;
2記錄的錯誤與實際遇到的錯誤不相符;
3在程序自定義的出錯處理段運行以前,系統已介入;
4異常處理不當;
5錯誤陳述中未能提供足夠的定位出錯信息。
邊界條件測試
邊界條件測試是單元測試中最後,最重要的一項任務。軟件常常在邊界上失效,採用邊界值分析技術,針對邊界值及其左、右設計測試用例,頗有可能發現新的錯誤。
通常認爲單元測試應緊接在編碼以後,當源程序編制完成並經過複審和編譯檢查,即可開始單元測試。測試用例的設計應與複審工做相結合,根據設計信息選取測試數據,將增大發現上述各種錯誤的可能性。在肯定測試用例的同時,應給出指望結果。
應爲測試模塊開發一個驅動模塊(driver)和(或)若干個樁模塊(stub),下圖顯示了通常單元測試的環境。驅動模塊在大多數場合稱爲「主程序」,它接收測試數據並將這些數據傳遞到被測試模塊,被測試模塊被調用後,「主程序」打印「進入-退出」消息。
驅動模塊和樁模塊是測試使用的軟件,而不是軟件產品的組成部分,但它須要必定的開發費用。若驅動和樁模塊比較簡單,實際開銷相對低些。可是僅用簡單的驅動模塊和樁模塊不能完成某些模塊的測試任務,這些模塊的單元測試只能採用下面討論的綜合測試方法。
提升模塊的內聚度可簡化單元測試,若是每一個模塊只能完成一個,所需測試用例數目將顯著減小,模塊中的錯誤就很容易被發現了。