軟件測試方法的分析與研究
開發過程中一次性開發成功或者無錯誤發生的幾率為零,因此在軟件的開發過程中需要不斷的完善,而這個不斷完善修改的過程就是軟件測試的過程。軟件測試也代表了了設計、編碼的最終復審。著重論述了目前軟件工程中普遍存在的一些測試問題,并對其產生的原因進行了詳細的分析。介紹了軟件測試的本質,同時對目前流行的測試方法進行了研究,提出了不同類型的軟件最佳的測試方案。
1、概述
信息技術的飛速發展,使軟件產品應用到社會的各個領域,軟件產品的質量自然成為人們共同關注的焦點。軟件開發商為了占有市場,必須把產品質量作為企業的重要目標之一,以免在激烈的競爭中被淘汰。用戶為了保證自己業務的順利完成,總是希望選用優質的軟件。
質量不佳的軟件產品不僅會使開發商的維護費用和用戶的使用成本大幅增加,還可能產生其他的責任風險,在一些關鍵應用,如民航訂票系統、銀行結算系統、證券交易系統等中使用質量有問題的軟件,還可能造成災難性的后果。
軟件危機曾經是軟件界甚至整個計算機界最熱門的話題,為了解決這個危機,軟件從業人員、專家和學者做出了大量的努力?,F在人們已經逐步認識到所謂的軟件危機實際上僅是一種狀況,那就是軟件中有錯誤,正是這些錯誤導致了軟件開發在成本、進度和質量上的失控。有錯是軟件的屬性,而且是無法改變的。因為軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。問題在于應該如何去避免錯誤的產生和消除已經產生的錯誤,使程序中的錯誤密度達到盡可能低的程度。
軟件工程學出現后,軟件開發被視為一項工程,以工程化的方法來進行規劃和管理軟件的開發。事實上,不論采用什么技術和什么方法,軟件中出現錯誤總是難免的。采用新的語言、先進的開發方式、完善的開發過程,可以減少錯誤的引入,但是不可能完全杜絕軟件中的錯誤,這些引入的錯誤需要測試來找出。測試是軟件開發的重要部分。
統計表明,在典型的軟件開發項目中,軟件測試工作量往往占軟件開發總工作量的40%以上。而在軟件開發的總成本中用在測試上的開銷要占30%到50%。如果把維護階段也考慮在內,討論整個軟件生存時期時,測試的成本比例也許會有所降低,但實際上維護工作相當于二次開發,仍至多次開發,其中必定還包含有許多測試工作。系統的問題越早發現,改正成本越低,破壞性越小,所以,在系統發布前要盡量多地把系統問題找出來,其手段就是有計劃、有組織地進行充分的測試。
軟件測試是根據軟件開發各階段的規格說明和程序的內部結構而精心設計一組測試數據,并利用這些測試數據運行程序,以發現程序錯誤的過程。根據測試數據設計方法,軟件測試可分為結構測試和功能測試。在結構測試過程中,測試者對程序的語句、分支和邏輯路徑進行各種覆蓋測試,可以在不同點檢查程序的狀態,以確定實際狀態與預期狀態是否一致。軟件測試的目的是發現錯誤,而不是確認其正確性,而對已進行的測試過程的程度進行評估。
2、測試方法
2.1 軟件測試實質
軟件測試是一項邏輯性強、且極具條理的工作,也是具有風險性的行為。由于軟件的輸入量、輸出結果、軟件實現途徑都很多,而且軟件產品說明書沒有客觀的標準,導致從不同的角度看,軟件缺陷的標準不同,因而無法對軟件實施完全測試,這樣,就無法通過軟件測試顯示隱藏的軟件缺陷,只能盡量查找軟件缺陷,找到的軟件缺陷越多,說明軟件本身的缺陷就越多,況且還有一些是未發現、不能斷定的缺陷,這就是軟件測試的局限性。
所有的軟件測試都有2個關鍵的問題組成:建立能測試應用程序的環境,并在該環境中測試軟件能力。測試員必須理解和重新生成軟件所在的復雜軟件環境,并運用其能力確保正常的測試。
2.2 軟件測試手段
從測試是否針對系統的內部結構和具體實現算法的角度來看,可分為白盒測試和黑盒測試。
2.2.1 黑盒測試
黑盒測試也稱功能測試或數據驅動測試,它是在已知產品所應具有的功能情況下,通過測試來檢測每個功能是否都能正常使用。在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息并且保持外部信息(如:數據庫或文件)的完整性。黑盒法著眼于程序外部結構,不考慮內部邏輯結構,只針對軟件界面和軟件功能進行測試,它主要用于軟件驗收測試。黑盒法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。測試情況實際上有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。
2.2.2 白盒測試
白盒測試也稱結構測試或邏輯驅動測試,它是在已知產品內部工作過程情況下,通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都能按預定要求正確工作,而不顧它的功能。白盒測試的主要方法有邏輯驅動、基路測試等,白盒法是窮舉路徑測試,主要用于軟件驗證。
【編輯推薦】

























