李科華
【摘 要】軟件的開發(fā)需要多次、不斷地對軟件進行完善,這個完善的過程就是軟件測試的過程。文章針對目前流行的測試方法進行了分析,提出了不同類型的軟件最佳的測試方案。
【關(guān)鍵詞】軟件測試;測試方法;黑盒測試
【中圖分類號】TP306 【文獻標識碼】A 【文章編號】1672-5158(2013)03-0026-01
隨著軟件產(chǎn)業(yè)的迅速發(fā)展,軟件產(chǎn)品的質(zhì)量已成為軟件企業(yè)生存與發(fā)展的關(guān)鍵。軟件缺陷自軟件誕生的那一日起就跟隨著出現(xiàn),軟件測試就應(yīng)運而生。隨著軟件內(nèi)容和結(jié)構(gòu)的不斷豐富,軟件缺陷也日趨多樣化,引起更為嚴重的質(zhì)量問題。軟件測試方法的研究正是本著提高軟件質(zhì)量,降低軟件缺陷的影響。隨著人們對軟件質(zhì)量的重視,軟件測試也不斷得到加強和持續(xù)發(fā)展。
1、軟件測試的定義
軟件測試應(yīng)該是以查找軟件缺陷為目標的一種過程,測試用例設(shè)計和缺陷管理是軟件測試中提高缺陷查找效率和缺陷處理效率的兩個有效手段。軟件測試依靠的是強大的邏輯和條理性來完成工作,也同時存在著一定的風(fēng)險。軟件的應(yīng)用形式多樣,輸出和實現(xiàn)功能的方式也不止一種,而產(chǎn)品設(shè)計中缺乏客觀的標準,就使得軟件缺陷的標準也變的多樣,沒有任何一種方式能夠?qū)浖M行完全測試。這樣,就無法通過軟件測試顯示隱藏的軟件缺陷,只能盡量查找軟件缺陷,找到的軟件缺陷越多,說明軟件本身的缺陷就越多,同時尚有在測試過程中被發(fā)現(xiàn)和斷定的缺陷,這也是軟件測試的局限性。
2、軟件測試的基本方法
軟件測試過程包含幾個階段:測試需求的分析和確定;測試計劃;測試執(zhí)行;測試記錄和跟蹤;回歸測試;測試總結(jié)和報告。狹義的測試是指在代碼編寫完成后對代碼進行測試,而廣義的測試開始于需求階段,伴隨著設(shè)計、實現(xiàn)階段。如測試需求規(guī)格說明書,測試設(shè)計框架等??梢詮牟煌嵌葋韯澐周浖y試方法。
2.1靜態(tài)測試和動態(tài)測試
軟件測試從是否需要執(zhí)行被測軟件的角度,可以將軟件測試分為靜態(tài)測試和動態(tài)測試。靜態(tài)測試是指依據(jù)需求規(guī)格說明書、軟件設(shè)計說明書、源程序做結(jié)構(gòu)分析、流程圖分析、符號執(zhí)行,對軟件進行分析、檢查和測試,不實際運行被測試的軟件,約可找出30%到70%的邏輯設(shè)計錯誤。這種方式不通過程序運行就能夠?qū)ふ掖a中的缺陷或?qū)Τ绦蛑械拇a進行評估,可以由人來操作,發(fā)揮了人的邏輯思維的優(yōu)勢或測試經(jīng)驗,能夠批量性地發(fā)現(xiàn)問題,并直接定位到缺陷或錯誤的具體位置。靜態(tài)測試可以分為靜態(tài)分析和代碼走查。靜態(tài)分析是一種計算機輔助靜態(tài)分析方法。主要對程序進行控制流分析、數(shù)據(jù)流分析、接口分析和表達式分析等。靜態(tài)分析的對象是計算機程序,程序設(shè)計語言不同,相應(yīng)的靜態(tài)分析工具也不盡相同。代碼走查是一種人工測試方法,它一般依靠有經(jīng)驗的程序員根據(jù)需求分析、設(shè)計規(guī)格等來執(zhí)行。動態(tài)測試是指通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性。動態(tài)測試有兩個基本要素:被測試程序和測試數(shù)據(jù)。
必須生成測試數(shù)據(jù)來運行被測試程序,取得程序運行的真實情況、動態(tài)情況,進而進行分析測試質(zhì)量依賴于測試數(shù)據(jù)。
2.2黑盒測試、白盒測試、灰盒測試
從測試是否針對系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實現(xiàn)算法來看,可以將軟件測試分為黑盒測試、白盒測試、灰盒測試。
黑盒測試又稱功能測試,數(shù)據(jù)驅(qū)動的測試或者基于規(guī)格說明書的測試。黑盒測試可以從軟件的功能為起始,根據(jù)功能的需求說明測試所用的方式,并依據(jù)該方式的需求來運行被測試的程序。從名字上來解釋,就是將軟件看成是不透明的黑盒子,對于盒子內(nèi)部的結(jié)構(gòu)不理會,只關(guān)注軟件的實用功能,并對這些功能進行測試。
白盒測試又稱結(jié)構(gòu)測試,玻璃盒測試或基于覆蓋的測試。相比較于黑盒測試,它更關(guān)注于軟件內(nèi)部邏輯結(jié)構(gòu),其測試的重點是測試用例的覆蓋程序結(jié)構(gòu)的程度。白盒測試,是將軟件比作透明可見的盒子,測試人員可以根據(jù)程序內(nèi)部的邏輯結(jié)構(gòu)來設(shè)計測試用例,來測試程序的邏輯路徑。
灰盒測試,也稱跟蹤法測試,是指介于白盒測試和黑盒測試之間的一種測試方法,它關(guān)注輸出對于輸入的正確性,同時也關(guān)注內(nèi)部結(jié)構(gòu)形式的程度,它跟蹤程序的運行過程,特別是輸入數(shù)據(jù)在程序中的“流程”。比如,測試人員輸入數(shù)據(jù)后,軟件會將其轉(zhuǎn)換為代碼并通信至服務(wù)器,服務(wù)器經(jīng)過一系列的處理,將數(shù)據(jù)傳送給客戶端,并最終顯示給測試者?;液袦y試能夠?qū)φw的過程進行追蹤,對每一步的數(shù)據(jù)進行測試。。但較白盒測試而言,灰盒測試沒有深入解析程序的結(jié)構(gòu),但也不像黑盒測試那樣只關(guān)注輸入和輸出,它也關(guān)心程序中間的某些流程是否正確。
3、軟件測試用例設(shè)計
傳統(tǒng)軟件測試用例設(shè)計是從軟件的各個模塊的算法細節(jié)得出的,而面向?qū)ο蟮能浖y試用例則著眼于適當?shù)牟僮餍蛄?,以實現(xiàn)對類的說明,主要有基于故障的測試、基于腳本的測試和類層次的分割測試等形式。
3.1基于故障的測試
軟件系統(tǒng)最終是以實現(xiàn)用戶的需求為目的的?;诠收系臏y試是從模型分析開始,逐步來測試軟件可能發(fā)生的故障,為了確定故障的類型和存在方式,一般設(shè)計用例去執(zhí)行代碼?;诠收系臏y試核心問題是測試者怎么來判定錯誤的性質(zhì)?!翱赡艿腻e誤”可以是意料之外的結(jié)果,不正當?shù)牟僮?,錯誤的引用等。如果是操作不當引起的錯誤或故障還需要對操作進行檢查,排除操作因素引起的故障。這種方法除用于操作測試外,還可用于屬性測試,確定其對于不同類型對象行為是否賦予了正確的屬性值。
3.2基于腳本的測試
基于腳本的測試主要關(guān)注用戶的需求,并從用戶任務(wù)中找出用戶要做什么及去執(zhí)行。這種基于腳本的測試有助于在一個單元測試情況下檢查多重系統(tǒng),所以基于腳本用例測試比基于故障測試更實際也更復(fù)雜。
3.3類層次的分割測試
類層次的分割測試可以減少用完全相同的方式檢查類測試用例的數(shù)目,這與傳統(tǒng)測試中的等價類劃分測試很相似。類層次的分割測試主要分為:基于狀態(tài)的分割,按類操作是否改變類的狀態(tài)來分割;基于屬性的分割,按類操作所用到的屬性來分割;基于類型的分割,按完成的功能分割。
4、結(jié)語
軟件設(shè)計中出現(xiàn)的缺陷是無法完全消除的,卻可以通過軟件測試來降低缺陷的發(fā)生,隨著市場對軟件質(zhì)量要求的提高,軟件測試在軟件開發(fā)中的地位越來越重要。軟件測試的最終目的不是為了找出軟件設(shè)計中的錯誤和故障,而是通過測試來發(fā)現(xiàn)缺陷,找出缺陷的分布特征和出現(xiàn)的規(guī)律,以期在新的開發(fā)項目中尋找更優(yōu)的方式來避免缺陷的出現(xiàn),改進設(shè)計結(jié)構(gòu),同時也能夠通過設(shè)計有針對性的檢測方法,改善軟件測試的有效性。
參考文獻
[1]侯衍龍.基于UML的面向?qū)ο蠼<夹g(shù)與應(yīng)用[D].南京,南京航空航天大學(xué),2002
[2]朱少民.軟件測試方法和技術(shù)[M].北京:清華大學(xué)出版社,2005