測試始終是乙個具有風險的工作,比如,現在越來越多地用「風險」概念來定義測試,測試被認為是
「理解並評估與發布的軟體系統有關的利益和風險狀況的過程」,測試的作用則是管理或轉移系統失敗的風險,以及如何盡大程度地消除給使用者帶來的不良影響。
測試工作為什麼總存在風險呢?因為當我們測試某個應用系統或乙個軟體產品時,不可能把所有可能的情況都測試一遍。例如,即使對乙個計算器程式,要測試的數字可以從0開始到乙個很大的數,就算8位數字(99999999),僅僅測試其加法運算的可能情況就是1016,要完成這些測試,即使借助計算機,每秒完成10萬個測試用例,乙個測試人員窮其一生也完成不了,因為需要3100多年。如果再加上負數、減法、乘法、除法、括號以及它們的各種組合,所有全部可能的情況將是乙個巨大的天文數字,所以完成全部可能的情況是不可想象的。
所以,我們必須不得不借助一些測試用例的設計方法,如邊界值分析方法、等價類劃分方法等來解決這個問題,選擇樣本資料,用極有限的、代表性的測試資料來代替實際的、巨大的測試資料。這些方法的應用是基於乙個假設:如果程式在這些樣本資料情況下執行正確,那麼該程式也滿足所有類似的資料。這種假設的存在,也就意味著一定的風險存在。對於簡單的程式,這種風險很小,但是對越來越複雜的應用程式或軟體系統,這種風險就越來越大。
即使完成了全部功能的測試,也很難完成所有使用者的環境下的測試。測試的環境是有限的,而軟體系統的實際執行環境是複雜的、千變萬化的,不僅有不同的硬體(主機板、cpu、記憶體、網絡卡、顯示卡等)型號差異,而且還有作業系統及其版本、驅動程式及其版本、已安裝的應用程式等的差異。完成各種使用者環境下的軟體測試,也是幾乎不可能,即使可以實現,其成本也是巨大的,一般軟體企業不堪重負。同樣,系統的效能測試、有效性測試和可靠性測試等蘊含著較大的風險。例如,可靠性測試是通過模擬方法實現,不能在完全真實的情況下進行,如不可能對真實系統連續進行10或20年的不間斷測試。
測試工作,除了始終所存在的風險之外,還會受到其他多方面的挑戰,主要有:
l測試不能提高質量,但軟體產品發布後,缺陷較多,往往被認為是測試人員的錯。在許多人的心目中,測試人員是防止缺陷的盾牌或最後一堵牆。實際上,所有的軟體缺陷都是在需求分析、設計和程式設計時被注入進去的,注入的缺陷越多,被漏掉的缺陷可能性就越大。
l測試人員的素質和待遇。國內還存在對測試理解的誤區,如測試不需要技術或不需要過高的技術。在選用測試人才時,往往降低要求,所給的待遇也偏低,從而造成測試隊伍的整體能力比較弱、工作熱情比較低,對測試質量有較大的負面影響。
l測試時間往往被壓縮。雖然一旦軟體專案啟動,測試工作就開始,包括產品需求文件審查、產品規格說明書審查、測試計畫/用例的設計等,但是軟體測試的主要執行時間是在**完成後。由於軟體的日程估計往往不夠準確,**完成時間延遲經常會發生,但管理層又不想推遲整個產品的發布日期,結果測試時間首當其衝,測試週期被縮短,造成測試不夠充分或已計畫好的測試專案不能保質保量的完成。
總之,測試工作所面臨的挑戰比較大,有時可以說是嚴峻的,但是,只要我們敢於面對現實,堅持測試原則,就能克服困難,運用正確的、更有效的測試方法和工具,保證足夠的測試和測試的質量。
預知後事如何,請讀下回分解:
第6回 軟體測試的十大原則 ®
——系列討論的目錄,見:
第5回 軟體測試所面對的現實
2006年08月07日 12 45 00 測試始終是乙個具有風險的工作,比如,現在越來越多地用 風險 概念來定義測試,測試被認為是 理解並評估與發布的軟體系統有關的利益和風險狀況的過程 測試的作用則是管理或轉移系統失敗的風險,以及如何盡大程度地消除給使用者帶來的不良影響。測試工作為什麼總存在風險呢?...
第5回 軟體測試所面對的現實
測試始終是乙個具有風險的工作,比如,現在越來越多地用 風險 概念來定義測試,測試被認為是 理解並評估與發布的軟體系統有關的利益和風險狀況的過程 測試的作用則是管理或轉移系統失敗的風險,以及如何盡大程度地消除給使用者帶來的不良影響。測試工作為什麼總存在風險呢?因為當我們測試某個應用系統或乙個軟體產品時...
第2回 究竟什麼是軟體測試?
在 g.j.myers 的經典著作 軟體測試之藝術 the art of software testing 中,給出了測試的定義 程式測試是為了發現錯誤而執行程式的過程 這個定義,被業界所認可,經常被引用。除此之外,g.j.myers 測試是為了證明程式有錯,而不是證明程式無錯誤 乙個好的測試用例是...