1. 單元測試的任務
單元測試任務包括: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、錯誤陳述中未能提供足夠的定位出錯信息。
邊界條件測試是單元測試中最后,也是最重要的一項任務。眾的周知,軟件經常在邊界上失效,采用邊界值分析技術,針對邊界值及其左、右設計測試用例,很有可能發現新的錯誤。
2. 單元測試用例及用例設計
了解了單元測試的任務,下面介紹測試用例,測試用例也是單元測試的核心,決定你的單元測試是否成功。測試用例的核心是輸入數據。預期輸出是依據輸入數據和程序功能來確定的,也就是說,對于某一程序,輸入數據確定了,預期輸出也就可以確定了,至于生成/銷毀被測試對象和運行測試的語句,是所有測試用例都大同小異的。
單元測試測試用例一般采用邏輯覆蓋法和基本路徑法進行設計。
2.1. 邏輯覆蓋法
邏輯覆蓋是以程序內部的邏輯結構為基礎的測試用例設計技術,這一方法要求測試人員對程序的邏輯結構有清楚的了解。邏輯覆蓋可分為:語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋與路徑覆蓋。
1. 語句覆蓋就是設計若干個測試用例,運行所測程序,使得每一可執行語句至少執行一次。
2. 判定覆蓋就是設計若干個測試用例,運行所測程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次。
3. 條件覆蓋就是設計若干個測試用例,運行所測程序,使得程序中每個判斷的每個條件的可能取值至少執行一次。
4. 判定--條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執行一次,同時每個判斷的所有可能判斷結果也至少執行一次。
5. 條件組合覆蓋就是設計足夠的測試用例,運行所測程序,使得每個判斷的所有可能的條件取值組合至少執行一次。
6. 路徑測試就是設計足夠的測試用例,覆蓋程序中所有可能的路徑。
2.2. 基本路徑法
基本路徑測試法是在程序控制流圖的基礎上,通過分析控制構造的環路復雜性,導出基本可執行路徑集合,從而設計測試用例的方法。設計出的測試用例要保證在測試中程序的每個可執行語句至少執行一次?;韭窂綔y試法包括以下5個方面:
1. 程序的控制流圖:描述程序控制流的一種圖示方法。
2. 程序環境復雜性:McCabe復雜性度量;從程序的環路復雜性可導出程序基本路徑集合中的獨立路徑條數,這是確定程序中每個可執行語句至少執行依次所必須的測試用例數目的上界。
原文轉自:http://www.anti-gravitydesign.com