孔波 李瑛
摘要:軟件測試是系統(tǒng)工程,作者結(jié)合自己在測試工作中的經(jīng)驗,給出了對于軟件測試目標的理解和認知。
關鍵詞:軟件測試 目標 軟件工程 軟件危機
中圖分類號:TP31 文獻標識碼:A 文章編號:1672-3791(2012)10(b)-0013-01
電子計算機被認為是20世紀以來最偉大的工業(yè)革命成果之一,自1946年第一臺通用電子數(shù)字計算機ENIAC誕生以來,計算機已經(jīng)廣泛應用于科學計算、數(shù)據(jù)處理、工程設計等領域。隨著計算機技術(shù)日新月異的發(fā)展,軟件產(chǎn)品更是應用到了眾多領域。
但計算機軟件的發(fā)展道路崎嶇婉轉(zhuǎn),特別是20世紀60年代出現(xiàn)的“軟件危機”,讓我們記憶猶新。軟件技術(shù)的發(fā)展遠遠落后于高性能硬件的發(fā)展,由于缺乏大型軟件開發(fā)的經(jīng)驗和軟件開發(fā)數(shù)據(jù)的積累,很難及早制定準確的開發(fā)工作計劃;在開發(fā)初期對軟件開發(fā)需求不能準確的表達;開發(fā)過程中沒有規(guī)范可循,開發(fā)人員交流配合不順暢;缺乏有效的軟件質(zhì)量檢測手段,將質(zhì)量差的軟件交付最終用戶使用,致使后期的使用維護工作大大增加。
按照工程化的原則和方法組織軟件開發(fā)是擺脫上述軟件危機所帶來種種問題的主要途徑。將計算機軟件生存期分為計劃、需求分析、設計、程序編寫、測試、運行和維護六個步驟。在這里軟件開發(fā)被視為一項工程,以工程化的方法來進行規(guī)劃和管理軟件的開發(fā)。
軟件測試是保證軟件質(zhì)量的重要手段,在軟件生存期中占有舉足輕重的。
1 軟件測試的定義
研究表明,在軟件開發(fā)過程中,花在測試上的工作量和用在測試上的開銷都接近軟件開發(fā)工作量和開銷的50%。對于軟件測試的定義,歷來有著眾多爭議。1983年IEEE的定義是:“使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結(jié)果與實際結(jié)果之間的差別”。而Myers則認為:“程序測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程”。心理學對人的行為有著重要的影響,人的心理指引著人的行為。對軟件測試定義的認識,決定了測試人員對測試目標的確立,進而影響到整個軟件測試過程,而軟件測試的最終結(jié)果必將反過來影響整個軟件的質(zhì)量。
2 軟件測試目標
軟件測試目標是盡可能多地發(fā)現(xiàn)軟件中存在錯誤,通過不斷修改軟件錯誤,保證最終軟件產(chǎn)品的質(zhì)量。從這個角度看,測試人員要有團隊合作意識,注意與開發(fā)人員、需求人員及客戶的良好溝通是圓滿完成測試任務的關鍵。
由于軟件的復雜性和測試人員知識結(jié)構(gòu)缺陷,致使測試人員對測試目標存在很多認識上的誤區(qū)。
誤區(qū)1:測試就是證明軟件和程序能夠正確運行,滿足設計要求的功能。心理學告訴我們,人們愿意看到想要看到的事物。既然是證明正確性,設計測試用例時,自然會尋找容易使程序通過的測試數(shù)據(jù),回避那些易于暴露程序錯誤的數(shù)據(jù),致使程序錯誤得不到排除。
誤區(qū)2:測試具有破壞性,容易得罪開發(fā)人員。軟件測試同樣具有創(chuàng)造性,需要測試人員綜合自己的智慧,快速有效地查找定位軟件錯誤,如果通過測試人員設計的測試用例,使軟件程序產(chǎn)品出現(xiàn)了故障和錯誤,那就說明測試人員進行了一個成功的測試。作為測試人員,此時應該心里充斥著滿足和成就感,因為通過自己的努力工作幫助設計人員找到了程序的錯誤,有了這個認識,應該對開發(fā)人員下一步完善設計起到了舉足輕重的作用。所以,從這個角度看,測試人員和開發(fā)人員應該精誠協(xié)作,盡管工作不同,總的目標是一致的。
誤區(qū)3:軟件測試不需要專門知識和人員。持有這種觀點的人實際上是對軟件的質(zhì)量非常不付負責,最終不可能做好測試工作。因為軟件測試已經(jīng)成為一門獨立的學科,包括測試技術(shù)和管理等諸多方面,要完全掌握需要堅持不斷地努力和實踐。一名優(yōu)秀的程序設計人員不一定能成為出色的軟件測試人員。
誤區(qū)4:軟件測試沒有前途,不如設計人員受人重視。近幾年全國各地陸續(xù)成立了國家級、地區(qū)級的軟件測評中心,軟件測試的人員也達到數(shù)10萬。隨著市場對軟件質(zhì)量要求的不斷提高,國內(nèi)軟件測試人員的需求不斷增大,軟件測試已引起越來越多的重視,軟件測試人員的地位和待遇也逐漸提高。在一些世界著名軟件公司,軟件測試人員的數(shù)量和待遇與程序員相當。軟件測試將會成為一個具有很大發(fā)展前景的行業(yè),軟件測試大有前途,市場需要更多具有豐富測試技術(shù)和管理經(jīng)驗的測試人員,測試人員同樣是受人尊重的軟件專家。測試人員和程序人員只是分工不同,其目標是一致的,就是為了向用戶提供優(yōu)質(zhì)的軟件程序。
誤區(qū)5:經(jīng)過軟件測試,軟件程序中不存在任何錯誤了。正確的認識是:測試可以幫助人們發(fā)現(xiàn)程序中的錯誤,但卻不能證明程序中沒有錯誤。一個成功的測試就是發(fā)現(xiàn)了以前從未發(fā)現(xiàn)的錯誤。采用合適的測試技術(shù)和進行優(yōu)質(zhì)的測試用例設計,可以高效地發(fā)現(xiàn)程序中存在的錯誤。以最少的人力、資源投入,在最短的時間內(nèi)完成測試,發(fā)現(xiàn)軟件系統(tǒng)的缺陷,保證軟件的質(zhì)量,是軟件公司一直追尋的目標。
作為測試人員對以上所列舉問題一定要銘記在心。對于一個非常重要的軟件,特別是一些人命關天的軟件,無論如何強調(diào)測試的重要性都不為過。有一個明確的測試目標,遵循測試原則,采用合適的測試工具和方法,再加以測試人員的大量投入,與設計人員保持良好的溝通,會比較順利地完成測試。
3 結(jié)語
軟件測試的真正目標是尋找錯誤。不要試圖去猜想軟件中沒有錯誤,無論測試人員如何優(yōu)秀,付出了多大的努力,軟件中照樣存在錯誤。作為測試人員就是不惜一切代價定位查找軟件中存在的盡可能多地錯誤。如果有充足的時間設計和進行測試,我們總是可以找到更多的錯誤。當然,還要講究測試的效率。如果錯誤好像對最終客戶影響不大,那就不值得花時間和精力,可能藏有真正有影響的錯誤的地方更需要我們投入精力和時間。
參考文獻
[1] 鄭人杰,許靜,于波.軟件測試[M].人民郵電出版社,2011,3.