軟件測試的基礎知識概要介紹[3] 軟件測試
四、軟件測試的復雜性與經濟性
。牐
人們常常以為,開發一個程序是困難的,測試一個程序則比較容易。這其實是誤解。設計測試用例是一項細致并需要高度技巧的工作,稍有不慎就會顧此失彼,發生不應有的疏漏。
。牐
不論是黑盒測試方法還是白盒測試方法,由于測試情況數量巨大,都不可能進行徹底的測試。所謂徹底測試,就是讓被測程序在一切可能的輸入情況下全部執行一遍。通常也稱這種測試為“窮舉測試”。 “黑盒”法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。 “白盒”法是窮舉路徑測試,貫穿程序的獨立路徑數是天文數字,但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身是個錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發現不了一些與數據相關的錯誤。e.w.dijkstra的一句名言對測試的不徹底性作了很好的注解:“程序測試只能證明錯誤的存在,但不能證明錯誤不存在”。
。牐
在實際測試中,窮舉測試工作量太大,實踐上行不通,這就注定了一切實際測試都是不徹底的。當然就不能夠保證被測試程序中不存在遺留的錯誤。軟件工程的總目標是充分利用有限的人力和物力資源,高效率、高質量地完成測試。為了降低測試成本,選擇測試用例時應注意遵守“經濟性”的原則。第一,要根據程序的重要性和一旦發生故障將造成的損失來確定它的測試等級;第二,要認真研究測試策略,以便能使用盡可能少的測試用例,發現盡可能多的程序錯誤。掌握好測試量是至關重要的,一位有經驗的軟件開發管理人員在談到軟件測試時曾這樣說過:“不充分的測試是愚蠢的,而過度的測試是一種罪孽”。測試不足意味著讓用戶承擔隱藏錯誤帶來的危險,過度測試則會浪費許多寶貴的資源。
。牐
測試是軟件生存期中費用消耗最大的環節。測試費用除了測試的直接消耗外,還包括其它的相關費用。能夠決定需要做多少次測試的主要影響因素如下:
。牐
、、系統的目的
。牐
系統的目的的差別在很大程度上影響所需要進行的測試的數量。那些可能產生嚴重后果的系統必須要進行更多的測試。一臺在boeing 757上的系統應該比一個用于公共圖書館中檢索資料的系統需要更多的測試。一個用來控制密封燃氣管道的系統應該比一個與有毒爆炸物品無關的系統有更高的可信度。一個安全關鍵軟件的開發組比一個游戲軟件開發組要有苛刻得多的查找錯誤方面的要求。
。牐
、、潛在的用戶數量
文章來源于領測軟件測試網 http://www.kjueaiud.com/