淡海英
(陜西國防工業(yè)職業(yè)技術(shù)學(xué)院,陜西 西安 710300)
隨著社會信息化的發(fā)展,軟件的使用涉及到各行各業(yè),軟件的身影幾乎無處不在。軟件的普遍使用使得人們對軟件的質(zhì)量提出了越來越高的要求。那么軟件測試作為軟件質(zhì)量保證的一種手段應(yīng)用而生。由于軟件產(chǎn)品和其他產(chǎn)品一樣也具有生命周期:誕生、成長、成熟、衰亡等過程。軟件測試可以貫穿于軟件開發(fā)的全過程,從需求分析到概要設(shè)計,再到詳細(xì)設(shè)計,再到編碼,每一個階段都可隨時跟進(jìn),盡可能多地發(fā)現(xiàn)軟件中存在的缺陷,以提高軟件的質(zhì)量。
軟件測試的分類方法很多,可從不從方面進(jìn)行分類。從運(yùn)行軟件的角度分為靜態(tài)測試(或靜態(tài)分析)方法和動態(tài)測試方法。靜態(tài)測試也叫靜態(tài)白盒測試,它不實(shí)際運(yùn)行程序。而是通過代碼的走查、代碼的審查或者代碼的閱讀分析來發(fā)現(xiàn)缺陷或錯誤。功能測試通過分析軟件的功能規(guī)約來設(shè)計測試用例,并參考需求說明書是否已經(jīng)全部實(shí)現(xiàn)了軟件的各項功能。程序和需求結(jié)合的測試是目前最常用的方法,它綜合考慮軟件的需求和實(shí)現(xiàn)來設(shè)計測試用例,以判斷測試的充分性。界面測試是面向?qū)ο蠹夹g(shù)常用的測試方法它僅僅依靠軟件與其運(yùn)行環(huán)境之間的界面設(shè)計測試用例,并判斷其功能是否已經(jīng)全部實(shí)現(xiàn)。從測試技術(shù)的角度劃分,軟件測試方法分為黑盒測試和白盒測試方法。黑盒測試是在已知軟件產(chǎn)品技術(shù)的角度劃分,軟件測試方法分為黑盒測試和白盒測試方法。黑盒測試是在已知軟件產(chǎn)品的功能設(shè)計的情況下,對其進(jìn)行測試,以確認(rèn)其是否實(shí)現(xiàn)了軟件產(chǎn)品的功能要求。黑盒測試將被測對象看做一個黑匣子,不考慮程序的內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn),僅僅依據(jù)軟件需求說明書,進(jìn)行相應(yīng)的數(shù)據(jù)輸入,檢查是否滿足需求說明書中規(guī)定的功能要求。黑盒測試的具體任務(wù)首先是判定有無不正確的功能,有無遺漏的功能,然后在接口上判斷是否能夠正確地接收輸入數(shù)據(jù)并產(chǎn)生正確的輸出結(jié)果,其次是判斷有無外部信息訪問的錯誤或者數(shù)據(jù)結(jié)構(gòu)的錯誤,最后判斷性能上是否能夠滿足需求,是否有程序初始化和終止方面的錯誤。白盒測試是基于代碼的測試,通過程序代碼或者通過開發(fā)工具找出軟件的缺陷。白盒測試的主要目的是檢測軟件程序內(nèi)部結(jié)構(gòu),程序書寫是否規(guī)范、是否按照項目需求規(guī)格說明正常進(jìn)行。白盒測試應(yīng)先盡量用工具進(jìn)行靜態(tài)結(jié)構(gòu)分析,采取先靜態(tài)后動態(tài)的組合方式,在不同的測試階段,測試重點(diǎn)有所不同,在單元測試階段,以代碼的檢查、邏輯覆蓋為主,在集成測試階段,增加靜態(tài)分析和靜態(tài)質(zhì)量度量,在系統(tǒng)測試階段,應(yīng)根據(jù)黑盒測試的結(jié)果,采取相應(yīng)的白盒測試。
軟件測試的流程是指導(dǎo)軟件測試工作有序進(jìn)行的重要保障,軟件測試流程主要有五步:
第一,先熟悉《需求說明書》,這是軟件測試工作的依據(jù),如同法律條文一樣,法官依據(jù)此對嫌疑人進(jìn)行量刑判罪。如果開發(fā)的系統(tǒng)實(shí)現(xiàn)了說明書中沒有的功能,或者開發(fā)的系統(tǒng)中沒有實(shí)現(xiàn)需求說明書中規(guī)定的功能,這些均屬于缺陷。第二,由相關(guān)人員編寫《測試計劃》,以規(guī)定測試的目的、范圍、人員、進(jìn)度、風(fēng)險等問題。第三,由測試人員進(jìn)行《測試用例》的編寫。針對軟件或者系統(tǒng)的每一個模塊進(jìn)行用例的詳細(xì)設(shè)計,盡可能多地對系統(tǒng)進(jìn)行測試,當(dāng)然,還需明確一點(diǎn),由于時間和技術(shù)的因素,測試人員不可能窮盡所有的測試用例,只能編寫大部分測試用例,覆蓋所有的模塊。第四,按照單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試、驗收測試步驟進(jìn)行軟件測試,其中單元測試是對軟件系統(tǒng)各模塊的測試,集成測試是針對模塊與模塊之間的測試,確認(rèn)測試是根據(jù)軟件的需求說明書對比軟件的功能是否全部實(shí)現(xiàn),系統(tǒng)測試是將軟件系統(tǒng)放置于不同的軟硬件環(huán)境下進(jìn)行測試,驗收測試是將系統(tǒng)交給用戶來進(jìn)行測試發(fā)現(xiàn)缺陷的過程。第五,執(zhí)行完測試后,匯總系統(tǒng)中的缺陷,總結(jié)測試工作,從設(shè)計多少條用例、發(fā)現(xiàn)多少個缺陷、風(fēng)險如何規(guī)避、軟件系統(tǒng)的評價、團(tuán)隊的得失等方面進(jìn)行。
軟件開發(fā)完成了軟件系統(tǒng)從無到有的設(shè)計與產(chǎn)生,軟件測試完成了軟件缺陷的查找和搜尋,保證了軟件的質(zhì)量提升。二者相輔相成,缺一不可。作為大型的軟件公司,應(yīng)該將軟件開發(fā)和軟件測試工作并重,給予軟件測試工作極大的支持和重視,作為測試人員要熟悉軟件測試的技術(shù)、方法和工作流程,在實(shí)際的測試工作中不斷積累測試經(jīng)驗,讓測試工作為軟件質(zhì)量保駕護(hù)航。