资源描述
按一下以編輯母片標題樣式,按一下以編輯母片本文樣式,第二階層,第三階層,第四階層,第五階層,By Robot Jiang,*,Chapter 18軟體測試策略(,Software Testing Strategies),四種主要的軟體測試步驟,除錯的藝術,1,By Robot Jiang,Chapter 18軟體測試策略(Software Tes,獨立測試群,(Independent test group,ITG),軟體測試的策略是由專案經理、軟體工程師和測試專家所發展的。,步驟是:開始於“小部分”然後逐漸推進到“大部分”。主要的四個步驟:單元測試、整合測試、驗證測試、系統測試。(這是本書的順序,某些人因為專案的大小規模不同,而認為順序是:單元、整合、系統、檢驗!),獨立測試群(ITG),只有在軟體架構完成後,才開始進入計畫。,2,By Robot Jiang,獨立測試群(Independent test group,I,單元測試-整合測試-驗證測試-系統測試。,為客戶訂製的軟體開發之後,必須實施一系列的接受度測試:,測試:由客戶在發展者端執行的測試。,測試:在發展者無法控制的環境中,讓多個用戶來進行的測試。,Debug可視為一種藝術,在除錯過程中有許多有用的資源,其中最有價值的是“其它軟體工程人員的意見”!,軟體測試步驟,3,By Robot Jiang,單元測試-整合測試-驗證測試-系統測試。軟,測試策略(Testing Strategy),單元測試(,unit test),整合測試(,integration test),驗證測試(,validation test),系統測試(,system test),4,By Robot Jiang,測試策略(Testing Strategy)單元測試(un,測試策略,(,Testing Strategy)-Fig18-1,5,By Robot Jiang,測試策略(Testing Strategy)-Fig18-1,測試策略,(,Testing Strategy)-Fig18-2,6,By Robot Jiang,測試策略(Testing Strategy)-Fig18-2,四種測試策略,單元測試:集中在個別模組中,大量使用白箱測試技術。,整合測試:黑箱技術為主,也可能有限量的白箱測試。,驗證測試:測試滿足所有功能、行為。-只用黑箱測試。,最後是系統工程(超出軟工範圍)的系統測試。,7,By Robot Jiang,四種測試策略單元測試:集中在個別模組中,大量使用白箱測試技,測試的完成?,“何時結束測試”?其中的一個答案是:“永不會結束,只是把負擔由發展者轉移到客戶身上!”,或是耗盡可用的時間、資源,就算完成!,可用統計方法來估計。,8,By Robot Jiang,測試的完成?“何時結束測試”?其中的一個答案是:“永不會結,測試的完成?-錯誤密度曲線fig18-3,9,By Robot Jiang,測試的完成?-錯誤密度曲線fig18-39By Robot,策略問題,在測試開始前,以,定量,的方式,確定產品需求。,明確敘述測試目標。,了解軟體的使用者與發展每個使用者類別的設定檔:描述使用者的use case.,發展強調“快速週期測試”的測試計劃:可快速回應,以便控制品質。,建立可自我測試的穩定軟體:以 antibugging 技術來設計。,在測試前使用正式技術複審(FTR)作為過濾器。,執行FTR來評估測試策略與Test Case本身。,為測試過程發展持續的改進方法。,antibugging:當錯誤發生時,能使錯誤條件被觸發,錯誤處理路徑被建立,因為重新開始或結束。You75,例如Basic中的on error.Goto 或resume。,10,By Robot Jiang,策略問題在測試開始前,以定量的方式,確定產品需求。10By,單元測試(Unit Testing)-1,待測模組(,module,to be tested),測試實例(,test cases),結果(,results),software,engineer,11,By Robot Jiang,單元測試(Unit Testing)-1待測模組(modu,單元測試的主要項目,模組介面:確定資訊適告的流入、流出單元。,區域資料結構:確定所存的資料在演算法執行的所有步驟,都保持完整性。,邊界條件測試:以確定在邊界處都正常。,確定所有的獨立路徑都至少被執行一次以上。,所有的錯誤處理路徑,均被測試,。,12,By Robot Jiang,單元測試的主要項目模組介面:確定資訊適告的流入、流出單元。,單元測試(Unit Testing)-2,interface,local data structures,boundary conditions,independent paths,error handling paths,module,to be,tested,test cases,13,By Robot Jiang,單元測試(Unit Testing)-2interface,單元測試的週邊環境,(,Unit Test Environment),待測的模組(,Module),假模組、虛擬模組(,stub),stub,驅動模組(,driver),輸出結果的總報告,interface,local data structures,boundary conditions,independent paths,error handling paths,test cases,未完成的子模組,就先用Stub來暫用。,輸入各種測試案例,14,By Robot Jiang,單元測試的週邊環境(Unit Test Environmen,整合測試的策略,(,Integration Testing Strategies),可能的方法:,用“B,ig Bang”方法(非增量整合法),常造成混亂,而不易除錯!,用增量整合法(incremental integration)是“Big Bang”的反面。有很多增量整合法,(1)由上而下的整合、(2)由下而上的整合、(3)三明治測試、(4)回歸測試、(5)煙霧測試,15,By Robot Jiang,整合測試的策略(Integration Testing St,Top Down Integration,top module is tested with,stubs,stubs are replaced one at,a time,depth first,as new modules are integrated,some subset of tests is re-run,A,B,C,D,E,F,G,由A,-B-C-D,16,By Robot Jiang,Top Down Integrationtop module,Bottom-Up Integration,drivers are replaced one at a,time,depth first,worker modules are grouped into,builds and integrated,A,B,C,D,E,F,G,Cluster(,或稱為,build),由cluster-B-A,最大優點是可以消除複雜的stub,17,By Robot Jiang,Bottom-Up Integrationdrivers a,三明治測試(,Sandwich Testing),Top modules are,tested with stubs,Worker modules are grouped into,builds and integrated,A,B,C,D,E,F,G,cluster,由cluster-B,而且由A-B,就像挖工洞時,由兩邊一齊動工。,18,By Robot Jiang,三明治測試(Sandwich Testing)Top mod,回歸測試(Regression testing),回歸測試是某些,測試子集合的再執行,。用來確定,“所作的新改變”未被延伸到意外的作用。,回歸測試是減少“副作用”的重要策略,。,主要包含有三種不同的Test Case,(1)所有功能的代表樣本。(2)集中在可能被改變影響的功能的額外測試。(3)集中在被改變的軟體文件的測試。,19,By Robot Jiang,回歸測試(Regression testing)回歸測試是,煙霧測試(Smoke testing),是為複雜、著重時間的專案而設計,可讓軟體團隊常常去評估其專案。,已被轉成程式碼的軟體元件被整合為“根基(build)”。一系列設計來揭露錯誤的測試,使根基能持續執行其功能。根基與其他根基整合,而且,整個產品“每日”作煙霧測試。整合方法可由下而下,或由下至上。,可被視為是周而複始的整合策略。軟體被每日重建與運用。,20,By Robot Jiang,煙霧測試(Smoke testing)是為複雜、著重時間的,整合測試的綜合,由上而下的缺點是:需要stub,以及伴隨而來的測試困難;優點是:可較早測試主控功能。,由下而上的缺點是:要最後一個模組加入後實體的程式才存在;優點是:易測試,而且不需stubs.,所以有三明治測試:兼具以上兩者的妥協方案。,重要模組要儘可能早測試,而回歸測試應集中在重要的模組功能。,21,By Robot Jiang,整合測試的綜合由上而下的缺點是:需要stub,以及伴隨而,高階測試(High Order)Testing,驗證測試(,validation test),系統測試(,system test),測試(客戶在發展者端測試),測試(客戶在發展者無法掌控的環境中測試)。,其他特別測試,22,By Robot Jiang,高階測試(High Order)Testing驗證測試(v,驗證測試(Vaildation testing),整合測試的終點是:軟體完整組裝成套件。發現並修正錯誤,如此便可開始最後的測試驗證測試。,是經由一系列驗證需求的黑箱測試來完成的。,應先定義將用於驗證與需求保持一致的測試案例。,組態複查(configuration review):確定所有元件均被發展。,、測試,23,By Robot Jiang,驗證測試(Vaildation testing)整合測試的,系統測試(System testing),本書,將軟體定位為系統元件的一個元素,所以軟體發展好後,最後要作系統整合與確認測試。,實際上本測試是一系列不同的測試。目的是要確保每個元件已被整合並執行所分配的功能。,24,By Robot Jiang,系統測試(System testing)本書,將軟體定位為,其他特別測試,回復測試:系統必須能從錯誤中回復並在預設的時間內重新開始。所以本測試是以各種方式強迫系統發生錯誤,來看系統回復是否正確。,安全性測試:為了驗證系統,可防備不適當的侵入。,若有足夠的時間、資源,系統難免會被入侵,但好的系統設計在於使入侵所花的代價比得到的代價高,!,壓力測試:在早期,黑、白箱是作正常功能的評估。而此測試是在作非正常情況下的檢驗。也就是以不正常的數量、頻率、容量來測試。,即“試圖破壞程式”!,績效(,Performance),測試:在整合所有元件後,才可確定實際績效。特別是重視績效的即時系統。,25,By Robot Jiang,其他特別測試回復測試:系統必須能從錯誤中回復並在預設的時間,除錯過程,(,Debugging:A Diagnostic Process),除錯不是測試,但它始終是測試的結果。,主要的結果有二,(1)發現錯誤原因,然後更正。(2)無法發現原因,就再設計一個Test Case來證實懷疑。再反覆修正錯誤。,26,By Robot Jiang,除錯過程(Debugging:A Diagnostic,除錯過程(Debugging Process),測試案例(,test cases),結果,除錯(,Debug
展开阅读全文