




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章基于缺陷模式的軟件測(cè)試
第4章基于缺陷模式的軟件測(cè)試4.1基于缺陷模式的軟件測(cè)試概述
4.2基于缺陷模式的軟件測(cè)試指標(biāo)分析
4.3缺陷模式
4.4基于缺陷模式的軟件測(cè)試系統(tǒng)(DTS)
4.1基于缺陷模式的軟件測(cè)試概述缺陷模式必須滿足下列幾個(gè)條件:該模式下的缺陷是符合實(shí)際的?;谠撃J降娜毕輸?shù)目是可以容忍的。該模式下的缺陷是可以測(cè)試的。
采用該種方式實(shí)現(xiàn)測(cè)試,首先必須建立一種可以使用的模型(模式),稱為缺陷模式?;谌毕菽J降能浖y(cè)試概述基于模式的軟件測(cè)試技術(shù)具有的特點(diǎn)(5條):針對(duì)性強(qiáng):如果說(shuō)某種模式的缺陷是經(jīng)常發(fā)生的,并且在被測(cè)軟件中是存在的,則面向缺陷的測(cè)試可以檢測(cè)出此類缺陷?;谌毕菽J降能浖y(cè)試技術(shù)往往能發(fā)現(xiàn)其他測(cè)試技術(shù)難以發(fā)現(xiàn)的故障,如內(nèi)存泄漏缺陷,空指針引用缺陷。工具自動(dòng)化程度高以及測(cè)試效率高。缺陷定位準(zhǔn)確:對(duì)測(cè)試所發(fā)現(xiàn)的缺陷能夠準(zhǔn)確定位。易學(xué)、易使用:對(duì)一般的IT專業(yè)??埔陨系漠厴I(yè)生,該測(cè)試方法一般經(jīng)過(guò)數(shù)天的培訓(xùn)即可掌握其使用方法。
缺陷模式經(jīng)過(guò)傳統(tǒng)軟件測(cè)試后,殘留在軟件中的缺陷一般都是小概率、開(kāi)發(fā)人員疏忽造成的。我們對(duì)8類軟件故障的測(cè)試實(shí)踐表明,經(jīng)過(guò)嚴(yán)格的傳統(tǒng)軟件測(cè)試,殘留在軟件中的故障密度為1~2個(gè)故障/10KLOC,而沒(méi)有經(jīng)過(guò)嚴(yán)格測(cè)試的軟件,其故障密度一般在5~10個(gè)故障/10KLOC,而這些故障一旦發(fā)生,往往會(huì)導(dǎo)致系統(tǒng)崩潰。軟件缺陷模式就是經(jīng)過(guò)理論分析、實(shí)踐總結(jié)歸納出來(lái)的,我們目前將其分為故障、漏洞、疑問(wèn)和規(guī)則模式。這是基于缺陷模式測(cè)試的核心技術(shù)之一。缺陷模式的概念(1)缺陷模式的定義缺陷模式是缺陷的語(yǔ)法或語(yǔ)義特征的抽象,具有一定代表性或者會(huì)造成嚴(yán)重后果。(2)缺陷模式中缺陷產(chǎn)生的原因?疏忽:缺陷模式中的缺陷一般是由開(kāi)發(fā)人員疏忽造成的。由于涉及可能多條路徑、多個(gè)約束條件,疏忽往往是不可避免的。這類缺陷往往都是和路徑或多個(gè)約束條件相關(guān)的。?不理解:缺陷模式中的缺陷也可能是由于開(kāi)發(fā)人員對(duì)程序語(yǔ)言本身不理解造成的。如對(duì)某些規(guī)則不了解、對(duì)某些語(yǔ)言現(xiàn)象不理解都可能會(huì)產(chǎn)生缺陷。(3)缺陷模式中缺陷的特點(diǎn):?一般都是非功能性的缺陷?路徑敏感的缺陷一般都是有由疏忽造成的?路徑不敏感的缺陷一般疏忽或不理解造成的?在大量工程軟件的測(cè)試結(jié)果統(tǒng)計(jì)中,模式中的缺陷是會(huì)存在于大多數(shù)的軟件中,并且有一定發(fā)生概率。這個(gè)概率要大于人們?nèi)萑痰姆秶?4)軟件缺陷模式中的缺陷發(fā)生密度?在以往的對(duì)N個(gè)軟件測(cè)試活動(dòng)中,該類缺陷的總個(gè)數(shù)除以N個(gè)軟件的總行數(shù)×1000,稱為該類缺陷的缺陷密度,用缺陷個(gè)數(shù)/KLOC表示,N越大,其缺陷密度統(tǒng)計(jì)的準(zhǔn)確性就越高。(5)缺陷模式的分類——按缺陷產(chǎn)生后的嚴(yán)重程度:故障模式、安全漏洞模式、疑問(wèn)代碼模式和規(guī)則模式(6)缺陷模式分類——按是否是路徑敏感?是路徑敏感:需要人工確認(rèn)?路徑不敏感:不需要人工確認(rèn)作用及意義軟件缺陷模式與測(cè)試是軟件測(cè)試領(lǐng)域中一種新型的軟件測(cè)試技術(shù)主要面向軟件的非功能性缺陷,可以檢測(cè)一般軟件測(cè)試技術(shù)中難以檢測(cè)的軟件缺陷與面向過(guò)程的軟件測(cè)試具有很好的互補(bǔ)性基于缺陷模式的測(cè)試技術(shù)與已往的軟件測(cè)試有很大的不同,檢測(cè)精度與效率比較高,測(cè)試成本低軟件缺陷模式缺陷發(fā)生機(jī)理:疏忽、二義性、不理解、遺漏分類:故障、安全漏洞、疑問(wèn)代碼、規(guī)則語(yǔ)法與語(yǔ)義定義:給出基于語(yǔ)言的缺陷定義缺陷新模式研究:論文、工具、實(shí)踐、推理缺陷模式數(shù)據(jù)庫(kù):核心技術(shù)之一,不斷增補(bǔ)嵌入式軟件缺陷模式研究:適合嵌入式特點(diǎn)4.1基于缺陷模式式的軟件測(cè)試試概述4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析4.3缺陷模式4.4基于缺陷模式式的軟件測(cè)試試系統(tǒng)(DTS)第4章基于缺陷陷模式的軟件件測(cè)試4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析設(shè)P是待測(cè)程程序,將缺陷陷模式M分成成類:M={M1,M2,…Mn},每類分成種:Mi={Mi1,Mi2,…,MiL},從P中計(jì)算出出和M相匹配配的檢查點(diǎn)的的集合:IP={IP1,IP2,…,IPm},可以定義如下下技術(shù)指標(biāo)::(1)漏報(bào)率(ER)(2)準(zhǔn)確確率(CR)(3)誤報(bào)率率(DR)(4)缺陷檢檢測(cè)率(DDR):(5)自動(dòng)缺缺陷檢測(cè)率(ADR)::(6)計(jì)算復(fù)復(fù)雜性4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析漏報(bào)率(ER):設(shè)P是程序,,M是缺陷模模式,A是算算法,IP(M,A,P)是IP總的數(shù)目目,由于測(cè)試算法法實(shí)現(xiàn)過(guò)程中中的不同假設(shè)設(shè),會(huì)導(dǎo)致IP(M,A,P)不同同。漏報(bào)率定義為為:4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析注意:理論上,在給給定M和P之后,IP(M,P)是確定的,但但在實(shí)際中很很難得到IP(M,P)。假設(shè)不同的的測(cè)試工具算算法為:A1,A2,…An,則通常用表表示IP(M,P)。對(duì)于每個(gè)IP通常需要人工工去判斷高IP是否真的是缺缺陷,根據(jù)程程序的邏輯復(fù)復(fù)雜性以及測(cè)測(cè)試代價(jià)等因因素,IP經(jīng)確認(rèn)后分為為3種情況:表示IP確認(rèn)為缺陷的的數(shù)目:IPY(M,A,P)表示IP確認(rèn)為非缺陷的數(shù)目:IPN(M,A,P)表示IP不能確定是否缺陷的數(shù)數(shù)目:IPU(M,A,P)所以,可得::IPY(M,A,P)+IPN(M,A,P)+IPU(M,A,P)=IP(M,A,P)準(zhǔn)確率(CR):誤報(bào)率(DR):4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析缺陷檢測(cè)率(DDR):自動(dòng)缺陷檢測(cè)測(cè)率(ADR):用IPAY(P,A,M)表示不需人人工確認(rèn),工工具可以自動(dòng)動(dòng)缺陷的檢測(cè)測(cè)個(gè)數(shù)。4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析計(jì)算復(fù)雜性::在理論上,基基于缺陷的軟軟件測(cè)試技術(shù)術(shù)可以100%的檢測(cè)所定義義的缺陷模式式,但由于缺陷的的檢測(cè)可以模模型化程序的的遍歷問(wèn)題,,對(duì)于大型程程序,全部遍遍歷雖然可以以提高精度,,但需要花費(fèi)費(fèi)大量的時(shí)間間。因此,該技術(shù)術(shù)有一個(gè)性價(jià)比的問(wèn)題,在時(shí)時(shí)間遍歷過(guò)程程中,往往都都有一定的限限制,如在一一個(gè)函數(shù)內(nèi)、、一個(gè)類內(nèi)、、一個(gè)文件內(nèi)內(nèi)等。4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析基于缺陷模式式的軟件測(cè)試試4.1基于缺陷模式式的軟件測(cè)試試概述4.2基于缺陷模式式的軟件測(cè)試試指標(biāo)分析4.3缺陷模式4.4基于缺陷模式式的軟件測(cè)試試系統(tǒng)(DTS)4.3缺陷模式缺陷模式概述述故障模式安全漏洞模式式缺陷模式缺陷模式概述述缺陷模式是和語(yǔ)言本身身相關(guān)的,不不同的語(yǔ)言有有著不同的缺缺陷模式。我們以C++語(yǔ)言和Java語(yǔ)言為背景來(lái)描述述其缺陷模式式。將軟件的缺陷陷模式分為四四個(gè)層次:即故障模式漏洞模式缺陷模式規(guī)則則模模式式軟件件缺缺陷陷模模式式的的分分類類::按按缺缺陷陷嚴(yán)嚴(yán)重重程程度度1.故障障模模式式:此類類缺缺陷陷是是故故障障,,一一經(jīng)經(jīng)產(chǎn)產(chǎn)生生,,會(huì)會(huì)導(dǎo)導(dǎo)致致系系統(tǒng)統(tǒng)出出錯(cuò)錯(cuò)。。主要要有有:存儲(chǔ)儲(chǔ)器器泄泄露露模模式式資源源泄泄漏漏模模式式指針針使使用用錯(cuò)錯(cuò)誤誤模模式式數(shù)組組越越界界模模式式非法法計(jì)計(jì)算算模模式式使用用未未初初始始化化變變量量模模式式死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)模模式式死鎖鎖模模式式缺陷陷模模式式概概述述缺陷陷模模式式概概述述2.安全全漏漏洞洞模模式式::此類類缺缺陷陷會(huì)會(huì)給給系系統(tǒng)統(tǒng)留留下下安安全全隱隱患患,,為為攻攻擊擊該該系系統(tǒng)統(tǒng)開(kāi)開(kāi)了了綠綠燈燈。。主要要有有::緩沖沖區(qū)區(qū)溢溢出出模模式式被感感染染的的數(shù)數(shù)據(jù)據(jù)模模式式競(jìng)爭(zhēng)爭(zhēng)條條件件模模式式風(fēng)險(xiǎn)險(xiǎn)操操作作模模式式缺陷陷模模式式概概述述3.缺陷陷模模式式::此類類缺缺陷陷是是不不應(yīng)應(yīng)該該發(fā)發(fā)生生的的,,它它未未必必會(huì)會(huì)造造成成系系統(tǒng)統(tǒng)的的錯(cuò)錯(cuò)誤誤,,但但可可能能會(huì)會(huì)隱隱含含某某些些故故障障,,或或者者是是由由初初級(jí)級(jí)軟軟件件工工程程師師不不理理解解造造成成的的。。主要要有有::性能能缺缺陷陷模模式式::此此類類缺缺陷陷會(huì)會(huì)降降低低系系統(tǒng)統(tǒng)的的性性能能疑問(wèn)問(wèn)代代碼碼模模式式::讓讓人人費(fèi)費(fèi)解解的的代代碼碼缺陷陷模模式式概概述述4.規(guī)則則模模式式::軟件件開(kāi)開(kāi)發(fā)發(fā)總總要要遵遵循循一一定定的的規(guī)規(guī)則則,,某某個(gè)個(gè)團(tuán)團(tuán)隊(duì)隊(duì)也也有有一一些些開(kāi)開(kāi)發(fā)發(fā)規(guī)規(guī)則則,,違違反反這這些些規(guī)規(guī)則則也也是是不不允允許許的的。。主要要有有::代碼碼規(guī)規(guī)則則復(fù)雜雜性性規(guī)規(guī)則則控制制流流規(guī)規(guī)則則命名名規(guī)規(guī)則則可移移植植性性規(guī)規(guī)則則資源源規(guī)規(guī)則則4.缺陷陷模模式式缺陷陷模模式式概概述述故障障模模式式安全全漏漏洞洞模模式式缺陷陷模模式式故障障模模式式故障障模模式式中給給出出的的故故障障描描述述,,是是程程序序中中可可能能存存在在的的故故障障,,這這些些故故障障一一旦旦被被激激活活,,就就會(huì)會(huì)使使系系統(tǒng)統(tǒng)發(fā)發(fā)生生錯(cuò)錯(cuò)誤誤。。包括括以以下下幾幾種種故故障障模模式式((8種))::存儲(chǔ)儲(chǔ)泄泄漏漏的的故故障障模模式式數(shù)組組越越界界故故障障的的故故障障模模式式使用用未未初初始始化化變變量量故故障障模模式式空指指針針使使用用故故障障非法法計(jì)計(jì)算算類類故故障障死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)模模式式資源源泄泄漏漏故故障障并發(fā)發(fā)故故障障模模式式故障障模模式式存儲(chǔ)儲(chǔ)泄泄漏漏的的故故障障模模式式((MemoryLeakFaultMLF)內(nèi)存存泄泄漏漏故故障障::設(shè)在在程程序序的的某某處處申申請(qǐng)請(qǐng)了了大大小小為為M的空空間間,,凡凡在在程程序序結(jié)結(jié)束束時(shí)時(shí)M或者者M(jìn)的一一部部分分沒(méi)沒(méi)被被釋釋放放、、或或者者多多次次釋釋放放M或M的一一部部分分都都是是內(nèi)內(nèi)存存泄泄漏漏故故障障。。MLF有三三種種形形式式::(1)遺遺漏漏故故障障::是是指指申申請(qǐng)請(qǐng)的的內(nèi)內(nèi)存存沒(méi)沒(méi)有有被被釋釋放放。。(2)不不匹匹配配故故障障::是是指指申申請(qǐng)請(qǐng)函函數(shù)數(shù)和和釋釋放放函函數(shù)數(shù)不不匹匹配配。。(3)不不相相等等的的釋釋放放錯(cuò)錯(cuò)誤誤::是是指指釋釋放放的的空空間間和和申申請(qǐng)請(qǐng)的的空空間間大大小小不不一一樣樣。。分析析教教材材中中的的例例子子::例例1----例例9((9種種情情況況)故障障模模式式數(shù)組組越越界界故故障障的的故故障障模模式式((OBAF)數(shù)組組越越界界故故障障::設(shè)某某數(shù)數(shù)組組定定義義為為Array[minmax],若若引引用用Array[i]且i<min或i>max都是是數(shù)數(shù)組組越越界界故故障障。。在在C++中,,若若i<0或imax是數(shù)數(shù)組組越越界界故故障障。。故障障模模式式數(shù)組組越越界界故故障障的的類類型型分分析析((3種故故障障類類型型))::(1)對(duì)對(duì)程程序序中中任任何何出出現(xiàn)現(xiàn)Array[i]的地地方方,,都都要要判判斷斷i的范范圍圍,,可可能能有有三三種種情情況況::若i是在在數(shù)數(shù)組組定定義義的的范范圍圍內(nèi)內(nèi),,則則是是正正確確的的;;若i是在在數(shù)數(shù)組組定定義義的的范范圍圍外外,,則則是是OBAF;若i是不不確確定定的的,,則則Array[i]是否否是是OBAF則不不確確定定的的。。(分分析析教教材材例例4-10和例例4-11)(2)字字符符串串拷拷貝貝過(guò)過(guò)程程中中存存在在的的數(shù)數(shù)組組越越界界故故障障。。(分分析析教教材材例例表表4-1)(3)在在結(jié)結(jié)構(gòu)構(gòu)類類型型中中,,由由于于結(jié)結(jié)構(gòu)構(gòu)體體中中的的成成員員變變量量是是連連續(xù)續(xù)存存放放的的,,在在數(shù)數(shù)組組的的拷拷貝貝過(guò)過(guò)程程中中,,多多余余的的數(shù)數(shù)據(jù)據(jù)會(huì)會(huì)自自動(dòng)動(dòng)的的存存放放在在后后面面所所定定義義的的成成員員變變量量中中,,這這種種情情況況數(shù)數(shù)組組并并不不產(chǎn)產(chǎn)生生越越界界錯(cuò)錯(cuò)誤誤。。(分分析析教教材材例例4-12)故障障模模式式3.使使用用未未初初始始化化變變量量故故障障模模式式(UninitializedVariableFault,UVF)定義義::使用用未未初初始始化化變變量量故故障障::存存在在一一個(gè)個(gè)路路徑徑,,在在該該路路徑徑上上使使用用前前面面沒(méi)沒(méi)有有被被賦賦初初值值的的變變量量是是使使用用未未初初始始化化變變量量故故障障。。(分分析析教教材材例例4-13、、例例4-14、、例例4-15、例4-16、、例例4-17))故障障模模式式4.空空指指針針使使用用故故障障(NULLPointerDereferenceFaultNPDF)定義義:空指指針針使使用用故故障障::引引用用空空指指針針或或給給空空指指針針賦賦值值的的都都是是空空指指針針使使用用故故障障。。(分分析析教教材材例例4-18、、表表4-2))故障障模模式式5.非非法法計(jì)計(jì)算算類類故故障障(IllegalComputingFaultILCF)定義義:非法法計(jì)計(jì)算算類類故故障障::是是指指計(jì)計(jì)算算機(jī)機(jī)不不允允許許的的計(jì)計(jì)算算。。一旦旦非非法法計(jì)計(jì)算算類類故故障障產(chǎn)產(chǎn)生生,,系系統(tǒng)統(tǒng)將將強(qiáng)強(qiáng)行行退退出出。。例如如::除數(shù)數(shù)為為0故障障。。對(duì)數(shù)數(shù)自自變變量量為為0或負(fù)負(fù)數(shù)數(shù)故故障障。。根號(hào)號(hào)內(nèi)內(nèi)為為負(fù)負(fù)數(shù)數(shù)的的故故障障。。故障障模模式式6.死死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)模模式式(DeadLoopFaultDLF)定義義::在控控制制流流圖圖中中,對(duì)任任何何一一個(gè)個(gè)循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu),包括括:FOR語(yǔ)句句中中的的死死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu);;WHILE語(yǔ)句句中中的的死死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu);;DO-WHILE語(yǔ)句句中中的的死死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu);;GOTO語(yǔ)句句中中的的死死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu);;函數(shù)數(shù)循循環(huán)環(huán)調(diào)調(diào)用用造造成成的的死死循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)。要分分析析控控制制循循環(huán)環(huán)的的變變量量的的開(kāi)開(kāi)始始條條件件、、結(jié)結(jié)束束條條件件、、步步長(zhǎng)長(zhǎng)變變化化,,檢檢查查該該循循環(huán)環(huán)能能否否結(jié)結(jié)束束,,若若不不能能則則會(huì)會(huì)形成死死循環(huán)環(huán)。(分析析教材材例4-19、、例4-20、、例4-21)故障模模式7.資源源泄漏漏故障障(RLF)定義::資源泄泄漏故故障::在Java程序中中,當(dāng)當(dāng)一個(gè)個(gè)資源源被打打開(kāi)后后,如如果并并不是是在所所有的的可執(zhí)執(zhí)行路路徑上上都對(duì)對(duì)其進(jìn)進(jìn)行了了顯式式的釋釋放操操作,,則是是一個(gè)個(gè)資源源泄漏漏故障障。資源泄泄漏一一般分分為4種情情況::簡(jiǎn)單泄泄漏::資源被被分配配給本本地變變量,,在該該變量量的有有效范范圍內(nèi)內(nèi)沒(méi)有有釋放放資源源;異常泄泄漏:資源源被分分配給給本地地變量量,在在該變變量的的有效效范圍圍內(nèi)也也釋放放了資資源,,但在在釋放放資源源前由由于異異常拋拋出,,導(dǎo)致致資源源釋放放操作作沒(méi)有有執(zhí)行行交叉函函數(shù)泄泄漏::在一個(gè)個(gè)方法法內(nèi)分分配資資源,,該資資源被被傳遞遞到另另外一一個(gè)方方法內(nèi)內(nèi),在在另一一個(gè)方方法內(nèi)內(nèi)沒(méi)有有正常常釋放放資源源;靜態(tài)情情況:資源源被分分配給給靜態(tài)態(tài)變量量或其其他非非本地地變量量,該該變量量沒(méi)有有被正正常釋釋放。。分析教教材例例4-22、例例4-23、例例4-24、例例4-25故障模模式8.并發(fā)故故障模模式該模式式主要要是針針對(duì)程程序員員對(duì)多線程程的編編碼機(jī)機(jī)制、各種種同步方方法、Java存儲(chǔ)器器模式式和java虛擬機(jī)機(jī)的工工作機(jī)機(jī)制不不清楚楚,而而且由由于線線程啟啟動(dòng)的的任意意性和和不確確定性性使用用戶無(wú)無(wú)法確確定所所編寫(xiě)寫(xiě)的代代碼具具體何何時(shí)執(zhí)執(zhí)行而而導(dǎo)致致對(duì)公公共區(qū)區(qū)域的的錯(cuò)誤誤使用用。這類模模式主主要包包括::不正確確的同同步可能導(dǎo)導(dǎo)致死死鎖多線程程應(yīng)用用中方方法調(diào)調(diào)用時(shí)時(shí)機(jī)或或方式式不正正確同一變變量的的雙重重驗(yàn)證證相互初初始化化的類類和臨臨界區(qū)區(qū)內(nèi)調(diào)調(diào)用阻阻塞函函數(shù)等等。分析教教材例例4-22、例例4-23、例例4-24、例例4-25(1)不正正確的的同步步定義::在java程序中中,由由于對(duì)對(duì)synchronized關(guān)鍵字字使用用不當(dāng)當(dāng)將造造成不不正確確的同同步缺缺陷。。主要有有:不連續(xù)續(xù)的同同步;;對(duì)易變變域的的同步步;set方法被被同步步了,,但get方法卻卻沒(méi)有有被同同步;;方法writeObject同步但但其他他方法法均沒(méi)沒(méi)有同同步;;方法readObject使用了了synchronized修飾;;靜態(tài)域域的不不正確確初始始化;;分析教教材例例中對(duì)對(duì)應(yīng)類類型的的例題題(2)可能能導(dǎo)致致死鎖鎖定義::在java中,對(duì)對(duì)鎖的的不正正確操操作可可能造造成導(dǎo)導(dǎo)致死死鎖的的缺陷陷。(3)多線線程應(yīng)應(yīng)用中中方法法調(diào)用用時(shí)機(jī)機(jī)或方方式不不正確確定義::在java中,一一些同同步方方法的的不正正確調(diào)調(diào)用將將造成成該類類缺陷陷。(4)同一一變量量的雙雙重驗(yàn)驗(yàn)證定義::在java中,同同一變變量的的雙重重驗(yàn)證證指對(duì)對(duì)一個(gè)個(gè)對(duì)象象進(jìn)行行了兩兩次判判斷,,判斷斷其是是否為為空。。(5)相互互初始始化的的類和和臨界界區(qū)內(nèi)內(nèi)調(diào)用用阻塞塞函數(shù)數(shù)定義::在java中,互互相初初始化化的類類指的的是兩兩個(gè)類類中分分別對(duì)對(duì)對(duì)方方類的的實(shí)例例進(jìn)行行初始始化的的代碼碼。4.3缺陷模模式缺陷模模式概概述故障模模式安全漏漏洞模模式缺陷模模式安全漏漏洞模模式安全漏漏洞模模式為他人人攻擊擊軟件件提供供可能能。而而一旦旦軟件件被攻攻擊成成功,,系統(tǒng)統(tǒng)就可可能發(fā)發(fā)生癱癱瘓,,所造造成的的危害害較大大,因因此,,此類類漏洞洞應(yīng)當(dāng)當(dāng)盡量量避免免。下面以以C++為基礎(chǔ)礎(chǔ),介介紹基基于安安全漏漏洞檢檢測(cè)的的缺陷陷模式式。主主要有有:(1)緩沖沖區(qū)溢溢出漏漏洞模模式;;(2)被污污染的的數(shù)據(jù)據(jù)模式式;(3)競(jìng)爭(zhēng)爭(zhēng)條件件(4)風(fēng)風(fēng)險(xiǎn)操操作安全漏漏洞模模式1、緩沖沖區(qū)溢溢出((bufferoverflow)漏洞洞模式式定義::當(dāng)程序序要在在一個(gè)個(gè)緩沖沖區(qū)內(nèi)內(nèi)存儲(chǔ)儲(chǔ)比該該緩沖沖區(qū)的的大小小還要要多的的數(shù)據(jù)據(jù)時(shí),,即會(huì)會(huì)產(chǎn)生生緩沖沖區(qū)溢溢出漏漏洞。。緩存區(qū)區(qū)溢出出主要要有2種類型型:數(shù)據(jù)拷拷貝造造成的的緩沖沖區(qū)溢溢出;;格式化化字符符串造造成的的緩沖沖區(qū)溢溢出;1、緩沖區(qū)區(qū)溢出((bufferoverflow)漏洞模模式(1)數(shù)據(jù)拷貝貝造成的的緩沖區(qū)區(qū)溢出如果數(shù)據(jù)據(jù)是從外外部傳進(jìn)進(jìn)來(lái)的或或是在緩緩沖區(qū)之之間進(jìn)行行數(shù)據(jù)復(fù)復(fù)制,在在使用之之前沒(méi)有有進(jìn)行檢檢驗(yàn),那那么,有有可能出出現(xiàn)安全全問(wèn)題。。教材:例例4-47表4-5(2)格式化字字符串造造成的緩緩沖區(qū)溢溢出利用緩沖沖區(qū)時(shí),,若對(duì)數(shù)數(shù)據(jù)長(zhǎng)度度不加限限制,就就可能造造成溢出出。教材:例例4-48表4-6安全漏洞洞模式被污染的的數(shù)據(jù)模模式(TaintedData)定義:程序從外外部獲取取數(shù)據(jù)時(shí)時(shí),這些些數(shù)據(jù)可可能含有有具有欺欺騙性或或者是不不想要的的垃圾數(shù)數(shù)據(jù),如果在使使用這些些數(shù)據(jù)前前不進(jìn)行行合法性性檢查則則將威脅脅到程序序的安全全,造成一一個(gè)被污污染的數(shù)數(shù)據(jù)缺陷陷。被污染的的數(shù)據(jù)可可能會(huì)導(dǎo)導(dǎo)致程序序不按原原計(jì)劃執(zhí)執(zhí)行,也也有可能能直接或或間接地地導(dǎo)致緩沖區(qū)溢溢出缺陷陷。被污染的的數(shù)據(jù)模模式主要要有兩種種類型使用的數(shù)數(shù)據(jù)來(lái)自自外部的的全局變變量使用的數(shù)數(shù)據(jù)來(lái)自自輸入函函數(shù)2被污染的的數(shù)據(jù)模模式(1)使用的的數(shù)據(jù)來(lái)來(lái)自外部部的全局局變量使用來(lái)自自外部的的全局變變量前應(yīng)應(yīng)先進(jìn)行行合法性性檢查。教材:例例4-49(2)使用的數(shù)數(shù)據(jù)來(lái)自自輸入函函數(shù)教材:例例4-50表4-7安全漏洞洞模式競(jìng)爭(zhēng)條件件(RaceCondition)定義:如果程序序中有兩兩種不同同的I/O調(diào)用同一一文件進(jìn)進(jìn)行操作作,而且且這兩種種調(diào)用是是通過(guò)絕絕對(duì)路徑徑或相對(duì)對(duì)路徑引引用文件件的,那那么就易易出現(xiàn)競(jìng)爭(zhēng)條件件問(wèn)題。在在兩種操操作進(jìn)行行的間隙隙,黑客客可能改改變文件件系統(tǒng),,那么將將會(huì)導(dǎo)致致對(duì)兩個(gè)個(gè)不同的的文件操操作而不不是同一一文件進(jìn)進(jìn)行操作作。這種典型型的問(wèn)題題發(fā)生在在用戶擁?yè)碛胁煌臋?quán)限限運(yùn)行的的程序中中(例如:數(shù)數(shù)據(jù)庫(kù)和和服務(wù)器器程序等等)。程序代碼碼中,針針對(duì)文件件名的一一些操作作往往會(huì)會(huì)被黑客客利用從從而造成成競(jìng)爭(zhēng)條條件。教材:例例4-51、52安全漏洞洞模式風(fēng)險(xiǎn)操作作(RiskyOperation)定義:如果不不恰當(dāng)?shù)氐厥褂昧肆四承?biāo)標(biāo)準(zhǔn)庫(kù)函函數(shù),可可能會(huì)帶帶來(lái)安全全隱患。。甚至在在某些情情況下,,某些函函數(shù)一經(jīng)經(jīng)被使用用,就可能會(huì)會(huì)帶來(lái)安安全隱患患。例如像rand()和random()這樣的隨隨機(jī)數(shù)生生成函數(shù)數(shù),它們?cè)谏蓚坞S隨機(jī)值的的時(shí)候表表現(xiàn)出來(lái)來(lái)的性能能是非常常差的,如果用它它們來(lái)生生成默認(rèn)認(rèn)的口令令,這些口令令將很容容易被攻攻擊者猜猜測(cè)到。。教材中給給出了23種類類型,每每種類型型都給出出了應(yīng)用用實(shí)例。。例4-53-------例例4-7923種類型及及其對(duì)應(yīng)應(yīng)實(shí)例(1)_spawnvpe函數(shù)使用用相對(duì)路路徑;((例4-53)(2)不可靠的的隨機(jī)數(shù)數(shù);(例例4-54)(3)可預(yù)測(cè)測(cè)的臨時(shí)時(shí)文件名名(例5-55,56,57)(4)危險(xiǎn)的的外部程程序調(diào)用用(例5-58,59,60)(5)socke綁定問(wèn)題題(例5-61)(6)使用不不可靠的的宏(例例4-62)(7)使用不不可靠的的注冊(cè)表表參數(shù)((例4-63)(8)使用不不可靠的的參數(shù)((例4-64)(9)對(duì)明確的的宏定義義使用變變量(例例4-65)(10)變量作作為注冊(cè)冊(cè)表參數(shù)數(shù)(例4-66)(11)使用不不可靠的的shell命令(例例4-67)(12)不充分分的路徑徑(例4-68)23種類型及及其對(duì)應(yīng)應(yīng)實(shí)例(13)不安全全的權(quán)限限提升((例4-69)(14)使用不不可靠的的加密算算法(例例4-70)(15)使用不不可靠的的進(jìn)程創(chuàng)創(chuàng)建(例例4-71)(16)不可靠靠的資源源處理((例4-72)(17)忽略檢檢查函數(shù)數(shù)的返回回值(例例4-73)(18)命名管道道的脆弱弱性(例例4-74)(19)Windows臨時(shí)文件件的脆弱弱性(例例4-75)(20)以外的的內(nèi)存復(fù)復(fù)制(例例4-76)(21)文件存存取函數(shù)數(shù)(例4-77)(22)不安全的的文件操操作(例例4-78)(23)暴露絕對(duì)對(duì)路徑((例4-79)4.3缺陷模式式缺陷模式式概述故障模式式安全漏洞洞模式缺陷模式式缺陷模式式缺陷模式式主要分分為以下下幾類::1、低性能能模式:2、代碼國(guó)國(guó)際化模模式3、疑問(wèn)代代碼模式式1低性能模模式低性能模模式:該模式導(dǎo)導(dǎo)致軟件件運(yùn)行效效率低下下,因此此建議采采用更高高效的代代碼來(lái)完完成同樣樣的功能能。這類類模式主主要包括括使用低低效函數(shù)數(shù)/代碼、使使用多余余函數(shù)、、Java中顯式垃垃圾回收收、冗余余代碼、、頭文件件中定義義的靜態(tài)態(tài)變量、、不必要要的文件件包含、、字符串串低效操操作和有有更簡(jiǎn)單單的運(yùn)算算可以替替代等。。低性能模模式分為為以下小小類(1)使用低低效率的的函數(shù)/代碼(10種);(2)使用多多余函數(shù)數(shù)(5種)(3)顯示垃垃圾回收收(4)冗余代碼;;(5)頭文件中定定義靜態(tài)變量量;(6)不必要的文件件包含(7)字符串低效操操作(8)可以用更簡(jiǎn)簡(jiǎn)單的運(yùn)算替替代1低性能模式(1)使用低效率率的函數(shù)/代碼定義:在java程序中,對(duì)于于一些特定的的類、函數(shù)和和語(yǔ)法,若沒(méi)沒(méi)有使用合適適的方法,將將造成性能下下降,此類缺缺陷為使用低低效函數(shù)、代代碼缺陷。該類缺陷主要要包括以下((10種);判定字符串為為空的方法的的使用;在邏輯表達(dá)式式中使用了非非短路運(yùn)算符符;使用低效的類類型構(gòu)造器;;不必要的包裝裝類實(shí)例化;;產(chǎn)生隨機(jī)整數(shù)數(shù)在多個(gè)類之間間復(fù)制很大的的字符串常量量循環(huán)中的字符符串連接未定義為靜態(tài)態(tài)的內(nèi)部類未聲明為靜態(tài)態(tài)屬性;調(diào)用低效的比較方法教材例4-80---》4-871低性能模式:(2)使用多余函函數(shù)定義:在java中,若調(diào)用了了一些不必要要的函數(shù),而而造成性能下下降,則此類類缺陷為使用用多余函數(shù)缺缺陷。該類缺陷主要要包括以下(5種)同一鎖的同步步方法調(diào)用;;沒(méi)有必要的方方法調(diào)用;調(diào)用了不必要要的getClass()方法;參數(shù)為常數(shù)的的數(shù)學(xué)方法;;字符串變量調(diào)調(diào)用toString()教材例4-88---》4-91(3)顯示垃圾回回收定義:在java中,垃圾回收收是很耗費(fèi)資資源的,顯示示地調(diào)用垃圾圾回收機(jī)制會(huì)會(huì)導(dǎo)致應(yīng)用的的性能急劇下下降,此類缺缺陷為垃圾回回收缺陷。1低性能模式:教材例4-921低性能模式:(4)冗余代碼定義:在java中,存在從未未使用過(guò)的方方法或?qū)傩?,,或存在從未未使用讀取過(guò)過(guò)的局部變量量,則此類缺缺陷為冗余代代碼缺陷1低性能模式:(5)頭文件中定定義靜態(tài)變量量定義:頭文件中定定義的函數(shù)或或變量被聲明明為靜態(tài)的,,即包含該頭頭文件的任一一文件都比較較并復(fù)制一份份該對(duì)象,這這樣無(wú)疑明顯顯增加了可執(zhí)執(zhí)行文件的大大小。教材例4-931低性能
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 植物園綠化養(yǎng)護(hù)方案
- 新能源汽車充電方案
- 壓力調(diào)適與情緒管理
- 金融機(jī)構(gòu)內(nèi)部控制與風(fēng)險(xiǎn)管理手冊(cè)
- 物流企業(yè)信息化管理與升級(jí)方案
- 年度護(hù)理理論授課綜合復(fù)習(xí)試題
- 農(nóng)業(yè)現(xiàn)代化智能種植大數(shù)據(jù)平臺(tái)開(kāi)發(fā)方案
- 建筑設(shè)計(jì)框架合同
- 智能財(cái)稅綜合實(shí)訓(xùn) 下篇 第四章工作領(lǐng)域三-任務(wù)三
- 電力塔架安裝的方位確定
- GB/T 30133-2022一次性衛(wèi)生用品用面層
- GB/T 20878-2007不銹鋼和耐熱鋼牌號(hào)及化學(xué)成分
- 部編版小學(xué)語(yǔ)文三年級(jí)下冊(cè)書(shū)法教案設(shè)計(jì)(全冊(cè))
- 胎動(dòng)不安課件
- 雙重預(yù)防體系建設(shè)全套文件非煤礦山
- 文件袋、檔案袋密封條模板
- 皮內(nèi)注射技術(shù)操作考核評(píng)分標(biāo)準(zhǔn)
- 加油站重大風(fēng)險(xiǎn)清單
- 大唐大慈恩寺三藏法師傳白話本(整理壓縮版)
- ?;芳佑图託庹救?xì)馄髽I(yè)安全隱患排查手冊(cè)
- 某電廠330MW機(jī)組八級(jí)熱力系統(tǒng)及管道通流部分的設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論