軟件測試的基礎(chǔ)知識概要介紹[2]
——
軟件測試的目的決定了如何去組織測試。如果測試的目的是為了盡可能多地找出錯誤,那么測試就應(yīng)該直接針對軟件比較復(fù)雜的部分或是以前出錯比較多的位置。如果測試目的是為了給最終用戶提供具有一定可信度的質(zhì)量評價,那么測試就應(yīng)該直接針對在實際應(yīng)用中會經(jīng)常用到的商業(yè)假設(shè)。
不同的機構(gòu)會有不同的測試目的;相同的機構(gòu)也可能有不同測試目的,可能是測試不同區(qū)域或是對同一區(qū)域的不同層次的測試。
在談到軟件測試時,許多人都引用grenford j. myers在《the art of software testing》一書中的觀點:
①、軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;
②、測試是為了證明程序有錯,而不是證明程序無錯誤。
③、一個好的測試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;
④、一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。
這種觀點可以提醒人們測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點可能會產(chǎn)生誤導(dǎo),認為發(fā)現(xiàn)錯誤是軟件測試的唯一目,查找不出錯誤的測試就是沒有價值的,事實并非如此。
首先,測試并不僅僅是為了要找出錯誤。通過分析錯誤產(chǎn)生的原因和錯誤的分布特征,可以幫助項目管理者發(fā)現(xiàn)當前所采用的軟件過程的缺陷,以便改進。同時,這種分析也能幫助我們設(shè)計出有針對性地檢測方法,改善測試的有效性。
其次,沒有發(fā)現(xiàn)錯誤的測試也是有價值的,完整的測試是評定測試質(zhì)量的一種方法。詳細而嚴謹?shù)目煽啃栽鲩L模型可以證明這一點。例如 bev littlewood發(fā)現(xiàn)一個經(jīng)過測試而正常運行了n小時的系統(tǒng)有繼續(xù)正常運行n小時的概率。
三、軟件測試的基本方法
軟件測試的方法和技術(shù)是多種多樣的。
對于軟件測試技術(shù),可以從不同的角度加以分類:
從是否需要執(zhí)行被測軟件的角度,可分為靜態(tài)測試和動態(tài)測試。
從測試是否針對系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實現(xiàn)算法的角度來看,可分為白盒測試和黑盒測試;
1、黑盒測試
黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動測試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過測試來檢測每個功能是否都能正常使用,在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當?shù)亟邮蛰斎霐?shù)鋸而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫或文件)的完整性。黑盒測試方法主要有等價類劃分、邊值分析、因?果圖、錯誤推測等,主要用于軟件確認測試。
“黑盒”法著眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部邏輯結(jié)構(gòu)、針對軟件界面和軟件功能進行測試?!昂诤小狈ㄊ歉F舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。
2、白盒測試
白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,它是知道產(chǎn)品內(nèi)部工作過程,可通過測試來檢測產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行,按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測試的主要方法有邏輯驅(qū)動、基路測試等,主要用于軟件驗證。
“白盒”法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對所有邏輯路徑進行測試。“白盒”法是窮舉路徑測試。在使用這一方案時,測試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測試數(shù)據(jù)。貫穿程序的獨立路徑數(shù)是天文數(shù)字。但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設(shè)計規(guī)范,即程序本身是個錯誤的程序。第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯。第三,窮舉路徑測試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯誤。
3.a(chǎn)lac(act-like-a-customer)測試
alac測試是一種基于客戶使用產(chǎn)品的知識開發(fā)出來的測試方法。alac測試是基于復(fù)雜的軟件產(chǎn)品有許多錯誤的原則。最大的受益者是用戶,缺陷查找和改正將針對哪些客戶最容易遇到的錯誤。
評論