軟件測試方法的分析與研究
開發(fā)過程中一次性開發(fā)成功或者無錯(cuò)誤發(fā)生的幾率為零,因此在軟件的開發(fā)過程中需要不斷的完善,而這個(gè)不斷完善修改的過程就是軟件測試的過程。軟件測試也代表了了設(shè)計(jì)、編碼的最終復(fù)審。著重論述了目前軟件工程中普遍存在的一些測試問題,并對其產(chǎn)生的原因進(jìn)行了詳細(xì)的分析。介紹了軟件測試的本質(zhì),同時(shí)對目前流行的測試方法進(jìn)行了研究,提出了不同類型的軟件最佳的測試方案。
1、概述
信息技術(shù)的飛速發(fā)展,使軟件產(chǎn)品應(yīng)用到社會的各個(gè)領(lǐng)域,軟件產(chǎn)品的質(zhì)量自然成為人們共同關(guān)注的焦點(diǎn)。軟件開發(fā)商為了占有市場,必須把產(chǎn)品質(zhì)量作為企業(yè)的重要目標(biāo)之一,以免在激烈的競爭中被淘汰。用戶為了保證自己業(yè)務(wù)的順利完成,總是希望選用優(yōu)質(zhì)的軟件。
質(zhì)量不佳的軟件產(chǎn)品不僅會使開發(fā)商的維護(hù)費(fèi)用和用戶的使用成本大幅增加,還可能產(chǎn)生其他的責(zé)任風(fēng)險(xiǎn),在一些關(guān)鍵應(yīng)用,如民航訂票系統(tǒng)、銀行結(jié)算系統(tǒng)、證券交易系統(tǒng)等中使用質(zhì)量有問題的軟件,還可能造成災(zāi)難性的后果。
軟件危機(jī)曾經(jīng)是軟件界甚至整個(gè)計(jì)算機(jī)界最熱門的話題,為了解決這個(gè)危機(jī),軟件從業(yè)人員、專家和學(xué)者做出了大量的努力?,F(xiàn)在人們已經(jīng)逐步認(rèn)識到所謂的軟件危機(jī)實(shí)際上僅是一種狀況,那就是軟件中有錯(cuò)誤,正是這些錯(cuò)誤導(dǎo)致了軟件開發(fā)在成本、進(jìn)度和質(zhì)量上的失控。有錯(cuò)是軟件的屬性,而且是無法改變的。因?yàn)檐浖怯扇藖硗瓿傻?,所有由人做的工作都不會是完美無缺的。問題在于應(yīng)該如何去避免錯(cuò)誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯(cuò)誤,使程序中的錯(cuò)誤密度達(dá)到盡可能低的程度。
軟件工程學(xué)出現(xiàn)后,軟件開發(fā)被視為一項(xiàng)工程,以工程化的方法來進(jìn)行規(guī)劃和管理軟件的開發(fā)。事實(shí)上,不論采用什么技術(shù)和什么方法,軟件中出現(xiàn)錯(cuò)誤總是難免的。采用新的語言、先進(jìn)的開發(fā)方式、完善的開發(fā)過程,可以減少錯(cuò)誤的引入,但是不可能完全杜絕軟件中的錯(cuò)誤,這些引入的錯(cuò)誤需要測試來找出。測試是軟件開發(fā)的重要部分。
統(tǒng)計(jì)表明,在典型的軟件開發(fā)項(xiàng)目中,軟件測試工作量往往占軟件開發(fā)總工作量的40%以上。而在軟件開發(fā)的總成本中用在測試上的開銷要占30%到50%。如果把維護(hù)階段也考慮在內(nèi),討論整個(gè)軟件生存時(shí)期時(shí),測試的成本比例也許會有所降低,但實(shí)際上維護(hù)工作相當(dāng)于二次開發(fā),仍至多次開發(fā),其中必定還包含有許多測試工作。系統(tǒng)的問題越早發(fā)現(xiàn),改正成本越低,破壞性越小,所以,在系統(tǒng)發(fā)布前要盡量多地把系統(tǒng)問題找出來,其手段就是有計(jì)劃、有組織地進(jìn)行充分的測試。
軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一組測試數(shù)據(jù),并利用這些測試數(shù)據(jù)運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。根據(jù)測試數(shù)據(jù)設(shè)計(jì)方法,軟件測試可分為結(jié)構(gòu)測試和功能測試。在結(jié)構(gòu)測試過程中,測試者對程序的語句、分支和邏輯路徑進(jìn)行各種覆蓋測試,可以在不同點(diǎn)檢查程序的狀態(tài),以確定實(shí)際狀態(tài)與預(yù)期狀態(tài)是否一致。軟件測試的目的是發(fā)現(xiàn)錯(cuò)誤,而不是確認(rèn)其正確性,而對已進(jìn)行的測試過程的程度進(jìn)行評估。
2、測試方法
2.1 軟件測試實(shí)質(zhì)
軟件測試是一項(xiàng)邏輯性強(qiáng)、且極具條理的工作,也是具有風(fēng)險(xiǎn)性的行為。由于軟件的輸入量、輸出結(jié)果、軟件實(shí)現(xiàn)途徑都很多,而且軟件產(chǎn)品說明書沒有客觀的標(biāo)準(zhǔn),導(dǎo)致從不同的角度看,軟件缺陷的標(biāo)準(zhǔn)不同,因而無法對軟件實(shí)施完全測試,這樣,就無法通過軟件測試顯示隱藏的軟件缺陷,只能盡量查找軟件缺陷,找到的軟件缺陷越多,說明軟件本身的缺陷就越多,況且還有一些是未發(fā)現(xiàn)、不能斷定的缺陷,這就是軟件測試的局限性。
所有的軟件測試都有2個(gè)關(guān)鍵的問題組成:建立能測試應(yīng)用程序的環(huán)境,并在該環(huán)境中測試軟件能力。測試員必須理解和重新生成軟件所在的復(fù)雜軟件環(huán)境,并運(yùn)用其能力確保正常的測試。
2.2 軟件測試手段
從測試是否針對系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)算法的角度來看,可分為白盒測試和黑盒測試。
2.2.1 黑盒測試
黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動測試,它是在已知產(chǎn)品所應(yīng)具有的功能情況下,通過測試來檢測每個(gè)功能是否都能正常使用。在測試時(shí),把程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者在程序接口進(jìn)行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息并且保持外部信息(如:數(shù)據(jù)庫或文件)的完整性。黑盒法著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),只針對軟件界面和軟件功能進(jìn)行測試,它主要用于軟件驗(yàn)收測試。黑盒法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。測試情況實(shí)際上有無窮多個(gè),人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進(jìn)行測試。
2.2.2 白盒測試
白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,它是在已知產(chǎn)品內(nèi)部工作過程情況下,通過測試來檢測產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作,而不顧它的功能。白盒測試的主要方法有邏輯驅(qū)動、基路測試等,白盒法是窮舉路徑測試,主要用于軟件驗(yàn)證。
【編輯推薦】