1、Chapter 18軟體測試策略(Software Testing Strategies)四種主要的軟體測試步驟除錯的藝術1By Robot Jiang獨立測試群(Independent test group,ITG)軟體測試的策略是由專案經理、軟體工程師和測試專家所發展的。步驟是:開始於“小部分”然後逐漸推進到“大部分”。主要的四個步驟:單元測試、整合測試、驗證測試、系統測試。(這是本書的順序,某些人因為專案的大小規模不同,而認為順序是:單元、整合、系統、檢驗!)獨立測試群(ITG),只有在軟體架構完成後,才開始進入計畫。2By Robot Jiang單元測試-整合測試-驗證測試-系統測試。
2、為客戶訂製的軟體開發之後,必須實施一系列的接受度測試:測試:由客戶在發展者端執行的測試。測試:在發展者無法控制的環境中,讓多個用戶來進行的測試。Debug可視為一種藝術,在除錯過程中有許多有用的資源,其中最有價值的是“其它軟體工程人員的意見”!軟體測試步驟3By Robot Jiang測試策略(Testing Strategy)單元測試單元測試(unit test)整合測試整合測試(integration test)驗證測試驗證測試(validation test)系統測試系統測試(system test)4By Robot Jiang測試策略(Testing Strategy)-Fig18-
3、15By Robot Jiang測試策略(Testing Strategy)-Fig18-26By Robot Jiang四種測試策略單元測試:集中在個別模組中,大量使用白箱測試技術。整合測試:黑箱技術為主,也可能有限量的白箱測試。驗證測試:測試滿足所有功能、行為。-只用黑箱測試。最後是系統工程(超出軟工範圍)的系統測試。7By Robot Jiang測試的完成?“何時結束測試”?其中的一個答案是:“永不會結束,只是把負擔由發展者轉移到客戶身上!”或是耗盡可用的時間、資源,就算完成!可用統計方法來估計。8By Robot Jiang測試的完成?-錯誤密度曲線fig18-39By Robot J
4、iang策略問題在測試開始前,以定量定量的方式,確定產品需求。明確敘述測試目標。了解軟體的使用者與發展每個使用者類別的設定檔:描述使用者的use case.發展強調“快速週期測試”的測試計劃:可快速回應,以便控制品質。建立可自我測試的穩定軟體:以 antibugging 技術來設計。在測試前使用正式技術複審(FTR)作為過濾器。執行FTR來評估測試策略與Test Case本身。為測試過程發展持續的改進方法。antibugging:當錯誤發生時,能使錯誤條件被觸發,錯誤處理路徑被建立,因為重新開始或結束。You75例如Basic中的on error.Goto 或resume。10By Robot
5、 Jiang單元測試(Unit Testing)-1待測模組待測模組(moduleto be tested)測試實例測試實例(test cases)結果結果(results)softwareengineer11By Robot Jiang單元測試的主要項目模組介面:確定資訊適告的流入、流出單元。區域資料結構:確定所存的資料在演算法執行的所有步驟,都保持完整性。邊界條件測試:以確定在邊界處都正常。確定所有的獨立路徑都至少被執行一次以上。所有的錯誤處理路徑,均被測試。12By Robot Jiang單元測試(Unit Testing)-2interface local data structure
6、sboundary conditionsindependent pathserror handling pathsmoduleto betestedtest cases13By Robot Jiang單元測試的週邊環境(Unit Test Environment)待測的模組待測的模組(Module)假模組、假模組、虛擬模組虛擬模組(stub)stub驅動模組驅動模組(driver)輸出結果的總報告輸出結果的總報告interface local data structuresboundary conditionsindependent pathserror handling pathstest
7、cases未完成的子模組,就先用Stub來暫用。輸入各種測試案例14By Robot Jiang整合測試的策略(Integration Testing Strategies)可能的方法可能的方法:用用“Big Bang”方法方法(非增量整合法非增量整合法),常造成混亂,而不易除錯!常造成混亂,而不易除錯!用用增量增量整合法整合法(incremental integration)是是“Big Bang”的反面。有很多增量整合法的反面。有很多增量整合法(1)由上而下的整合、由上而下的整合、(2)由下而上的整合、由下而上的整合、(3)三明治測試、三明治測試、(4)回歸測試、回歸測試、(5)煙霧測試煙
8、霧測試15By Robot JiangTop Down Integrationtop module is tested with stubsstubs are replaced one at a time,depth firstas new modules are integrated,some subset of tests is re-runABCDEFG由A-B-C-D16By Robot JiangBottom-Up Integrationdrivers are replaced one at a time,depth firstworker modules are grouped i
9、nto builds and integratedABCDEFGCluster(或稱為或稱為build)由cluster-B-A最大優點是可以消除複雜的stub17By Robot Jiang三明治測試三明治測試(Sandwich Testing)Top modules aretested with stubsWorker modules are grouped into builds and integratedABCDEFGcluster由cluster-B,而且由A-B就像挖工洞時,由兩邊一齊動工。18By Robot Jiang回歸測試(Regression testing)回歸測試是
10、某些測試子集合的再執行。用來確定,“所作的新改變”未被延伸到意外的作用。回歸測試是減少“副作用”的重要策略。主要包含有三種不同的Test Case(1)所有功能的代表樣本。(2)集中在可能被改變影響的功能的額外測試。(3)集中在被改變的軟體文件的測試。19By Robot Jiang煙霧測試(Smoke testing)是為複雜、著重時間的專案而設計,可讓軟體團隊常常去評估其專案。已被轉成程式碼的軟體元件被整合為“根基(build)”。一系列設計來揭露錯誤的測試,使根基能持續執行其功能。根基與其他根基整合,而且整個產品整個產品“每日每日”作煙霧測試。整合方法可由下作煙霧測試。整合方法可由下而下
11、,或由下至上。而下,或由下至上。可被視為是周而複始的整合策略。軟體被每日重建與運用。20By Robot Jiang整合測試的綜合由上而下的缺點是:需要stub,以及伴隨而來的測試困難;優點是:可較早測試主控功能。由下而上的缺點是:要最後一個模組加入後實體的程式才存在;優點是:易測試,而且不需stubs.所以有三明治測試:兼具以上兩者的妥協方案。重要模組要儘可能早測試,而回歸測試應集中在重要的模組功能。21By Robot Jiang高階測試(High Order)Testing驗證測試驗證測試(validation test)系統測試系統測試(system test)測試測試(客戶在發展者端
12、測試客戶在發展者端測試),測試測試(客戶在發展者客戶在發展者無法掌控的環境中測試無法掌控的環境中測試)。其他特別測試其他特別測試22By Robot Jiang驗證測試(Vaildation testing)整合測試的終點是:軟體完整組裝成套件。發現並修正錯誤,如此便可開始最後的測試驗證測試。是經由一系列驗證需求的黑箱測試來完成的。應先定義將用於驗證與需求保持一致的測試案例。組態複查(configuration review):確定所有元件均被發展。、測試23By Robot Jiang系統測試(System testing)本書,將軟體定位為系統元件的一個元素,所以軟體發展好後,最後要作系統
13、整合與確認測試。實際上本測試是一系列不同的測試。目的是要確保每個元件已被整合並執行所分配的功能。24By Robot Jiang其他特別測試其他特別測試回復測試:系統必須能從錯誤中回復並在預設的時間內重新開始。所以本測試是以各種方式強迫系統發生錯誤,來看系統回復是否正確。安全性測試:為了驗證系統,可防備不適當的侵入。若有足夠的時間、資源,系統難免會被入侵,但好的系統設計在於使入侵所花的代價比得到的代價高!壓力測試:在早期,黑、白箱是作正常功能的評估。而此測試是在作非正常情況下的檢驗。也就是以不正常的數量、頻率、容量來測試。即“試圖破壞程式”!績效(Performance)測試:在整合所有元件後
14、,才可確定實際績效。特別是重視績效的即時系統。25By Robot Jiang除錯過程(Debugging:A Diagnostic Process)除錯不是測試,但它始終是測試的結果。主要的結果有二(1)發現錯誤原因,然後更正。(2)無法發現原因,就再設計一個Test Case來證實懷疑。再反覆修正錯誤。26By Robot Jiang除錯過程(Debugging Process)測試案例測試案例(test cases)結果結果除錯除錯(Debugging)可疑原因可疑原因找出原因找出原因更正更正回歸測試回歸測試額外的新測試額外的新測試27By Robot Jiang除錯的努力(Debugg
15、ing Effort)花花時間來診斷症狀時間來診斷症狀並並決定可能的原因發現原因,發現原因,花時間來花時間來更正錯誤,更正錯誤,並實施回歸測試並實施回歸測試28By Robot Jiang除錯為何困難?參考症狀、原因的錯誤特徵(Symptoms&Causes)症狀(symptom)原因原因(cause)症狀、原因症狀、原因,可能相距很遠。可能相距很遠。當另一錯誤被更正後,有些症狀可能消失當另一錯誤被更正後,有些症狀可能消失,但本來的原因仍未被發現!,但本來的原因仍未被發現!症狀也許實際上由非錯誤的症狀也許實際上由非錯誤的原因所造成原因所造成(例如例如round-off)誤差誤差症狀可能是不易追
16、蹤的人為因素造成。症狀可能是不易追蹤的人為因素造成。症狀也許是時序上的問題症狀也許是時序上的問題,而不單是程序問題。,而不單是程序問題。重新精確的產生輸入重新精確的產生輸入條件也許很困難條件也許很困難(如如順序順序)症狀可能是間斷,常見於軟、硬的結合上。症狀可能是間斷,常見於軟、硬的結合上。症狀可能由於工作分散症狀可能由於工作分散在在不同處理器。不同處理器。29By Robot Jiang除錯的方法(Debugging Techniques)暴力法暴力法(brute force/testing)回回溯法溯法(backtracking)歸納法歸納法(induction)演譯、推論演譯、推論(de
17、duction)除錯的最後準則:當所有其它方法失敗時,請求他人的幫助吧!30By Robot Jiang除錯過程,在更正前的重要問題:除錯過程,在更正前的重要問題:一旦發現錯誤,就必須更正,但是在更正錯誤後,有時可能產生其他的錯誤!(1)錯誤的原因在於程式其它部分也會產生嗎?(2)什麼樣的“下一個錯誤”可能由將要進行的修正引入呢?(3)為防止此錯誤,我們應先做什麼?31By Robot Jiang總結總結軟體測試是確認與驗證V&V(Verification and Validation):確認用來確保軟體正確的執行;而驗證是確保是客戶所需要。確認正確,驗證是客戶所需!32By Robot Jiang
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。