胡宇翔
摘 要 隨著軟件產業(yè)的發(fā)展,軟件產品的質量控制與質量管理正逐漸成為軟件企業(yè)生存與發(fā)展的核心,而軟件測試就是軟件質量保證的關鍵。雖然軟件測試得到了很多人的認識與推廣,但是仍有不少人對其存在認識上的偏差,本文就此做了初略的分析。
關鍵詞 軟件測試 誤區(qū) 程序 質量
中圖分類號:TP31 文獻標識碼:A
近年來,隨著信息技術的飛速發(fā)展,軟件產品應用到社會的各個領域與各個行業(yè)。軟件產品的質量也就成為大家共同關注的焦點。質量不佳的軟件產品不僅會導致軟件開發(fā)商的維護費與用戶的使用成本大幅增加,還可能產生其他的風險,造成公司信譽下降,繼而影響市場開拓,甚至可能造成災難性的后果。因此軟件測試就顯得尤為重要。
1軟件測試是軟件開發(fā)結束后的一道工序
很多軟件開發(fā)人員在組織開展一個軟件項目時,通常將其歸結為需求分析、概要設計、詳細設計、軟件編程、軟件測試、軟件發(fā)布等幾個階段。將軟件測試看作是軟件編碼后的一個檢查與確認的過程。這個觀念是對軟件測試周期的一種錯誤認識。如果等到軟件編程結束后才進行測試,那么,測試的時間通常較短,測試的覆蓋面不全面,測試的效果也將大打折扣。更嚴重的是如果此時發(fā)現(xiàn)了軟件需求階段或概要設計階段的錯誤,如果要修復該類錯誤,將會耗費大量的時間和人力。軟件開發(fā)的每一個階段都要進行不同目的和內容的測試工作,以保證各個階段的正確性。因此,軟件開發(fā)與軟件測試應該是交互進行的,軟件測試貫穿于軟件開發(fā)的全過程每一個環(huán)節(jié)。
2軟件測試只需對軟件程序進行測試
有些軟件開發(fā)人員認為軟件測試只需要進行程序測試,測試程序在運行中是否存在問題,就可以了。其實,軟件測試包括靜態(tài)測試和動態(tài)測試。靜態(tài)測試通過人工或程序分析來證明軟件的正確性,不在計算機上實際執(zhí)行程序;而動態(tài)測試通過執(zhí)行程序做分析,測試程序的動態(tài)行為,以證實軟件是否存在問題。也就是說,軟件測試的對象不僅僅是程序測試, 軟件測試應該包括整個軟件開發(fā)期間各個階段所產生的文檔,比如需求規(guī)格說明、概要設計文檔、詳細設計文檔等。
3軟件測試可做可不做
有些人員認為只要軟件運行沒問題就行,不一定要進行軟件測試。受到費用、時間、人員等因素的影響,在費用不足、時間不夠、人手不夠的情況下,不做測試或者少做測試;在費用充足、時間充裕、人員配置到位的情況下,才考慮做測試或多做測試。這是未對軟件測試引起足夠重視的表現(xiàn),是軟件過程管理混亂的體現(xiàn),必然會影響到軟件測試的效果。一個軟件項目的順利實現(xiàn)需要有合理的項目進度安排,其中包括開發(fā)過程中并行的軟件測試計劃,對項目實施過程中的任何問題,都要有風險分析和相應的對策,不得因為開發(fā)進度的延期而簡單的縮減或者取消測試時間、人力和資源。否則,軟件質量就存在潛在風險,甚至會因此而產生更大的浪費。
4軟件質量問題是測試人員的問題
任何產品質量都是生產設計出來的,而不是檢測出來了,軟件的高質量不是軟件測試人員測出來的,是靠軟件生命周期的各個過程中設計出來的。所以,期望通過檢測或者測試將所有的問題都找出來,通常只是理想的情況下才可能,現(xiàn)實中基本難以實現(xiàn)或者根本實現(xiàn)不了。軟件中存在的問題或者錯誤可能來自軟件項目中的各個過程,軟件測試只能確認軟件存在錯誤,不能保證軟件沒有錯誤,軟件測試也不可能發(fā)現(xiàn)全部的錯誤。從軟件開發(fā)的角度看,出現(xiàn)軟件錯誤,不能簡單地將責任歸結為某一個環(huán)節(jié)或者某一個人,有些問題的產生可能不是技術原因,可能來自于混亂的項目管理。應該分析軟件開發(fā)項目的每個階段,從過程改進方面尋找產生錯誤的原因和改進的措施。
5軟件測試就是證明軟件能正常運行
如果把測試目標定位于要證明程序中沒有缺陷,那么就會在潛意識中傾向于實現(xiàn)這個目標。也就是說,測試人員會傾向于挑選那些使程序失效的可能性較小的測試數(shù)據(jù)。把程序測試定義為在程序中找出錯誤的過程,就使測試成了可以做到的任務,從而克服了心理上存在的問題。軟件測試更適宜被視為試圖發(fā)現(xiàn)程序中錯誤的破壞性的過程。一個成功的測試,通過誘發(fā)程序發(fā)生錯誤,可以在這個方向上促進軟件質量的改進。因此,不要只是為了證明程序能夠正確運行而去測試程序。相反,應該一開始就假設程序中隱藏著錯誤,然后測試程序,發(fā)現(xiàn)盡可能多的錯誤。事實上,如果把測試目標定位于要證明程序中存在缺陷,那么就會選擇一些容易發(fā)現(xiàn)程序缺陷的測試數(shù)據(jù)。而后一種態(tài)度會比前者給程序增加更多的價值。
6軟件測試與程序員無關
開發(fā)和測試是相輔相成的過程,需要軟件測試人員、程序員和系統(tǒng)分析師等相關人員保持密切的聯(lián)系,需要更多的交流和協(xié)調,以便提高測試效率。而且軟件的單元測試部分應該主要由程序員完成,必要時測試人員可以幫助設計測試樣例。對于測試中發(fā)現(xiàn)的軟件錯誤,很多需要程序員通過修改編碼才能修復。程序員可以通過有目的的分析軟件錯誤的類型、數(shù)量,找出產生錯誤的位置和原因,以便在今后的編程中避免同樣的錯誤,積累編程經驗,提高編程能力。
參考文獻
[1] Paul C.Jorgensen,韓柯,杜旭濤譯.軟件測試(第2版)[M].機械工業(yè)出版社, 2002.
[2] (美)Frank Cohen.Java.測試與設計—從單元測試到自動Web測試[M].新華書店總店北京發(fā)行所,2005.
[3] 岳曉紅.對Web測試測試技術的探討[J].隴東學院學報,2006.
[4] 段念.軟件性能測試過程詳解與案例剖析[M].清華大學出版社,2006.