與開發過程類似,測試過程必須分步進行,後一個步驟在邏輯上是前一個步驟的繼續。軟體從編碼結束到交付到使用者使用,需要經過單元測試、組裝測試、驗收測試和系統測試四個步驟。
一、單元測試
單元測試是軟體測試的第一步,針對軟體設計的最小單位——程式模組,進行正確性檢驗的測試工作。通常,單元測試和編碼屬於軟體工程工程的同一個階段。在編寫出來源程式代碼並通過編譯器的語法檢查之後,就可以進行單元測試工作,目的在於發現模組內部可能存在的各種出錯。多個模組可以進行平行地獨立進行單元測試。
1)、單元測試的內容
(1)、模組介面測試
I、模組的形參和其驅動模組送來的參數的個數、類型、次序是否一致;
II、模組i傳送給被調用模組的參數與其裝模組的參數的個數、類型和次序是否一致;
III、模組傳送給庫函數的變數個數、類型次序是否正確;
IV、全域變數的定義和用法在各個模組中時候一致;
V、所使用的外部檔案的屬性是否正確,開啟檔案的語句是否正確,緩衝區大小是否與記錄長度相匹配,檔案結束判斷處理是否一致。
(2)、局部資料結構測試
模組內部資料是否完整,內容、形式、相互關係是否有錯常常是軟體錯誤的主要來源。
I、錯誤或不相容的資料說明或使用了尚未初始化的變數;
II、錯誤的初始值或不正確的預設值;
III、錯誤變數名或資料類型不相容;
IV、溢出(上溢或下溢)或地址異常;
V、全域資料對模組i測試的影響。
(3)、重要路徑測試
由於通常不能進行窮盡測試,因此,在單元測試期間應選擇最有代表性、最可能發現錯誤的執行路徑進行測試。重要路徑測試方案應重點測試由於錯誤計算、不正確的比較或不適當的控制流程而造成的錯誤。常見錯誤如下:
I、運算的次序錯誤(誤用了運算子的優先順序);
II、混合運算對象的類型彼此不相容;
III、變數初始值不正確;
IV、精度不夠,或由於精度問題兩個量不可能相等時,程式中卻期待著相等條件的出現;
V、錯誤地修改迴圈變數,錯誤的或不可能達到的迴圈終止條件;
VI、“差1”錯(多迴圈1次或少迴圈1次)
VII、當遇到發散的迴圈迭代時迴圈不能制止。
(4)、錯誤處理測試
好的模組設計應能預見出錯的條件,並設定相應的儲蓄哦處理。這樣,程式一旦發生錯誤就會按照預定的方法進行處理,保證邏輯上的正確性。這種錯誤處理應當是模組功能的一部分,也應是測試的內容之一。對錯誤處理進行測試時應重點考慮下列問題:
I、對可能出現錯誤的描述是否難以理解;
II、出錯的描述不足以對錯誤定位,或足以確定出錯的原因;
III、顯示的錯誤與實際的錯誤不符;
IV、對錯誤的條件處理不正確;
V、在對錯誤進行處理之前,錯誤條件已經引起系統的幹預。
(5)邊界測試
邊界測試是單元測試中最後的、也肯能是最重要的工作。程式常常在邊界上出現錯誤。
例子:在一段程式內有一個n次迴圈,當達到第n次迴圈時就有可能出錯。因此,要特別注意資料流、控制流程中恰好等於、大於或下於確定的比較值時出錯的可能性。要精心設計測試案例對這些地方進行測試。
2)、單元測試的步驟
當每個模組模組的代碼編製完成,並經過評審和驗證確認沒有語法錯誤後,就可以進行單元測試。單元測試的步驟:
(1)、配置測試環境
模組是軟體中的一個單獨的編譯模組,而不是一個單獨的執行單位。因此,測試時要為模組設計兩類附加模組——驅動模組和樁模組。構成測試環境。
(2)、編寫測試資料
主要採用白盒測試案例,以路徑覆蓋為最佳測試準則,同時輔助以黑箱測試用例,使之對任何合理的輸入和不合理的輸入都能鑒別和相應。
(3)、進行多個模組的並行測試
二、整合測試
整合測試的主要目標是發現與介面有關的問題。例如:
穿越模組介面的資料可能丟失;
一個模組可能對另一個模組產生不利影響;
各個功能組合起來並未實現主功能;
全域資料可能有問題等等……
整合測試根據模組組裝方式體現兩種測試方式:非漸增式測試和漸增式測試。
1、非漸增式測試
非漸增式測試是把已經過測試的所有模組一次性組裝起來,然後進行整體測試。對於大的工程,這樣難度是很大的,所以使用較少。
2、非漸增式測試
1)、自頂向下整合
這種整合方式是從主控模組開始,沿著控制層次自頂向下進行組裝。具體步驟可分為:
I、測試主控制模組
II、根據選定的添加策略每次用一個實際模組代替一個樁模組,再用相應的樁模組代替該實際模組的直屬員工模組,與已測試的模組或子系統組裝成新的系統。測試新加入模組
III、迴歸測試。
IV、重複上述I和II,知道所有模組均組裝到系統中為止。
自頂向下整合方式的缺點是需要建立樁模組,並存在一個邏輯次序問題。
2)、自底向上整合
三、驗收測試
整合測試消除了軟體介面的錯誤,系統已成為完整的軟體包。要收測試主要由使用者參加測試,檢驗軟體規格說明的技術標準的符合程度,是保證軟體品質的最後關鍵環節。驗收測試工作主要包括有效性測試和軟體配置複查兩方面。
有效性測試在開發環境下運行黑箱測試,驗證軟體是否滿足需求規格說明書類列出的需求。對軟體的可移植性、相容性、出錯自動回複、可維護性等進行測試。如果功能和效能與使用者要求一致,則通過;如果有差距的話,就提交一份問題報告
軟體配置複查保證軟體配置的所有成分都齊全,各方面的品質都符合要求,文檔內容與程式完全一致,具有軟體維護階段所必需的細節,而且全部文檔到已經編號目錄。除此職位,還要進行阿爾法測試或者貝塔測試。
四、系統測試
系統測試是將驗收測試的軟體,作為基於電腦系統的一個元素,與電腦硬體、外設、某些支援軟體、資料和人員等其他系統元素結合在一起進行的綜合測試。包括恢複測試、安全性測試、強度測試三個方面。