軟件測試的組織與方法軟件測試
一、 軟件生存周期
一個(gè)軟件從開(kāi)始計劃起,到廢棄不用止,稱(chēng)為軟件生存周期。一般來(lái)說(shuō),軟件生存周包括計劃、開(kāi)發(fā)、運行三個(gè)時(shí)期,每一時(shí)期又可分為若干更小的階段。計劃時(shí)期的主要任務(wù)是分析用戶(hù)要求,分析新系統的主要目標以及開(kāi)發(fā)該系統的可行性。開(kāi)發(fā)時(shí)期要完成設計和實(shí)現兩大任務(wù)具體。具體分為需求分析、概要設計、詳細設計、編碼、測試。其中編碼和測試是軟件開(kāi)發(fā)期的最后兩個(gè)階段。運行時(shí)期是軟件生存周期的最后一個(gè)時(shí)期,軟件人員在這一時(shí)期的工作,主要是做好軟件維護。
統計表明,開(kāi)發(fā)較大規模的軟件,有40%以上的精力是耗費在測試上的,即使富有經(jīng)驗的程序員,也難免在編碼中發(fā)生錯誤,何況,有寫(xiě)錯誤在設計甚至分析階段早已埋下禍根,無(wú)論是早期潛伏下來(lái)的錯誤或編碼中新引入的錯誤,若不及時(shí)排除,輕者降低軟件的可靠性,重者導致整個(gè)系統的失敗。為防患于未然,強調軟件測試的重要性是必要的。
二、 測試的過(guò)程與方法
1、 測試的目的
在G.J.Myers的經(jīng)典著(zhù)作《軟件測試技巧》中,給出了測試的定義: "程序測試是為了發(fā)現錯誤而執行程序的過(guò)程"。測試的目的是發(fā)現程序中的錯誤,是為了證明程序有錯,而不是證明程序無(wú)錯。在軟件開(kāi)發(fā)過(guò)程中,分析、設計與編碼等工作都是建設性的,惟獨測試是帶有"破壞性",測試可視為分析、設計和編碼3個(gè)階段的"最終復審",在軟件質(zhì)量保證中具有重要地位。為了確保軟件的質(zhì)量,較理想的做法應該是對軟件的開(kāi)發(fā)過(guò)程,按軟件工程各階段形成的結果,分別進(jìn)行嚴格的審查。
2、測試的過(guò)程
當設計工作完成以后,就應該著(zhù)手測試的準備工作了,一般來(lái)講,由一位對整個(gè)系統設計熟悉的設計人員編寫(xiě)測試大綱,明確測試的內容和測試通過(guò)的準則,設計完整合理的測試用例,以便系統實(shí)現后進(jìn)行全面測試。
在實(shí)現組將所開(kāi)發(fā)的程序經(jīng)驗證后,提交測試組,由測試負責人組織測試,測試一般可按下列方式組織:
(1)首先,測試人員要仔細閱讀有關(guān)資料,包括規格說(shuō)明、設計文檔、使用說(shuō)明書(shū)及在設計過(guò)程中形成的測試大綱、測試內容及測試的通過(guò)準則,全面熟悉系統,編寫(xiě)測試計劃,設計測試用例,作好測試前的準備工作。
(2)為了保證測試的質(zhì)量,將測試過(guò)程分成幾個(gè)階段,即:代碼審查、單元測試、集成測試和驗收測試。
(3)代碼會(huì )審:
代碼會(huì )審是由一組人通過(guò)閱讀、討論和爭議對程序進(jìn)行靜態(tài)分析的過(guò)程。會(huì )審小組由組長(cháng),2~3名程序設計和測試人員及程序員組成。會(huì )審小組在充分閱讀待審程序文本、控制流程圖及有關(guān)要求、規范等文件基礎上,召開(kāi)代碼會(huì )審會(huì ),程序員逐句講解程序的邏輯,并展開(kāi)熱烈的討論甚至爭議,以揭示錯誤的關(guān)鍵所在。實(shí)踐表明,程序員在講解過(guò)程中能發(fā)現許多自己原來(lái)沒(méi)有發(fā)現的錯誤,而討論和爭議則進(jìn)一步促使了問(wèn)題的暴露。例如,對某個(gè)局部性小問(wèn)題修改方法的討論,可能發(fā)現與之有牽連的甚至能涉及到模塊的功說(shuō)明、模塊間接口和系統總結構的大問(wèn)題,導致對需求定義的重定義、重設計驗證,大大改善了軟件的質(zhì)量。
(4)單元測試:
單元測試集中在檢查軟件設計的最小單位-模塊上,通過(guò)測試發(fā)現實(shí)現該模塊的實(shí)際功能與定義該模塊的功能說(shuō)明不符合的情況,以及編碼的錯誤。由于模塊規模小、功能單一、邏輯簡(jiǎn)單,測試人員有可能通過(guò)模塊說(shuō)明書(shū)和源程序,清楚地了解該模塊的I/O條件和模塊的邏輯結構,采用結構測試(白盒法)的用例,盡可能達到徹底測試,然后輔之以功能測試(黑盒法)的用例,使之對任何合理和不合理的輸入都能鑒別和響應。高可靠性的模塊是組成可靠系統的堅實(shí)基礎。
(5)集成測試:
集成測試是將模塊按照設計要求組裝起來(lái)同時(shí)進(jìn)行測試,主要目標是發(fā)現與接口有關(guān)的問(wèn)題。如數據穿過(guò)接口時(shí)可能丟失;一個(gè)模塊與另一個(gè)模塊可能有由于疏忽的問(wèn)題而造成有害影響;把子功能組合起來(lái)可能不產(chǎn)生預期的主功能;個(gè)別看起來(lái)是可以接受的誤差可能積累到不能接受的程度;全程數據結構可能有錯誤等。
(6)驗收測試:
驗收測試的目的是向未來(lái)的用戶(hù)表明系統能夠像預定要求那樣工作。經(jīng)集成測試后,已經(jīng)按照設計把所有的模塊組裝成一個(gè)完整的軟件系統,接口錯誤也已經(jīng)基本排除了,接著(zhù)就應該進(jìn)一步驗證軟件的有效性,這就是驗收測試的任務(wù),即軟件的功能和性能如同用戶(hù)所合理期待的那樣。
經(jīng)過(guò)上述的測試過(guò)程對軟件進(jìn)行測試后,軟件基本滿(mǎn)足開(kāi)發(fā)的要求,測試宣告結束,經(jīng)驗收后,將軟件提交用戶(hù)。
3.測試方法分析
集成測試及其后的測試階段,一般采用黑盒方法。
(1)用邊值分析法和(或)等價(jià)分類(lèi)法提出基本的測試用例;
(2)用猜測法補充新的測試用例;
原文轉自:http://kjueaiud.com