單元測試一直都是考試的熱點,近幾年在上午題中出現的頻率很高。在進行單元測試時,測試人員需要依據詳細設計說明書和源程序清單,了解該模塊的I/O條件和模塊的邏輯結構,主要采用白盒測試的測試用例,再加上黑盒測試的測試用例,使之對任何合理的輸入和不合理的輸入,都能鑒別和響應。考試主要從單元測試的概念、階段和內容開展,為此總結了如下知識點供大家學習。
概念:單元測試又稱模塊測試,是針對軟件設計的最小單位——程序模塊, 進行正確性檢驗的測試工作。其目的在于發現各模塊內部可能存在的各種差錯。單元測試需要從程序的內部結構出發設計測試用例。多個模塊可以平行地獨立進行單元測試。
階段:單元測試按照軟件測試在開發階段的劃分,排在第一個階段,后面是集成測試。
單元測試的內容:在單元測試中進行的測試工作需要在以下五個方面對所測模塊進行檢查。
①模塊接口測試:在單元測試的開始,應對通過所測模塊的數據流進行測試。如果數據不能正確地輸入和輸出,就談不上進行其他測試。為此,對模塊接口可能需要如下的測試項目:
(1)調用所測模塊時的輸入參數與模塊的形式參數在個數、屬性、順序上是否匹配;
(2)所測模塊調用子模塊時,它輸入給子模塊的參數與子模塊中的形式參數在個數、屬性、順序上是否匹配;
(3)是否修改了只作輸入用的形式參數;
(4)輸出給標準函數的參數在個數、屬性、順序上是否正確;
(5)全局量的定義在各模塊中是否一致;
(6)限制是否通過形式參數來傳送。
當模塊通過外部設備進行輸入/輸出操作時,必須附加如下的測試項目:
(1)文件屬性是否正確;
(2)OPEN語句與CLOSE語句是否正確;
(3)規定的I/O格式說明與I/O語句是否匹配;
(4)緩沖區容量與記錄長度是否匹配;
(5)在進行讀寫操作之前是否打開了文件;
(6)在結束文件處理時是否關閉了文件;
(7)正文書寫/輸入錯誤,以及I/O錯誤是否檢查并做了處理。
②局部數據結構測試:模塊的局部數據結構是最常見的錯誤來源,應設計測試用例以檢查以下各種錯誤:
(1)不正確或不一致的數據類型說明;
(2)使用尚未賦值或尚未初始化的變量;
(3)錯誤的初始值或錯誤的缺省值;
(4)變量名拼寫錯或書寫錯誤;
(5)不一致的數據類型。
可能的話,除局部數據之外的全局數據對模塊的影響也需要查清。
③路徑測試:由于通常不可能做到窮舉測試,所以在單元測試期間要選擇適當的測試用例,對模塊中重要的執行路徑進行測試。應當設計測試用例查找由于錯誤的計算、不正確的比較或不正常的控制流而導致的錯誤。對基本執行路徑和循環進行測試,可以發現大量的路徑錯誤。
常見的不正確計算有:
(1)運算的優先次序不正確或誤解了運算的優先次序;
(2)運算的方式錯,即運算的對象彼此在類型上不相容;
(3)算法錯;
(4)初始化不正確;
(5)運算精度不夠;
(6)表達式的符號表示不正確。
常見的比較和控制流錯誤有:
(1)不同數據類型的相互比較;
(2)不正確的邏輯運算符或優先次序;
(3)因浮點數運算精度問題而造成的兩值比較不等;
(4)關系表達式中不正確的變量和比較符;
(5) "差1”錯,即不正確地多循環一次或少循環一次;
(6)錯誤的或不可能的循環中止條件;
(7)當遇到發散的迭代時不能中止的循環;
(8)不適當地修改了循環變量等。
④錯誤處理測試:比較完善的模塊設計要求能預見出錯的條件,并設置適當的出錯處理,以便在一旦程序出錯時,能對出錯程序重做安排,保證其邏輯上的正確性。這種出錯處理也應當是模塊功能的一部分。若出現下列情況之一, 則表明模塊的錯誤處理功能包含有錯誤或缺陷:
(1)出錯的描述難以理解;
(2)出錯的描述不足以對錯誤定位,不足以確定出錯的原因;
(3)顯示的錯誤與實際的錯誤不符;
(4)對錯誤條件的處理不正確;
(5)在對錯誤進行處理之前,錯誤條件已經引起系統的干預等。
⑤邊界測試:在邊界上出現錯誤是常見的,例如在一段程序內有一個n次循環,當到達第n次,重復時就可能會出錯。另外,在取最大值或最小值時也容易出錯。因此,要特別注意數據流、控制流中剛好等于、大于或小于確定的比較值時出錯的可能性。對這些地方要仔細地選擇測試用例,認真加以測試。