《軟件測試教程(華為培訓(xùn)專用)-第4章》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件測試教程(華為培訓(xùn)專用)-第4章(40頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、,基于缺陷模式的軟件測試,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,基于缺陷模式的軟件測試,基于缺陷模式的軟件測試,基于缺陷模式的軟件測試概述,基于缺陷模式的軟件測試指標(biāo)分析,缺陷模式,基于缺陷模式的軟件測試系統(tǒng)(DTS),基于缺陷模式的軟件測試概述,缺陷模式必須滿足下列幾個(gè)條件:,該模式下的缺陷是符合實(shí)際的。,基于該模式的缺陷數(shù)目是可以容忍的。,該模式下的缺陷是可以測試的。,基于缺陷模式的軟件測試概述,基于模式的軟件測試技術(shù)具有如下特點(diǎn):,針對(duì)性強(qiáng):如果說某種模式的缺陷是經(jīng)常發(fā)生的,并且在被測軟件中是存在的,則面向缺陷的測試可以檢測出此類缺陷。,基于缺陷模式的軟件測試技術(shù)
2、往往能發(fā)現(xiàn)其他測試技術(shù)難以發(fā)現(xiàn)的故障,如內(nèi)存泄漏缺陷,空指針引用缺陷。,工具自動(dòng)化程度高以及測試效率高。,缺陷定位準(zhǔn)確:對(duì)測試所發(fā)現(xiàn)的缺陷能夠準(zhǔn)確定位。,易學(xué)、易使用:對(duì)一般的,IT,專業(yè)專科以上的畢業(yè)生,該測試方法一般經(jīng)過數(shù)天的培訓(xùn)即可掌握其使用方法。,基于缺陷模式的軟件測試概述,基于缺陷模式的軟件測試指標(biāo)分析,缺陷模式,基于缺陷模式的軟件測試系統(tǒng)(,DTS,),基于缺陷模式的軟件測試,基于缺陷模式的軟件測試指標(biāo)分析,設(shè)P是待測程序,將缺陷模式M分成類M=M1,M2,Mn,每類分成種Mi=Mi1,Mi2,MiL,從P中計(jì)算出和M相匹配的檢查點(diǎn)的集合IP=IP1,IP2,IPm,可以定義如下技
3、術(shù)指標(biāo):,漏報(bào)率,(ER),:設(shè),P,是程序,,M,是缺陷模式,,A,是算法,,IP,(,M,,,A,,,P,)是,IP,總的數(shù)目,考慮到測試算法實(shí)現(xiàn)過程中的不同假設(shè),會(huì)導(dǎo)致,IP,(,M,,,A,,,P,)不同。漏報(bào)率定義為:,基于缺陷模式的軟件測試指標(biāo)分析,準(zhǔn)確率,(CR),:,誤報(bào)率,(DR),:,基于缺陷模式的軟件測試指標(biāo)分析,缺陷檢測率,(DDR),:,自動(dòng)缺陷檢測率,(ADR),:,用,IPAY,(,P,,,A,,,M,)表示不需人工確認(rèn),工具可以自動(dòng)缺陷的檢測個(gè)數(shù)。,基于缺陷模式的軟件測試指標(biāo)分析,計(jì)算復(fù)雜性:,在理論上,基于缺陷的軟件測試技術(shù)可以,100%,的檢測所定義的缺陷模
4、式,但由于缺陷的檢測可以模型化程序的遍歷問題,對(duì)于大型程序,全部遍歷雖然可以提高精度,但需要花費(fèi)大量的時(shí)間。因此,該技術(shù)有一個(gè)性價(jià)比的問題,在時(shí)間遍歷過程中,往往都有一定的限制,如在一個(gè)函數(shù)內(nèi)、一個(gè)類內(nèi)、一個(gè)文件內(nèi)等。,基于缺陷模式的軟件測試指標(biāo)分析,基于缺陷模式的軟件測試,基于缺陷模式的軟件測試概述,基于缺陷模式的軟件測試指標(biāo)分析,缺陷模式,基于缺陷模式的軟件測試系統(tǒng)(,DTS,),缺陷模式,缺陷模式概述,故障模式,安全漏洞模式,缺陷模式,缺陷模式概述,缺陷模式是和語言本身相關(guān)的,不同的語言有著不同的缺陷模式。我們以C+語言和Java語言為背景來描述其缺陷模式,將軟件的缺陷模式分為四個(gè)層次,
5、即故障模式、漏洞模式、缺陷模式和規(guī)則模式。,故障模式,:,此類缺陷是故障,一經(jīng)產(chǎn)生,會(huì)導(dǎo)致系統(tǒng)出錯(cuò)。,存儲(chǔ)器泄露模式,資源泄漏模式,指針使用錯(cuò)誤模式,數(shù)組越界模式,非法計(jì)算模式,使用未初始化變量模式,死循環(huán)結(jié)構(gòu)模式,死鎖模式,缺陷模式概述,缺陷模式概述,安全漏洞模式:此類缺陷會(huì)給系統(tǒng)留下安全隱患,為攻擊該系統(tǒng)開了綠燈。,緩沖區(qū)溢出模式,被感染的數(shù)據(jù)模式,競爭條件模式,風(fēng)險(xiǎn)操作模式,缺陷模式概述,缺陷模式:此類缺陷是不應(yīng)該發(fā)生的,它未必會(huì)造成系統(tǒng)的錯(cuò)誤,但可能會(huì)隱含某些故障,或者是由初級(jí)軟件工程師不理解造成的。,性能缺陷模式:此類缺陷會(huì)降低系統(tǒng)的性能,疑問代碼模式:讓人費(fèi)解的代碼,缺陷模式概述,
6、規(guī)則模式:軟件開發(fā)總要遵循一定的規(guī)則,某個(gè)團(tuán)隊(duì)也有一些開發(fā)規(guī)則,違反這些規(guī)則也是不允許的。,代碼規(guī)則,復(fù)雜性規(guī)則,控制流規(guī)則,命名規(guī)則,可移植性規(guī)則,資源規(guī)則,缺陷模式,缺陷模式概述,故障模式,安全漏洞模式,缺陷模式,故障模式,故障模式中給出的故障描述,是程序中可能存在的故障,這些故障一旦被激活,就會(huì)使系統(tǒng)發(fā)生錯(cuò)誤。包括以下幾種故障模式:,故障模式,存儲(chǔ)泄漏的故障模式(,Memory Leak Fault MLF,),定義:內(nèi)存泄漏故障(,Memory Leak Faults,):設(shè)在程序的某處申請(qǐng)了大小為,M,的空間,凡在程序結(jié)束時(shí),M,或者,M,的一部分沒被釋放、或者多次釋放,M,或,M,
7、的一部分都是內(nèi)存泄漏故障。,MLF,有三種形式:,遺漏故障:是指申請(qǐng)的內(nèi)存沒有被釋放。,不匹配故障:是指申請(qǐng)函數(shù)和釋放函數(shù)不匹配。,不相等的釋放錯(cuò)誤:是指釋放的空間和申請(qǐng)的空間大小不一樣。,故障模式,數(shù)組越界故障的故障模式(,Out of Bounds Array Access Fault OBAF,),定義:數(shù)組越界故障:設(shè)某數(shù)組定義為,Arraymin,max,,若引用,Arrayi,且,imax,都是數(shù)組越界故障。在,C+,中,若,i0,或,i,max,是數(shù)組越界故障。,(,1,)對(duì)程序中任何出現(xiàn),Arrayi,的地方,都要判斷,i,的范圍,可能有三種情況:,若,i,是在數(shù)組定義的范圍內(nèi)
8、,則是正確的;,若,i,是在數(shù)組定義的范圍外,則是,OBAF,;,故障模式,(2)字符串拷貝過程中存在的數(shù)組越界故障。,(3)在結(jié)構(gòu)類型中,由于結(jié)構(gòu)體中的成員變量是連續(xù)存放的,在數(shù)組的拷貝過程中,多余的數(shù)據(jù)會(huì)自動(dòng)的存放在后面所定義的成員變量中,這種情況數(shù)組并不產(chǎn)生越界錯(cuò)誤。,故障模式,3使用未初始化變量故障模式(Uninitialized Variable Fault,UVF),定義:使用未初始化變量故障:存在一個(gè)路徑,在該路徑上使用前面沒有被賦初值的變量是使用未初始化變量故障。,4空指針使用故障(NULL Pointer Dereference Fault NPDF),定義:空指針使用故障:
9、引用空指針或給空指針賦值的都是空指針使用故障。,故障模式,5非法計(jì)算類故障(Illegal Computing Fault ILCF),定義:非法計(jì)算類故障:是指計(jì)算機(jī)不允許的計(jì)算。,一旦非法計(jì)算類故障產(chǎn)生,系統(tǒng)將強(qiáng)行退出。例如:,除數(shù)為0故障。,對(duì)數(shù)自變量為0或負(fù)數(shù)故障。,根號(hào)內(nèi)為負(fù)數(shù)的故障。,故障模式,6,死循環(huán)結(jié)構(gòu)模式(Dead Loop Fault DLF),定義:在控制流圖中,對(duì)任何一個(gè)循環(huán)結(jié)構(gòu),包括:,FOR語句中的死循環(huán)結(jié)構(gòu);,WHILE語句中的死循環(huán)結(jié)構(gòu);,DO-WHILE語句中的死循環(huán)結(jié)構(gòu);,GOTO語句中的死循環(huán)結(jié)構(gòu);,函數(shù)循環(huán)調(diào)用造成的死循環(huán)結(jié)構(gòu)。,故障模式,7資源泄漏故
10、障(RLF),定義:資源泄漏故障:在Java程序中,當(dāng)一個(gè)資源被打開后,如果并不是在所有的可執(zhí)行路徑上都對(duì)其進(jìn)行了顯式的釋放操作,則是一個(gè)資源泄漏故障。,故障模式,8.并發(fā)故障模式,該模式主要是針對(duì)程序員對(duì)多線程的編碼機(jī)制、各種同步方法、Java存儲(chǔ)器模式和java虛擬機(jī)的工作機(jī)制不清楚,而且由于線程啟動(dòng)的任意性和不確定性使用戶無法確定所編寫的代碼具體何時(shí)執(zhí)行而導(dǎo)致對(duì)公共區(qū)域的錯(cuò)誤使用。這類模式主要包括不正確的同步、死鎖、多線程應(yīng)用中方法調(diào)用時(shí)機(jī)或方式不正確、同一變量的雙重驗(yàn)證、相互初始化的類和臨界區(qū)內(nèi)調(diào)用阻塞函數(shù)等。,缺陷模式,缺陷模式概述,故障模式,安全漏洞模式,缺陷模式,安全漏洞模式,安
11、全漏洞模式為他人攻擊軟件提供可能。而一旦軟件被攻擊成功,系統(tǒng)就可能發(fā)生癱瘓,所造成的危害較大,因此,此類漏洞應(yīng)當(dāng)盡量避免。,下面以C+為基礎(chǔ),介紹基于安全漏洞檢測的缺陷模式。,安全漏洞模式,緩沖區(qū)溢出(,buffer overflow,)漏洞模式,定義:當(dāng)程序要在一個(gè)緩沖區(qū)內(nèi)存儲(chǔ)比該緩沖區(qū)的大小還要多的數(shù)據(jù)時(shí),即會(huì)產(chǎn)生緩沖區(qū)溢出漏洞。,緩存區(qū)溢出主要有,2,種類型:數(shù)據(jù)拷貝造成的緩沖區(qū)溢出和格式化字符串造成的緩沖區(qū)溢出。,安全漏洞模式,被污染的數(shù)據(jù)模式,(Tainted Data),定義:程序從外部獲取數(shù)據(jù)時(shí),這些數(shù)據(jù)可能含有具有欺騙性或者是不想要的垃圾數(shù)據(jù),如果在使用這些數(shù)據(jù)前不進(jìn)行合法性檢
12、查則將威脅到程序的安全,造成一個(gè),tainted data,缺陷。,tainted data,可能會(huì)導(dǎo)致程序不按原計(jì)劃執(zhí)行,也有可能直接或間接地導(dǎo)致緩沖區(qū)溢出缺陷。,被污染的數(shù)據(jù)模式主要有兩種類型:使用的數(shù)據(jù)來自外部的全局變量和使用的數(shù)據(jù)來自輸入函數(shù)。,安全漏洞模式,競爭條件,(Race Condition),定義,:,如果程序中有兩種不同的,I/O,調(diào)用同一文件進(jìn)行操作,而且這兩種調(diào)用是通過絕對(duì)路徑或相對(duì)路徑引用文件的,那么就易出現(xiàn),Race Condition,問題。在兩種操作進(jìn)行的間隙,黑客可能改變文件系統(tǒng),那么將會(huì)導(dǎo)致對(duì)兩個(gè)不同的文件操作而不是同一文件進(jìn)行操作。,這種典型的問題發(fā)生在用
13、戶擁有不同的權(quán)限運(yùn)行的程序中,(,例如:,setuid,程序、數(shù)據(jù)庫和服務(wù)器程序等,),。,安全漏洞模式,風(fēng)險(xiǎn)操作(,Risky Operation,),定義:如果不恰當(dāng)?shù)厥褂昧四承?biāo)準(zhǔn)庫函數(shù),可能會(huì)帶來安全隱患。甚至在某些情況下,某些函數(shù)一經(jīng)被使用,就可能會(huì)帶來安全隱患。,例如像,rand(),和,random(),這樣的隨機(jī)數(shù)生成函數(shù),它們?cè)谏蓚坞S機(jī)值的時(shí)候表現(xiàn)出來的性能是非常差的,如果用它們來生成默認(rèn)的口令,這些口令將很容易被攻擊者猜測到。,缺陷模式,缺陷模式概述,故障模式,安全漏洞模式,缺陷模式,缺陷模式,低性能模式:,該模式導(dǎo)致軟件運(yùn)行效率低下,因此建議采用更高效的代碼來完成同樣的
14、功能。這類模式主要包括使用低效函數(shù)/代碼、使用多余函數(shù)、Java中顯式垃圾回收、冗余代碼、頭文件中定義的靜態(tài)變量、不必要的文件包含、字符串低效操作和有更簡單的運(yùn)算可以替代等。,基于缺陷模式的軟件測試,基于缺陷模式的軟件測試概述,基于缺陷模式的軟件測試指標(biāo)分析,缺陷模式,基于缺陷模式的軟件測試系統(tǒng)(,DTS,),基于缺陷模式的軟件測試系統(tǒng),(DTS),下面以作者自主開發(fā)的基于缺陷模式的測試系統(tǒng)DTS為例,介紹基于缺陷模式的軟件測試的基本原理。DTS是作者在國家863“軟件的故障模式與面向故障的軟件測試系統(tǒng)”資助下開發(fā)的測試系統(tǒng),能對(duì)上面介紹的缺陷模式進(jìn)行有效測試。,DTS,系統(tǒng)結(jié)構(gòu),基于缺陷模式的軟件測試系統(tǒng)(,DTS,),DTS,缺陷模式描述,1,缺陷模式狀態(tài)機(jī),有限自動(dòng)機(jī)是計(jì)算機(jī)科學(xué)的重要基石,它在軟件開發(fā)領(lǐng)域內(nèi)通常被稱作有限狀態(tài)機(jī)。,2缺陷模式狀態(tài)機(jī)的xml描述,作者用xml來對(duì)缺陷模式狀態(tài)機(jī)進(jìn)行描述。xml schema定義了描述缺陷模式狀態(tài)機(jī)的語法,包括標(biāo)簽以及標(biāo)簽的各個(gè)屬性。,基于缺陷模式的軟件測試系統(tǒng),(DTS),DTS,的測試界面,基于缺陷模式的軟件測試系統(tǒng),(DTS),