軟件測試理論 軟件測試工具
1.什么是軟件測試
無論怎樣強調軟件測試的重要性和它對軟件可靠性的影響都不過分。在開發大型軟件系統的漫長過程中,面對著極其錯綜復雜的問題,人的主觀認識不可能完全符合客觀現實,與工程密切相關的各類人員之間的通信和配合也不可能完美無缺,因此,在軟件生命周期的每個階段都不可避免地會產生差錯。我們力求在每個階段結束之前通過嚴格的技術審查,盡可能早地發現并糾正差錯;但是,經驗表明審查并不能發現所有差錯,此外在編碼過程中還不可避免地會引入新的錯誤。如果在軟件投入生產性運行之前,沒有發現并糾正軟件中的大部分差錯,則這些差錯遲早會在生產過程中暴露出來,那時不僅改正這些錯誤的代價更高,而且往往會造成很惡劣的后果。測試的目的就是在軟件投入生產性運行之前,盡可能多地發現軟件中的錯誤。目前軟件測試仍然是保證軟件質量的關鍵步驟,它是對軟件規格說明、設計和編碼的最后復審。軟件測試在軟件生命周期中橫跨兩個階段。通常在編寫出每個模塊之后就對它做必要的測試(稱為單元測試),模塊的編寫者和測試者是同一個人,編碼和單元測試屬于軟件生命周期的同一個階段。在這個階段結束之后,對軟件系統還應該進行各種綜合測試,這是軟件生命周期中的另一個獨立的階段,通常由專門的測試人員承擔這項工作。大量統計資料表明,軟件測試的工作量往往占軟件開發總工作量的40%以上,在極端情況,測試那種關系人的生命安全的軟件所花費的成本,可能相當于軟件工程其他開發步驟總成本的三倍到五倍。因此,必須高度重視軟件測試工作,絕不要以為寫出程序之后軟件開發工作就接近完成了,實際上,大約還有同樣多的開發工作量需要完成。僅就測試而言,它的目標是發現軟件中的錯誤,但是,發現錯誤并不是我們的最終日的。軟件工程的根本目標是開發出高質量的完全符合用戶需要的軟件。
2.軟件測試的目標
下面這些規則也可以看作是測試的目標或定義: (1)測試是為了發現程序中的錯誤而執行程序的過程; (2)好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案; (3)成功的測試是發現了至今為止尚未發現的錯誤的測試。從上述規則可以看出,測試的正確定義是“為了發現程序中的錯誤而執行程序的過程”。這和某些人通常想象的“測試是為了表明程序是正確的”,“成功的測試是沒有發現錯誤的測試”等等是完全相反的。正確認識測試的目標是十分重要的,測試目標決定了測試方案的設計。如果為了表明程序是正確的而進行測試,就會設計一些不易暴露錯誤的測試方案;相反,如果測試是為了發現程序中的錯誤,就會力求設計出最能暴露錯誤的測試方案。由于測試的目標是暴露程序中的錯誤,從心理學角度看,由程序的編寫者自己進行測試是不恰當的。因此,在綜合測試階段通常由其他人員組成測試小組來完成測試工作。此外,應該認識到測試決不能證明程序是正確的。即使經過了最嚴格的測試之后,仍然可能還有沒被發現的錯誤潛藏在程序中。測試只能查找出程序中的錯誤,不能證明程序中沒有錯誤。
原文轉自:http://www.anti-gravitydesign.com