軟件測試組織與管理及測試系列方法(二) 軟件測試
軟件測試策略
軟件測試的策略、方法和技術是多種多樣的。對于軟件測試技術,可以從不同的角度加以分類:從是否需要執行被測軟件的角度,可分為靜態測試和動態測試。從測試是否針對系統的內部結構和具體實現算法的角度來看,可分為白盒測試和黑盒測試。
1.靜態方法與動態方法
所謂靜態方法是指不運行被測程序本身,僅通過分析或檢查源程序的文法、結構、過程、接口等來檢查程序的正確性。靜態方法通過程序靜態特性的分析,找出欠缺和可疑之處,例如不匹配的參數、不適當的循環嵌套和分支嵌套、不允許的遞歸、未使用過的變量、空指針的引用和可疑的計算等。靜態測試結果可用于進一步的查錯,并為測試用例選取提供指導。
動態方法是指通過運行被測程序,檢查運行結果與預期結果的差異,并分析運行效率和健壯性等性能,這種方法由三部分組成:構造測試實例、執行程序、分析程序的輸出結果。
2.功能測試與結構測試
(1)功能測試
功能測試是指在對程序進行的功能抽象的基礎上,將程序劃分成功能單元,然后在數據抽象的基礎上,對每個功能單元生成測試數據進行測試。用這種方法進行測試時,被測程序被當作打不開的黑盒,因而無法了解其內部構造,因此又稱為黑盒測試。
黑盒測試也稱功能測試或數據驅動測試,它是在已知產品所應具有的功能,通過測試來檢測每個功能是否都能正常使用。在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進行測試,只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當接收輸入數據而產生正確的輸出信息,并且保持外部信息的完整性。
在功能測試中,被測軟件的輸入域和輸出域往往是無限域,因此窮舉測試通常是不可行的。必須以某種策略分析軟件規格說明,從而得出測試用例集,盡可能全面而又高效地對軟件進行測試。下面就說明幾種功能測試的方法:
a.等價類劃分
所謂等價類,就是指某個輸入域的集合,集合中的每個輸入對揭露程序錯誤來說是等效的,把程序的輸入域劃分成若干部分,然后從每個部分中選取少數代表性數據作為測試用例,這就是等價類劃分方法。它是功能測試的基本方法。
b.因果圖法
因果圖是一種形式語言,由自然語言寫成的規范轉換而成,這種形式語言實際上是一種使用簡化記號表示數字邏輯圖。因果圖法是幫助人們系統地選擇一組高效測試用例的方法,此外,它還能指出程序規范中的不完全性和二義性。
c.邊值分析
實踐證明,軟件在輸入、輸出域的邊界附近容易出現差錯,邊值分析是考慮邊界條件而選取測試用例的一種功能測試方法。所謂邊界條件,是相對于輸入和輸出等價類直接在其邊緣上,稍高于和稍低于其邊界的這些狀態條件。邊值分析是對等價類劃分的有效補充。
(2)結構測試
結構測試是根據被測程序的內部結構設計測試用例的一類測試,又稱為白盒測試。白盒測試也稱結構測試或邏輯驅動測試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能。其主要方法有邏輯驅動、基路測試等,主要用于軟件驗證。白盒法全面了解程序內部邏輯結構、對所有邏輯路徑進行測試。白盒法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。貫穿程序的獨立路徑數是天文數字。但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發現不了一些與數據相關的錯誤。
與功能測試不同的是,結構測試涉及程序內部結構。盡管用戶更傾向于基于程序規格說明的功能測試,但是結構測試能發現潛在的邏輯錯誤,而這種錯誤往往是功能測試發現不了的。它們各有利弊,常常結合使用。
文章來源于領測軟件測試網 http://www.kjueaiud.com/