軟件測試培訓第28天
單元測試
單元測試是以程序設計說明書為指導,測試模塊範圍內的重要控制路徑,以揭露錯誤。
當程序編好以後,將它錄制在媒體上,或者直接由終端鍵盤輸入到機中進行調試。測試的相對復雜性和所發現的錯誤受到單元測試所限定的範圍的限制。它在執行的過程中緊密的依照程序框架對模塊進行測試(調試),測試包含入口和出口的參數,輸入和輸出信息,錯誤處理信息,部分邊界數值測試。需要在6個方面對所測模塊進行檢查。
1. 模塊接口測試
模塊接口測試是單元測試的基礎,當模塊通過外部設備進行輸入/輸出操作時,只有在數據能正確流入、流出模塊的前提下,模塊才能完成他的功能。
模塊接口測試應考慮下列因素:
★ 調用其他模塊時所給
★ 調用其他模塊時所給實際參數的個數是否與被調模塊的形參個數相同;
★ 調用其他模塊時所給實際參數的屬性是否與被調模塊的形參屬性匹配;
★ 調用預定義函數時所用參數的個數、屬性和次序是否正確;
★ 輸入的實際參數與形式參數的個數是否相同;
★ 輸入的實際參數與形式參數的屬性是否匹配;
★ 輸入的實際參數與形式參數的量綱是否一致;
★ 是否修改了只做輸入用的形式參數;
★ 是否存在與當前入口點無關的參數引用;
★ 是否修改了只讀型參數;
★ 對全程變量的定義各模塊是否一致;
★ 是否把某些約束作為參數傳遞。
★ 輸出給標準函數的參數在個數、屬性、順序上是否正確;
★ 限制是否通過形式參數來傳送;
★ 文件屬性是否正確;
★ OPEN/CLOSE語句是否正確;
★ 格式說明與輸入輸出語句是否匹配;
★ 緩沖區大小與記錄長度是否匹配;
★ 文件使用前是否已經打開;
★ 是否處理了輸入/輸出錯誤;
★ 輸出信息中是否有文字性錯誤;
★ 在結束文件處理時是否關閉了文件。
2.局部數據結構測試
局部數據結構是為了保證臨時存儲在模塊內的數據在程序執行過程中完整、正確的基礎。模塊的局部數據結構往往是錯誤的根源,力求發現最常見的幾類錯誤:
★ 不合適或不相容的類型說明;
★ 變量無初值;
★ 變量初始化或省缺值有錯;
★ 不正確的變量名(拼錯或不正確地截斷);
★ 出現上溢、下溢和地址異常。
3.路徑測試
應對模塊中重要的執行路徑進行測試。由於錯誤的計算、不正確的比較或不正常的控制流而導致執行路徑的錯誤。路徑錯誤應考慮下列因素:
★ 運算的優先次序不正確或誤解了運算的優先次序;
★ 運算的方式錯,即運算的對象彼此在類型上不相容;
★ 算法錯;
★ 初始化不正確;
★ 浮點數運算精度問題而造成的兩值比較不等;
★ 關系表達式中不正確的變量和比較符號表示不正確;
★ 不正確地多循環一次或少循環一次;
★ 錯誤的或不可能的循環終止條件;
★ 當遇到發散的叠代時不能終止的循環;
★ 不適當地修改了循環變量等。
4. 邊界條件測試
邊界條件測試是單元測試中最重要的一項任務。軟件經常在邊界上失效,邊界條件測試是一項基礎測試,也是後面系統測試中的功能測試的重點,邊界測試執行的較好,可以大大提高程序健壯性。邊界條件測試應考慮下列因素:
★ 程序內有一個n次循環,n次循環應是1~n, 出錯0~n;
★ 小於、小於等於、等於、大於、大於等於、不等於確定的比較值出錯;
★ 出現上溢、下溢和地址異常。
5.錯誤處理測試
比較完善的模塊設計要求能預見出錯的條件,並設置適當的出錯處理,以便在一旦程序出錯時,能對出錯程序重做安排,保證其邏輯上的正確性。這種出錯處理也應當是模塊功能的一部分。錯誤處理測試應考慮下列因素:
★ 出錯的描述難以理解;
★ 出錯的描述不足以對錯誤定位,不足以確定出錯的原因;
★ 顯示的錯誤與實際的錯誤不符;
★ 對錯誤條件的處理不正確;
★ 異常處理不當。
6.代碼書寫規範
代碼書寫規範應考慮下列因素:
★ 模塊設計程序框架流程圖;
★ 代碼書寫規範,對齊方式;
★ 代碼的註釋;
★ 參數類型,數據長度,指針,數組長度大小;
★ 輸入輸出參數和結果。
單元測試是對每個程序的單體調試。主要有以下幾步:
程序語法檢查;
程序邏輯檢查。
在程序的邏輯檢查之前,首先需要制作測試數據;即假設一些輸入數據和文件數據。測試數據直接影響了程序的調試工作,所以制作的數據應該滿足以下幾個條件:
數據應能滿足設計上要求的上下限及循環次數;
數據應滿足程序中的各種檢驗要求的錯誤數據;
數據應能適宜於人工對程序的檢查工作。
測試數據的內容包含4個方面:
正常的數據
不同的數據
錯誤的數據
大量的數據
通過以上不同角度的數據檢驗,證明程序邏輯是對的,程序的調試也就結束了。
在程序測試期,評價模塊的五個主要特性是:
★ 模塊接口;
★ 局部數據結構;
★ “重要”的執行路徑;
★ 錯誤處理路徑;
★ 影響上述幾點的界限條件。
在其它任何測試開始之前,需要測試橫穿模塊接口的數據流。如果數據不是正確地進入和退出,其它的測試就談不上。
在程序測試中接口測試的清單如下:
⑴ 輸入參數的數目是否等於變元的數目
⑵ 參數與變元的屬性是否匹配
⑶ 參數與變元的單位是否匹配
⑷ 傳送給被調用模塊的變元數是否等於參數的項目
⑸ 傳送給被調用模塊的變元屬性是否同參數屬性一致
⑹ 傳送給被調用模塊的變元單位是否同參數的單位一致
⑺ 屬於內部的函數屬性數目及變元次序是否正確
⑻ 對參數的任何訪問是否與當前的入口點無關
⑼ 輸入是否改動變元
⑽ 跨模塊的全程量定義是否相容
⑾ 限制是否作為變元來傳送
⑿ 參數是否被重復定義
表 測試說明書
程序名
|
功能名
|
調試日期 |
測試結果 |
|
|
|
|
數據制作方法: |
|||
測試方法: |
|||
測試問題: .單體程序測試問題 .功能程序測試問題 .子系統程序測試問題 .系統測試問題 |
軟件測試培訓第28天