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