王佩多
(中國電子信息產業發展研究院,北京 100048)
軟件測試概論和方法
王佩多
(中國電子信息產業發展研究院,北京 100048)
軟件測試是使用人工或者自動手段來運行或測試某個系統的過程,其目的在于檢驗被測軟件是否滿足規定的需求或弄清預期結果與實際結果之間的差別。本文主要描述常用的幾種軟件測試方法及測試類型,隨后介紹了微軟公司測試過程,以此來探討如何合理、高效率地完成測試工作。
軟件測試;測試方法;黑盒測試;白盒測試
隨著計算機應用的普及和信息技術的迅猛發展,軟件產品已應用到社會的各個領域,與人們工作和生活息息相關,軟件產品的質量自然成為人們關注的焦點。軟件測試是軟件質量保證的一項關鍵活動,它是通過對軟件需求、軟件設計和軟件編碼等進行靜態和動態審查,盡可能發現軟件中潛伏的問題。大量的統計表明,軟件測試工作量往往占軟件開發總工作量的40%以上,在極端情況下,甚至可能高達軟件工程其他步驟成本總和的2~4倍。目前,隨著軟件規模不斷擴大,軟件復雜程度不斷提高,軟件測試的難度也在進一步提高。
軟件測試的發展歷史:20世紀60年代(軟件工程建立前),為表明程序正確而進行測試。1972年,在北卡羅來納大學舉行了首屆軟件測試正式會議。1975年,John Good Enough和Susan Gerhart 在IEEE上發表了《測試數據選擇的原理》的文章,軟件測試被確定為一種研究方向。1983年,Bill Hetzel在《軟件測試完全指南》中認為:測試是以評價一個程序或者系統屬性為目標的任何一種活動,測試是對軟件質量的度量。到了2002年,Rick和Stefan在《系統的軟件測試》一書中對軟件測試做了進一步定義:測試是為了度量和提高被測軟件的質量,對測試軟件進行工程設計、實施和維護的整個生命過程。
軟件無處不在,然而軟件是人編的,所以不夠完美,以下是幾個臭名昭著的軟件測試案例:
⊙ 迪士尼的獅子王(1994~1995)軟件在少數系統中能正常工作,但在大眾使用的常見系統中不行。后來證實,迪士尼公司沒有對市場上投入實用的各種PC機型進行正確的測試。
⊙ 美國航天局火星極地登陸(1999)項目使用前有經過測試,兩個測試小組雙方獨立工作都很好,但從未走在一起。
⊙ 千年蟲,(大約1974年)估計世界各地更換或升級該系統程序解決原有2000年錯誤的費用已經超過數億美元。
軟件測試使用人工或者自動手段來運行或測試某個系統的過程,其目的在于檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。它是幫助識別開發完成(中間或最終的版本)的計算機軟件(整體或部分)的正確度(correctness)、完全度(completeness)和質量(quality)的軟件過程,是SQA(software quality assurance)的重要子域。
測試是軟件開發過程的重要組成部分,是用來確認一個程序的品質或性能是否符合開發之前所提出的一些要求。軟件測試的目的,一是確認軟件的質量,一方面是確認軟件做了你所期望的事情(Do the right thing),另一方面是確認軟件以正確的方式來做了這個事件(Do it right);二是提供信息,比如提供給開發人員或程序經理的反饋信息,為風險評估所準備的信息;三是軟件測試不僅是在測試軟件產品的本身,而且還包括軟件開發的過程。如果一個軟件產品開發完成之后發現了很多問題,這說明此軟件開發過程很可能是有缺陷的。
測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點可能會產生誤導,認為發現錯誤是軟件測試的惟一目的,查找不出錯誤的測試就是沒有價值的,事實并非如此。首先,測試并不僅僅是為了要找出錯誤。通過分析錯誤產生的原因和錯誤的分布特征,可以幫助項目管理者發現當前所采用的軟件缺陷,以便改進。同時,這種分析也能幫助我們設計出有針對性的檢測方法,改善測試的有效性。其次,沒有發現錯誤的測試也是有價值的,完整的測試是評定測試質量的一種方法。
4.1 常用分類
(1)從是否需要執行被測軟件的角度,可分為:靜態測試和動態測試。
(2)從測試是否針對系統的內部結構和具體實現算法的角度來看,可分為黑盒測試和白盒測試。
4.2 黑盒測試
它是把被測軟件看作是一個黑盒子,我們不去關心盒子里面的結構是什么樣子,只關心軟件的輸入數據和輸出結果。黑盒測試方法是在程序接口上進行測試,主要是為了發現以下錯誤:
⊙ 是否有不正確或遺漏了的功能?
⊙ 在接口上,輸入能否正確地接受?能否輸出正確的結果?
⊙ 是否有數據結構錯誤或外部信息(例如數據文件)訪問錯誤?
⊙ 性能上是否能夠滿足要求?
⊙ 是否有初始化或終止性錯誤?
用黑盒測試發現程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數據,來檢查程序是否都能產生正確的輸出,但這是不可能的。黑盒測試的測試用例設計有等價劃分法、邊界值法、錯誤推測法、因果圖法。
4.3 白盒測試
它是把盒子蓋打開,去研究里面的源代碼和程序結構。白盒測試也稱結構測試或邏輯驅動測試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能。使用被測單元內部如何工作的信息,允許測試人員對程序內部邏輯結構及有關信息來設計和選擇測試用例,對程序的邏輯路徑進行測試。基于一個應用代碼的內部邏輯知識,測試是基于覆蓋全部代碼、分支、路徑、條件。
(1)白盒測試的主要方法
基本路徑測試:使用程序設計的控制結構導出測試用例。
邏輯驅動測試:測試覆蓋率,以程序內在邏輯結構為基礎的測試。包括語句覆蓋、判定覆蓋(也稱為分支覆蓋)、條件覆蓋、判定-條件覆蓋、條件組合測試、路徑測試六種類型。
(2)白盒測試的主要目的
保證一個模塊中的所有獨立路徑至少被執行一次,對所有的邏輯值均需要測試真、假兩個分支,在上下邊界及可操作范圍內運行所有循環,檢查內部數據結構以確保其有效性。
在開發階段要保證產品的質量,產品的生產過程應該遵循一定的行業標準。軟件產品也是同樣,沒有標準可依自然談不上質量的好壞。所有關心軟件開發質量的組織、單位,都要定義或了解軟件的質量標準、模型。其好處是保證公司產品的可維護性、可靠性以及可移植性等;在測試階段與軟件產品的開發過程一樣,測試過程也需要有一定的準則,來指導、度量、評價軟件測試過程的質量。
為控制測試的有效性以及完成程度,必須定義準則和策略,以判斷何時結束測試階段。準則必須是客觀的,可量化的元素,而不能是經驗或感覺。
據應用的準則和項目相關的約束,項目領導可以定義使用的度量方法和要達到的覆蓋率。每個測試的測試覆蓋信息和累計信息,用圖形方式顯示覆蓋比率,并根據測試運行情況實時更新,隨時顯示新的測試所反映的測試覆蓋情況。允許所有的測試運行依據其有效性進行管理,用戶可以減少不適用于非回歸測試的測試過程。
4.4 靜態測試
它是指不實際運行被測軟件,而只是靜態的檢查程序代碼、界面或文檔中可能存在錯誤的過程。包括代碼測試、界面測試和文檔測試三個方面。代碼測試主要測試代碼是否符合相應的標準和規范;界面測試主要測試軟件的實際界面與需求中的說明是否相符;文檔測試主要測試用戶手冊和需求說明是否符合用戶的實際要求。
4.5 動態測試
它是指實際運行被測程序,輸入相應的測試數據,檢查實際輸出結果和預期結果是否相符的過程。所以,我們判斷一個測試屬于動態還是靜態測試,惟一的標準就是看是否運行程序。
從軟件測試和軟件可靠性理論入手,對現有的軟件測試方法進行了系統的研究。通過研究意識到測試并非是想像的簡單運行軟件、驗證軟件功能正確性,而是通過系統的軟件測試方法,從軟件各方面進行驗證和確認。目的是盡可能發現軟件中存在的錯誤,提高軟件產品質量,降低軟件維護成本。
[1]James A. Whittaker.實用軟件測試指南.北京:電子工業出版社
[2]Ron Patton.軟件測試.北京:機械工業出版社
[3]張克東等.軟件工程與軟件測試自動化教程.北京:電子工業出版社
[4]Edward Kit.軟件測試過程改進.北京:機械工業出版社
Introdaction and Methods of Software Testing
Wang Peiduo
(China Center for Information Industry Development, Beijing, 100048)
Software testing is a process which can run or test systems by manual or automatic methods. Propose of software testing is clarify that whether the tested software satisfy the standard, or find out the difference between expect and fact results. In this report, there are describe some usual testing methods and types. At last, there are present the software testing process about Microsoft, then discuss how to complete the whole software testing efficiently.
software testing; testing methods; black box testing; white box testing
10.3969/J.ISSN.1672-7274.2015.08.012
TP31文獻標示碼:B
1672-7274(2015)08-0043-03
王佩多,女,1988年生,四川廣元人,研究生,商務信息管理專業,現任就職于中國電子信息產業發展研究院。