測試的階段
從過程來看,軟件測試是由一系列的不同測試階段所組成的,這些階段分為:規格說明書審查,系統和程序設計審查,單元測試,集成測試(組裝測試),功能測試,確認測試,系統測試,驗收測試和安裝測試.軟件開發的過程是自頂向下的,測試則正好相反,以上這些過程就是自底向上,逐步集成的.當然,這裡闡述的測試過程是一個完整的過程,對於不同的軟件系統或產品可以進行適當的裁減或合併,如功能測試和確認測試可以合併為確認測試,驗收測試和安裝測試可以合併為驗收測試.
1.規格說明書審查
需求分析規格說明書是否完整,正確,清晰是軟件開發成敗的關鍵.為了保證需求定義的質量,應對其進行嚴格的審查.
測試人員要參與系統或產品需求分析,認真閱讀有關用戶需求分析文檔,真正理解客戶的需求,檢查規格說明書對產品描述的準確性,一致性等,為今後熟悉應用系統,編寫測試計畫,設計測試用例等做好準備工作
2.系統和程序設計審查
軟件設計是基於對用戶需求的理解基礎上,借助計算機技術,將客戶的需求轉換成計算機軟件表示的過程,其設計的結果能描述出系統結構和邏輯,數據輸入,詳細處理過程,數據存儲模式,數據輸出等.例如,可以按照需求規格說明書對系統結構的合理性,處理過程的正確性進行評價,同時利用關係數據庫的規範化理論對數據庫模式進行審查.
代碼會審是一種靜態的白盒子測試方式,是由一組人通過閱讀,討論來審查程序結構,代碼風格,算法等的過程.會審小組由組長,3~5名程序設計人員,編程人員和測試人員組成.會審小組在充分閱讀待審程序文本,控制流程圖及有關要求,規範等文件基礎上,召開代碼會審會,程序員逐句將解程序的邏輯並回答其他人員提出的問題,對有爭議的問題進行討論,以達成一致意見或得到解決方案.實踐表明,代碼會審做得好的話可以發現大部分程序缺陷,甚至程序員在自己講解過程中就能發現不少代碼錯誤,而討論可能進一步促使問題暴露.例如,對某個全局變量的默認值改變或某個參數變量選項改變的討論,結構的調整,參數的優化,最終改善軟件的質量.
3.單元測試
單元測試的對象是程序系統中的最小單元--模塊或組件,在編碼階段進行,針對每個模塊進行測試,主要使用白盒測試方法,從程序的內部結構出發設計測試用例,檢查程序模塊或組件已實現的功能與定義的功能是否一致,以及編碼中是否存在錯誤.多個模塊可以平行地,對立地測試,通常要編寫驅動模塊和桩模塊.
由於模塊規模小,功能單一,邏輯簡單,測試人員有可能通過模塊說明書和源程序清楚地了解該模塊的I/O條件和模塊的邏輯結構.採用結構測試(白盒法)的用例,盡可能達到徹底測試,然後輔以功能測試(黑盒法)的用例,使之對任何合理和不合理的輸入都能鑑別和響應.高可靠性的模塊是組成可靠系統的堅實基礎.
單元測試是測試執行的開始階段,而且與程序設計和實現有非常緊密的關係,所以單元測試一般由編程人員和測試人員共同完成,編程人員有時起主要作用.在單元測試中,除了上述的I/O條件,程序邏輯結構,程序路徑等實際測試手段之外,還會採取其他輔助手段,如代碼走讀(code review),靜態分析(static analysis)和動態分析(dynamic analysis)等.
4.集成測試
集成測試,也稱組裝測試,聯合測試,子系統測試,在單元測試的基礎上,將模塊按照設計要求組裝起來同時進行測試,主要目的是發現與接口有關的模塊之間的問題.如數據穿過模塊接口時可能丟失;一個模塊與另一個模塊可能有由於疏忽的問題而造成有害影響;把子功能組合起來可能不產生預期的主功能;單個模塊的誤差累積起來,是否會放大,從而達不到能接受的程度;全程數據結構是否有錯誤等.
選擇什麼樣的方式把模塊組裝起來形成一個可運行的系統,直接影響到測試成本,測試計畫,測試用例的設計,測試工具的選擇等.通常有兩種集成方式;一次性集成方式和增殖式集成方式.
一次性集成方式:也稱整體組裝.首先對每個模塊分別進行模塊測試,然後再把所有模塊組裝在一起進行測試,最終得到要求的軟件系統.
增殖式集成方式:也稱漸增式組裝.首先對一個個模塊進行單元測試,然後將這些模塊逐步組裝成較大的系統.在組裝的過程中,一邊連接一邊測試,以發現連接過程中產生的問題,最後通過增殖逐步組裝成為要求的軟件系統.
集成測試應提交集成測試計畫,集成測試規格說明和集成測試分析報告.
5.功能測試
功能測試一般須在完成集成測試後進行,而且是針對應用系統進行測試.功能測試是基於產品功能說明書,是在已知產品所應具有的功能,從用戶角度來進行功能驗證,以確認每個功能是否都能正常使用.在測試時,不考慮程序內部結構和實現方式,只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息,並且保持外部信息(如數據庫或文件)的完整性.功能測試包括用戶介面測試,各種操作測試(菜單,按鈕等),不同的數據輸入,不同的邏輯思路,數據輸出和存儲等.
6.確認測試
確認測試的目的是向未來的用戶表明系統能夠按照預定需求那樣工作.經集成測試後,已經按照設計把所有的模塊組裝成一個完整的軟件系統,接口錯誤也已經基本排除了,接著就應該進一步驗證軟件的有效性,這就是確認測試的任務,即軟件的功能和性能達到用戶合理的期待.
確認測試也稱有效性測試,驗證軟件的功能和性能及其他特性是否與用戶的要求一致.如果加入用戶信息,也稱驗收測試.基於需求規格說明書和用戶信息,驗證軟件的功能和性能及其他特性.確認測試步驟如下:
(1)進行有效性測試.有效性測試是在模擬的環境(可能就是開發環境)下,應用黑盒測試的方法,驗證所測試軟件是否滿足需求規格說明書列出的需求.因此,需要制定測試計畫,測試步驟,測試種類,測試用例.
(2)軟件配置複查.
7.系統測試
軟件開發完成以後,最終還要與系統中其他部分配套運行,進行系統測試.系統測試是將軟件放在整個計算機環境下,包括軟硬件平台,某些支持軟件,數據和人員等,在實際運行環境下進行一系列的測試,包括恢復測試,安全測試,強度測試和性能測試等.
經過上述的測試過程對軟件進行測試後,軟件基本滿足開發的要求,測試宣告結束,經驗收後,將軟件提交用戶.
8.驗收測試
驗收測試的目的是向未來的用戶表明系統能夠像預定要求那樣工作.經集成測試後,已經按照設計把所有的模塊組裝成一個完整的軟件系統,接口錯誤也已經基本排除了,接著就應該進一步驗證軟件的有效性,這就是驗收測試的任務,即軟件的功能和性能如同用戶所合理期待的那樣.
9.安裝測試
安裝測試是指按照軟件產品安裝手冊或相應的文檔,在一個和用戶使用該產品完全一樣的環境中或相當於用戶使用的環境中,進行一步一步安裝的同時所做的測試.安裝測試主要進行以下三個方面的測試:
(1)環境的不同設置或配置.強調用戶的使用環境,考慮各種環境因素的影響,如在一個完全嶄新,非常乾淨的操作系統或應用系統上進行某個產品的安裝,或者是考慮各種硬件接口的要求.
(2)安裝文檔的準確性.進行安裝測試時,必須一步一步地完全按照文檔去做,不能下意識地使用自己已有的經驗或知識.
(3)安裝的媒體製作是否有問題,包括最後製作時可能會丟了一個文件,或感染上計算機病毒等.
安裝測試有時容易被忽略,如果沒做好,可能造成的損失依然很大,如必須換回全部安裝盤或重印安裝手冊,技術支持負擔很大,所以安裝測試也是重要的一個測試階段.
浙公网安备 33010602011771号