2011年1月31日 星期一

軟體測試的分類

以測試型態來分可分為三類:

                                         
                                                                                                                                             
建構性測試(Construction Testing)
屬於前置性的測試,它主要是偏重於程式端的功能測試,以確保程式執行運作正常。
這類的測試通常是由程式開發人員自己來進行,必要時也要自行開發測試工具。
系統測試(System Testing)
屬於中後期的整合測試,所進行的測試是以使用者的觀點為主,也就是模擬外界世界的使用者會如何的使用產品。
系統測試也稱為QA Testing,測試人員通常為專業的系統測試工程師擔任。
特殊測試(Special Testing)
進行的測試需要花費更多的時間與人力才能完成。


就測試模式而言,可分為兩大方法

                                         
                                                                                                                                             
白箱測試(White Box Testing)
白箱測試也稱為結構性測試(Structural Testing),有時候因為牽涉到內部機密的問題,這種測試方法大都是在公司內部進行很少委外給其他公司或個人。 嚴格來說,白箱測試有兩大層面;資料流程面(Data Flow Coverage)以及控制流程面(Control Flow Coverage),資料流程面就是測試資料在系統的進出入於程式內所經過的流程,控制流程面就是測試程式在執行過程中每個階段的流程。 
黑箱測試(Black Box Testing)
不需要對軟體的結構性有足夠深層的瞭解,所進行的測試是著重於軟體的功能面,所以也有人稱之為功能測試。 這樣的測試除了在自己公司內部進行之外,同樣的也可以委外給其他人員或是公司去執行。 為了要控制黑箱測試的執行,測試人員必須要按照測試案例(Test Cases)來逐一進行,所以Test Cases設計的好壞就會直接影響到測試結果。  


白箱測試與黑箱測試重點不同:
白箱測試是以測試的深度為主,這種測試需要走過程式結構的每一層
而黑箱測試是以測試的廣度為主。所謂廣度是指需求規格書中的每一項需求是否都在測試個案中得到設計,也就是我們一般所說的測試涵蓋度。但為不使黑箱測試設計流於表面,通常我們還會透過閱讀 SRS,以挖掘可能存在問題的地方。例如依次執行訂單的新增、刪除、新增同一筆資料,看是否能正常工作,因為有時基於某些原因,系統並不會理所當然的正常執行,在一些重要的工作上,眼見為憑是最基本的要求。以前就遇過一個系統在某一個查詢功能上,重複點選<查詢>五次之後,系統就會出現查詢失敗的訊息。經過工程師 Debug 之後,發現是由於某些資源未完全釋放的原因所導致。