




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第六講 結(jié)構(gòu)化實(shí)現(xiàn)白盒測試幾個(gè)問題對測試過的軟件有足夠信心嗎?如何預(yù)防內(nèi)存泄漏問題?系統(tǒng)測試覆蓋了多少代碼?某些難執(zhí)行到的異常處理分支測試到了嗎?實(shí)驗(yàn)室條件無法難模擬出真實(shí)的測試環(huán)境,怎么辦?2隱藏的錯(cuò)誤使用一個(gè)經(jīng)過運(yùn)算處理后的數(shù)據(jù)作為除數(shù)進(jìn)行運(yùn)算:float Div=1.0;if(Div=0) printf(“除數(shù)為0,退出”); return;else mod=BeDiv/Div;3內(nèi)容進(jìn)度白盒測試白盒測試的目的白盒測試和黑盒測試的聯(lián)系白盒測試的策略代碼質(zhì)量代碼度量使用LogiScope度量代碼質(zhì)量代碼檢查工具4白盒測試又稱透明盒測試、邏輯驅(qū)動(dòng)測試是測試被測單元內(nèi)部如何工作的一種測試方法允
2、許測試人員根據(jù)程序內(nèi)部邏輯結(jié)構(gòu)及有關(guān)信息來設(shè)計(jì)和選擇測試用例,對程序的邏輯結(jié)構(gòu)進(jìn)行測試可覆蓋全部代碼、分支、路徑和條件等5白盒測試和黑盒測試比較6白盒測試目的 保證一個(gè)模塊中的所有獨(dú)立路徑至少被執(zhí)行一次;對所有的邏輯值均需要測試真、假兩個(gè)分支;在上下邊界及可操作范圍內(nèi)運(yùn)行所有循環(huán);檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保其有效性。7白盒測試的策略桌前檢查(Desk Check) 單元測試(Unit Testing)同行評審(Peer Review) 代碼評審(Code Review) 代碼走查(Walkthrough) 靜態(tài)分析(static analyse)靜態(tài)分析報(bào)告、代碼質(zhì)量報(bào)告8白盒測試對測試人員的要求
3、 了解軟件語言了解軟件開發(fā)技術(shù)有開發(fā)經(jīng)驗(yàn)最好掌握白盒測試工具掌握白盒測試用例設(shè)計(jì)方法掌握開發(fā)人員編程中容易出現(xiàn)的問題,不斷積累經(jīng)驗(yàn)9內(nèi)容進(jìn)度白盒測試白盒測試的目的白盒測試和黑盒測試的聯(lián)系白盒測試的策略代碼質(zhì)量代碼度量使用LogiScope度量代碼質(zhì)量代碼檢查工具10軟件質(zhì)量軟件質(zhì)量要求產(chǎn)品中沒有BUG常用指標(biāo)缺陷率(缺陷密度 )可靠性(運(yùn)行n小時(shí)失效次數(shù))顧客滿意度軟件質(zhì)量反映的三個(gè)方面軟件需求開發(fā)準(zhǔn)則隱含的需求11代碼質(zhì)量對軟件質(zhì)量的貢獻(xiàn)代碼是軟件產(chǎn)品中的重要部分代碼質(zhì)量反映軟件質(zhì)量其它非代碼因素也起著關(guān)鍵作用文檔(設(shè)計(jì)、幫助、用戶手冊等)12制約程序員編寫高質(zhì)量代碼的因素對需求和設(shè)計(jì)的理解
4、不透徹對軟件業(yè)務(wù)流程不熟悉沒有開發(fā)經(jīng)驗(yàn)對開發(fā)工具或開發(fā)語言不熟悉受情緒因素的影響等因素其它非代碼因素也起著關(guān)鍵作用13如何提高代碼質(zhì)量培訓(xùn)業(yè)務(wù)技術(shù)工具和語言審查和監(jiān)督編碼規(guī)范測試.14編碼規(guī)范和標(biāo)準(zhǔn)堅(jiān)持標(biāo)準(zhǔn)和規(guī)范的原因可靠性可讀性/可維護(hù)性移植性15代碼審查單代碼審查單代碼審查單數(shù)據(jù)引用錯(cuò)誤數(shù)據(jù)聲明錯(cuò)誤計(jì)算錯(cuò)誤函數(shù)參數(shù)錯(cuò)誤比較錯(cuò)誤輸入/輸出錯(cuò)誤其它檢查控制流程錯(cuò)誤16代碼質(zhì)量度量程序復(fù)雜性:費(fèi)用、周期、錯(cuò)誤代碼行度量法McCabe度量法Halstead軟件科學(xué)法結(jié)構(gòu)度量17代碼度量-代碼行度量18代碼度量-Halstead軟件科學(xué)法 程序=運(yùn)算符化+ 運(yùn)算元結(jié)構(gòu)度量 Halstead公式N=N
5、1+N2=n1log2(n1)+n2log2(n2) N1=運(yùn)算符出現(xiàn)的總次數(shù)N2=運(yùn)算元出現(xiàn)的總次數(shù)19代碼度量-結(jié)構(gòu)度量 扇入:調(diào)用一給定模塊的模塊計(jì)數(shù);扇出:給定模塊所調(diào)用的模塊計(jì)數(shù);使用扇入扇出來評價(jià)軟件設(shè)計(jì)具有大扇入和大扇出的模塊可能是不良設(shè)計(jì)。這種模塊可能未能正確分解并需要重新設(shè)計(jì)。20McCabe度量法21輔助分析工具對源代碼進(jìn)行分析經(jīng)常需要輔助分析工具PC-lint:代碼規(guī)則走查工具CodeWizard:C/C+代碼分析工具M(jìn)cCabe:軟件質(zhì)量度量方法 TestBed:源代碼檢查工具Logiscope:源代碼規(guī)則檢查工具22Logiscope代碼檢查工具23學(xué)習(xí)目標(biāo)邏輯驅(qū)動(dòng)覆
6、蓋測試語句覆蓋判定(分支)覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋路徑測試覆蓋24邏輯覆蓋測試用例設(shè)計(jì)技術(shù)邏輯驅(qū)動(dòng)覆蓋基本路徑覆蓋循環(huán)語句覆蓋25邏輯驅(qū)動(dòng)覆蓋測試針對程序的內(nèi)部邏輯結(jié)構(gòu)設(shè)計(jì)測試用例通過運(yùn)行測試用例達(dá)到邏輯覆蓋目的是最傳統(tǒng)最經(jīng)典的白盒測試技術(shù)要求測試人員對程序的邏輯結(jié)構(gòu)非常清楚26例子代碼先看下面代碼: void DoWork(int x,int y,int z) int k=0,j=0; if( x3 ) & ( z5 ) j=x*y+10; /語句塊2 j=j%3; /語句塊327輔助方法流程圖x3 & z5入口 語句塊1語句塊2語句塊3出口abcde 畫出模塊的流程圖發(fā)現(xiàn)問題輔
7、助設(shè)計(jì)測試用例28語句覆蓋概念語句覆蓋就是設(shè)計(jì)若干個(gè)測試用例,運(yùn)行被測試程序,使得每一條可執(zhí)行語句至少執(zhí)行一次。29語句覆蓋設(shè)計(jì)用例測試用例輸入為: x=4、y=5、z=5x3 & z5入口 語句塊1語句塊2語句塊3出口abcde程序執(zhí)行的路徑是:abd30分支/判定覆蓋概念設(shè)計(jì)若干個(gè)測試用例,運(yùn)行所測程序,使程序中每個(gè)判斷的取真分支和取假分支至少執(zhí)行一次;31分支/判定覆蓋設(shè)計(jì)用例測試用例的輸入為: x=4、y=5、z=5 x=2、y=5、z=5Test Casesx3 & z5入口 語句塊1語句塊2語句塊3出口abcde程序執(zhí)行的路徑是:abd程序執(zhí)行的路徑是:ace32條件覆蓋概念設(shè)計(jì)足
8、夠多的測試用例,運(yùn)行所測程序,使程序中每個(gè)判斷的每個(gè)條件的每個(gè)可能取值至少執(zhí)行一次;33條件覆蓋設(shè)計(jì)用例x3 & z5入口 語句塊1語句塊2語句塊3出口abcdeT1和T1T2和T2T3和T3T4和T434條件覆蓋設(shè)計(jì)用例測試用例的輸入為: x=4、y=6、z=5 x=2、y=5、z=5 x=4、y=5、z=15Test Casesx3 & z5入口 語句塊1語句塊2語句塊3出口abcde程序執(zhí)行的路徑是:abd程序執(zhí)行的路徑是:ace程序執(zhí)行的路徑是:acd35測試用例(1)測試用例 通過路徑 條件取值覆蓋分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=5
9、ace-T1、T2、-T3、-T4 cex=4、y=5、z=15 acdT1、-T2、T3、-T4 cd則可以設(shè)計(jì)測試用例如下:36測試用例(2)測試用例 通過路徑 條件取值覆蓋分支x=2、y=6、z=5 acd-T1、T2、-T3、T4 cdx=4、y=5、z=5 acdT1、-T2、T3、-T4 cd假如根據(jù)定義設(shè)計(jì)測試用例如下:37分支條件測試概念設(shè)計(jì)足夠的測試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,同時(shí)每個(gè)判斷的所有可能判斷結(jié)果至少執(zhí)行,即要求各個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。38分支條件測試設(shè)計(jì)用例根據(jù)定義只需設(shè)計(jì)以下兩個(gè)測試用例便可以覆蓋8個(gè)條件值以及4個(gè)判
10、斷分支。 測試用例 通過路徑 條件取值覆蓋分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=11ace-T1、-T2、-T3、-T4 ce39分析例如對于條件表達(dá)式(x3)&(z3)為假則一般的編譯器不在判斷是否z5)來說,若x=4測試結(jié)果為真,就認(rèn)為表達(dá)式的結(jié)果為真,這時(shí)不再檢查(y5)條件了。40條件組合覆蓋概念設(shè)計(jì)足夠的測試用例,運(yùn)行被測試對象,使得每一個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。41標(biāo)記 x3,z3,z=10記做T1 -T2第一個(gè)判斷的取假分支x=3,z0記做-T1 T2第一個(gè)判斷的取假分支x=10記做-T1 -T2第一個(gè)判斷的取假分支x
11、=4,y5記做T3 T4第二個(gè)判斷的取真分支x=4,y5記做-T3 T4第二個(gè)判斷的取真分支x!=4,y=5記做-T3 -T4第二個(gè)判斷的取假分支現(xiàn)在對例子中的各個(gè)判斷的條件取值組合加以標(biāo)記如下:42設(shè)計(jì)測試用例 測試用例 通過路徑 條件取值覆蓋組合號(hào)x=4、y=6、z=5 abdT1、T2、T3、T4 1和5 x=4、y=5、z=15 acdT1、-T2、T3、-T4 2和6 x=2、y=6、z=5 acd-T1、T2、-T3、T4 3和7 x=2、y=5、z=15ace-T1、-T2、-T3、-T4 4和8丟失了一條路徑abe43路徑測試路徑測試就是設(shè)計(jì)足夠多的測試用例,覆蓋被測試對象中的
12、所有可能路徑。44測試用例 測試用例 通過路徑 覆蓋條件 x=4、y=6、z=5 abdT1、T2、T3、T4x=4、y=5、z=15 acdT1、-T2、T3、-T4 x=2、y=6、z=15 ace-T1、-T2、-T3、-T4 x=5、y=6、z=5 abeT1、T2、-T3、-T4 在上面的測試用例中修改一個(gè)測試用例則可對程序進(jìn)行了全部的路徑覆蓋。 45測試充分性路徑測試條件組合覆蓋判定條件覆蓋判定覆蓋條件覆蓋語句覆蓋46內(nèi)容進(jìn)度邏輯驅(qū)動(dòng)覆蓋測試語句覆蓋判定(分支)覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋循環(huán)語句覆蓋測試簡單循環(huán)嵌套循環(huán)串接循環(huán)47循環(huán)測試-簡單循環(huán)簡單循環(huán): 其中n是允許
13、通過循環(huán)的最大次數(shù)。整個(gè)跳過循環(huán);只有一次通過循環(huán);兩次通過循環(huán);m次通過循環(huán),其中mn;n-1,n次通過循環(huán)。48簡單循環(huán)舉例舉例:.for(s=0;si;s+) fwrite(&profs,sizeof(struct ENGINEER),1,fp);.49循環(huán)測試嵌套循環(huán)嵌套循環(huán):從最內(nèi)層循環(huán)開始,將其它循環(huán)設(shè)置為最小值;對最內(nèi)層循環(huán)使用簡單循環(huán),而使外層循環(huán)的疊代參數(shù)(即循環(huán)計(jì)數(shù))最小;由內(nèi)向外構(gòu)造下一個(gè)循環(huán)的測試,但其它的外層循環(huán)為最小值,并使其它的嵌套循環(huán)為“典型”值;繼續(xù)直到測試所有的循環(huán)。50嵌套循環(huán)舉例舉例:for(i=0; i0)j-; 51循環(huán)測試串接循環(huán):如果串接循環(huán)的循
14、環(huán)都彼此獨(dú)立,可是使用嵌套的策略測試。但是如果兩個(gè)循環(huán)串接起來,而第一個(gè)循環(huán)是第二個(gè)循環(huán)的初始值,則這兩個(gè)循環(huán)并不是獨(dú)立的。如果循環(huán)不獨(dú)立,則推薦使用的嵌套循環(huán)的方法進(jìn)行測試。52循環(huán)測試不規(guī)則循環(huán): 不能測試,盡量重新設(shè)計(jì)給結(jié)構(gòu)化的程序結(jié)構(gòu)后再進(jìn)行測試。53總結(jié)邏輯驅(qū)動(dòng)覆蓋測試語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋路徑覆蓋54內(nèi)容進(jìn)度控制流圖程序環(huán)路復(fù)雜性導(dǎo)出測試用例55基本路徑測試它在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測試用例的方法。設(shè)計(jì)出的測試用例要保證在測試中程序的每一個(gè)可執(zhí)行語句至少執(zhí)行一次。 56前提條件被測試對象有了一定
15、的了解基本上明確了被測試軟件的邏輯結(jié)構(gòu)基本路徑測試代碼57步驟一畫出程序的控制流圖計(jì)算程序圈復(fù)雜度導(dǎo)出測試用例執(zhí)行測試用例畫出程序的控制流圖58控制流圖符號(hào)59例子void sort(int iRecordNum,int iType)1 2 int x=0;3 int y=0;4 while (iRecordNum- 0)5 6 if(0= =iType)7x=y+2;8 else9 if(1= =iType)10 x=y+10;11 else12 x=y+20;13 14 60繪制流程圖61繪制控制流圖62復(fù)合條件流圖表示 1 if a or b 2 x 3 else 4 y對應(yīng)的邏輯為:判
16、定節(jié)點(diǎn):包含條件的結(jié)點(diǎn)被稱為判定結(jié)點(diǎn),從每一個(gè)判定結(jié)點(diǎn)發(fā)出兩條或多條邊。63內(nèi)容進(jìn)度控制流圖程序環(huán)路復(fù)雜性導(dǎo)出測試用例64步驟二畫出程序的控制流圖計(jì)算程序圈復(fù)雜度導(dǎo)出測試用例執(zhí)行測試用例計(jì)算程序圈復(fù)雜度65計(jì)算圈復(fù)雜度方法1、流圖中區(qū)域的數(shù)量對應(yīng)于環(huán)型的復(fù)雜性;2、給定流圖G的圈復(fù)雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數(shù)量,N是流圖中結(jié)點(diǎn)的數(shù)量;有以下兩種方法計(jì)算圈復(fù)雜度:66計(jì)算圈復(fù)雜度流圖中有四個(gè)區(qū)域;V(G)=10條邊-8結(jié)點(diǎn)+2=4;對應(yīng)上面圈復(fù)雜度的算法,計(jì)算如下:67內(nèi)容進(jìn)度控制流圖程序環(huán)路復(fù)雜性導(dǎo)出測試用例68導(dǎo)出測試用例畫出程序的控制流圖計(jì)算程序圈復(fù)雜度導(dǎo)出測試用例執(zhí)行測試用例導(dǎo)出測試用例69導(dǎo)出基本路徑集根據(jù)上面的計(jì)算方法,可得出四個(gè)獨(dú)立的路徑:路徑1:4-14路徑2:4-6-7-14路徑3:4-6-8-10-13-4-14路徑4:4-6-8-11-13-4-1470測試用例通過路徑輸入數(shù)據(jù) 預(yù)期結(jié)果4-14iRecordNum0,或者取iRecordNum 0)5 6 if(0= =iType)7x=y+2;8 else9 if(1= =iType)10 x=y+10;11 else12 x=y+20; ret=x; 15 73驅(qū)動(dòng)模塊/主程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宣城貨運(yùn)從業(yè)資格證模擬考試下載安裝
- 脂肪痢的健康宣教
- 企業(yè)工程管理咨詢合同標(biāo)準(zhǔn)文本
- 信息共享在安全管理中的作用總結(jié)計(jì)劃
- 增強(qiáng)團(tuán)隊(duì)認(rèn)同感的策略計(jì)劃
- 2025年產(chǎn)品買賣合同協(xié)議參考樣本
- 企業(yè)整體托管合同標(biāo)準(zhǔn)文本
- 儲(chǔ)值卡會(huì)員合同標(biāo)準(zhǔn)文本
- 二人合伙經(jīng)營合同標(biāo)準(zhǔn)文本
- 二零二五年份1月份裝修合同施工延期違約金計(jì)算方式更新
- 《秤的發(fā)展史》課件
- 醫(yī)院感染科護(hù)士對防控感染的終末消毒與徹底清潔
- 酒店飯店服務(wù)流程
- 英語八年級英語上冊閱讀理解100及答案經(jīng)典
- GRR測量系統(tǒng)分析報(bào)告范例
- 鋼筋分析表(電子版)
- 施工日志模板
- 沖壓機(jī)作業(yè)指導(dǎo)書
- 產(chǎn)科麻醉指南
- 鋼化爐操作手冊
- 2023年廣東珠海農(nóng)商銀行校園招聘筆試歷年試題(??键c(diǎn)甄選)含答案帶詳解
評論
0/150
提交評論