單元測試與單元測試的基本方法 軟件測試
一、什么是單元測試
測試是軟件開發的重要環節之一。按照軟件開發的過程測試可分為:單元測試、集成測試、系統測試等。在本文中,我們主要討論面向程序員的單元測試。
什么是單元測試?單元測試就是開發者編寫的一小段代碼,用于檢驗被測代碼的一個很小的、很明確的功能是否正確。舉個例子,工廠在組裝一臺電視機之前,會對每個元件都進行測試,這就是單元測試。一般而言,軟件開發中的單元測試是指對方法的測試。
單元測試是軟件開發過程中重要的質量保證活動,單元測試的質量將很大程度上影響軟件產品的最終質量。單元測試是對軟件基本組成單元進行的測試,是屬于白盒測試的范疇,它主要通過對代碼的邏輯結構進行分析來設計測試用例。
一個完整的單元測試說明應該包含正面測試(Positive Testing)和負面的測試(Negative Testing)。正面測試驗證程序應該執行的工作,負面測試驗證程序不應該執行的工作。
什么是測試用例?測試用例(Test Case)是為某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或核實是否滿足某個特定需求。
二、單元測試的基本方法
單元測試的對象是軟件設計的最小單位――模塊。單元測試的依據是詳細設描述,單元測試應對模塊內所有重要的控制路徑設計測試用例,以便發現模塊內部的錯誤。單元測試多采用白盒測試技術,系統內多個模塊可以并行地進行測試。 單元測試任務單元測試任務包括:1 模塊接口測試;2 模塊局部數據結構測試;3 模塊邊界條件測試;4 模塊中所有獨立執行通路測試;5 模塊的各條錯誤處理通路測試。
模塊接口測試是單元測試的基礎。只有在數據能正確流入、流出模塊的前提下,其他測試才有意義。測試接口正確與否應該考慮下列因素:1 輸入的實際參數與形式參數的個數是否相同;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出現上溢、下溢和地址異常。
除了局部數據結構外,如果可能,單元測試時還應該查清全局數據(例如FORTRAN的公用區)對模塊的影響。
在模塊中應對每一條獨立執行路徑進行測試,單元測試的基本任務是保證模塊中每條語句至少執行一次。此時設計測試用例是為了發現因錯誤計算、不正確的比較和不適當的控制流造成的錯誤。此時基本路徑測試和循環測試是最常用且最有效的測試技術。計算中常見的錯誤包括:1 誤解或用錯了算符優先級;2混合類型運算;3變量初值錯;4精度不夠;5表達式符號錯。
比較判斷與控制流常常緊密相關,測試用例還應致力于發現下列錯誤:1不同數據類型的對象之間進行比較;2錯誤地使用邏輯運算符或優先級;3因計算機表示的局限性,期望理論上相等而實際上不相等的兩個量相等;4比較運算或變量出錯;5循環終止條件或不可能出現;6迭代發散時不能退出;7錯誤地修改了循環變量。
一個好的設計應能預見各種出錯條件,并預設各種出錯處理通路,出錯處理通路同樣需要認真測試,測試應著重檢查下列問題:1輸出的出錯信息難以理解;2記錄的錯誤與實際遇到的錯誤不相符;3在程序自定義的出錯處理段運行之前,系統已介入;4異常處理不當;5錯誤陳述中未能提供足夠的定位出錯信息。
邊界條件測試是單元測試中最后,也是最重要的一項任務。眾的周知,軟件經常在邊界上失效,采用邊界值分析技術,針對邊界值及其左、右設計測試用例,很有可能發現新的錯誤。
文章來源于領測軟件測試網 http://www.kjueaiud.com/