




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章
軟件測試用例的設(shè)計2006-9-19第3章軟件測試用例的設(shè)計※黑盒測試※
白盒測試※
面向?qū)ο蟮臏y試用例設(shè)計3.3白盒測試什么是白盒測試呢?白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,它是按照程序內(nèi)部的結(jié)構(gòu)測試程序,通過測試來檢測產(chǎn)品內(nèi)部動作是否按照設(shè)計規(guī)格說明書的規(guī)定正常進(jìn)行,檢驗程序中的每條通路是否都能按預(yù)定要求正確工作。這一方法是把測試對象看作一個透明的盒子,測試人員依據(jù)程序內(nèi)部邏輯結(jié)構(gòu)相關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進(jìn)行測試,通過在不同點檢查程序的狀態(tài),確定實際的狀態(tài)是否與預(yù)期的狀態(tài)一致。應(yīng)用程序1:路徑測試
基本路徑測試法是在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路(圈)復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計測試用例的方法。控制流圖控制流圖主要由節(jié)點和邊構(gòu)成。如何建立控制流圖?1)確定程序的程序流程圖2)程序流程圖轉(zhuǎn)化為控制流圖轉(zhuǎn)換的原則如下:控制流圖中的每一個節(jié)點可以表示程序流程圖中矩形框所表示的處理;菱形表示的兩個甚至多個出口判斷;多條流線相交的匯合點。例:1ifaorb2x3else4y環(huán)形(圈)復(fù)雜度定義:環(huán)形復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測度的軟件度量,將該度量用于計算程序的基本的獨(dú)立路徑數(shù)目,為確保所有語句至少執(zhí)行一次的測試數(shù)量的上界。獨(dú)立路徑:路徑中包含一條在定義之前未曾用到的邊。環(huán)形復(fù)雜度的計算方法方法一:流圖中區(qū)域的數(shù)量對應(yīng)于環(huán)形的復(fù)雜性;方法二:給定流圖G的圈復(fù)雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數(shù)量,N是流圖中結(jié)點的數(shù)量;方法三:給定流圖G的圈復(fù)雜度V(G),定義為V(G)=P+1,P是流圖G中判定結(jié)點的數(shù)量。路徑測試方法應(yīng)用舉例例:VoidSort(int
iRecordNum,intiType)1
{2
intx=0;3
inty=0;4
while(iRecordNum--
>0)5
{6
if(0==iType)7
x=y+2;8
else9
if(1==iType)10
x=y+10;11
else12
x=y+20;13
}14}第一步,畫出程序的控制流圖。第二步,計算環(huán)形復(fù)雜度,并確定獨(dú)立路徑。
V(G)=E-N+2=10-8+2=4。
路徑1:4-14;路徑2:4-6-7-13-4-14;路徑3:4-6-8-10-13-4-14;路徑4:4-6-8-12-13-4-14。第三步,導(dǎo)出測試用例第四步,執(zhí)行測試。intmain(){inta,b,c;boolIsTraingle;cin>>a>>b>>c;cout<<a<<endl;cout<<b<<endl;cout<<c<<endl;if((a<b+c)&&(b<a+c)&&(c<a+b))
IsTraingle=true;elseIsTraingle=false;if(IsTraingle)if((a==b)&&(b==c))
cout<<"Equilateral"<<endl;elseif((a!=b)&&(a!=c)&&(b!=c))
cout<<"Scalene"<<endl;elsecout<<"Isosceles"<<endl;elsecout<<"NotaTriangle"<<endl;}三角形程序控制流圖結(jié)點3到7是一個序列,結(jié)點7到9是一個if-then-else結(jié)構(gòu),結(jié)點10到16是一個嵌套的if-then-else結(jié)構(gòu)。結(jié)點3和17是程序源結(jié)點和匯結(jié)點,對應(yīng)于單入口、單出口準(zhǔn)則。該程序沒有循環(huán),因此控制流圖是一個有向非循環(huán)圖。作業(yè):請根據(jù)本程序控制流圖完成環(huán)形復(fù)雜度的計算、列出獨(dú)立路徑、測試用例的設(shè)計并執(zhí)行測試2:數(shù)據(jù)流測試數(shù)據(jù)流測試的意義?路徑測試可以測試程序中所有的條件和語句塊,但是,這也不能檢測出程序中所有的錯誤。基于數(shù)據(jù)流的測試主要關(guān)注程序中數(shù)據(jù)的定義和使用,可以用于對基于控制流測試的補(bǔ)充。1定義/使用測試首先要明確一個假設(shè),數(shù)據(jù)流的假設(shè)還是和路徑的假設(shè)一致,程序P的程序圖(有向圖)是一個單入口,單出口,并且不允許有從某個結(jié)點到其自身的邊。
a、DEF(v,n),定義結(jié)點。
intx;x=y+z;b、USE(v,n),使用結(jié)點
System.out.println(x)。c、P-use,當(dāng)一個變量被用在分支語句的條件表達(dá)式中(如if和while語句),則稱為變量的P-use(謂詞使用)。
if(x>0){……..};d、C-use,如果一個變量被用在賦值語句的表達(dá)式、輸出語句中,被當(dāng)作參數(shù)傳遞給調(diào)用函數(shù),或被用在下標(biāo)表達(dá)式中,則稱為變量的C-use。其中,C表示“計算”(計算使用)。y=x+1;function(x);e、定義使用路徑(DU-path)開始節(jié)點是DEF(v,n),結(jié)束結(jié)點是USE(v,n)的路徑。f、定義清除路徑(DC-path),當(dāng)開始結(jié)點和結(jié)束結(jié)點中間沒有其他的定義結(jié)點的時候為清除路徑。voidf(intx,inty,intm){ w=x; if(m>0) w++; else w=w+2; if(y<=10) x=5*y; else x=3*y+5; z=w+x;}
全定義-使用路徑覆蓋準(zhǔn)則:測試路徑需要覆蓋所有定義點到所有使用點的路徑,用dc-path擴(kuò)展成測試路徑測試路徑1:1→2→3→4→7→8→11測試路徑2:1→2→3→6→7→10→11測試路徑3:1→2→3→6→7→8→11測試路徑4:1→2→3→4→7→10→11變量x的測試用例:3.4邏輯覆蓋邏輯覆蓋是通過對程序邏輯結(jié)構(gòu)的遍歷實現(xiàn)對程序的覆蓋,它是一系列測試過程的總稱,這組測試過程逐漸進(jìn)行越來越完整的通路測試。根據(jù)覆蓋目標(biāo)的不同和覆蓋源程序語句的詳盡程度,邏輯覆蓋可分為語句覆蓋、判定(分支)覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。下一頁語句覆蓋語句覆蓋是選擇足夠多的測試數(shù)據(jù),使得程序中的每個可執(zhí)行語句至少執(zhí)行一次。A>1&&B=0A=2||x>1x=x/Ax=x++abcdeFTFTA=2,B=0,x=4,路徑:ade25語句覆蓋準(zhǔn)則的優(yōu)缺點:【優(yōu)點】
:可以很直觀地從源代碼得到測試用例,無須細(xì)分每條判定表達(dá)式。【缺點】
:由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件是無法測試的。如在多分支的邏輯運(yùn)算中無法全面的考慮。語句覆蓋是最弱的邏輯覆蓋。返回判定(分支)覆蓋判定覆蓋是設(shè)計足夠多的測試用例,使得程序中的每一個判斷至少獲得一次“真”和一次“假”,即使得程序流程圖中的每一個真假分支至少被執(zhí)行一次。A>1&&B=0A=2||x>1x=x/Ax=x++abcdeFTFT27分支覆蓋優(yōu)缺點:【優(yōu)點】:分支(判定)覆蓋具有比語句覆蓋更強(qiáng)的測試能力。同樣分支(判定)覆蓋也具有和語句覆蓋一樣的簡單性,無須細(xì)分每個判定就可以得到測試用例。【缺點】:往往大部分的分支(判定)語句是由多個邏輯條件組合而成,若僅僅判斷其整個最終結(jié)果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。返回條件覆蓋條件覆蓋要求設(shè)計足夠多的測試用例,使得程序中每個判定表達(dá)式中的每個條件至少獲得一次“真”和一次“假”。29條件覆蓋優(yōu)缺點:【優(yōu)點】:增加了對條件判定情況的測試,增加了測試路徑。【缺點】:條件覆蓋不一定包含分支(判定)覆蓋。條件覆蓋只能保證每個條件至少有一次為真,而不考慮所有的判定結(jié)果。返回判定/條件覆蓋得判斷中每個條件的所有可能至少出現(xiàn)一次,并且每個判斷本身的判定結(jié)果也至少出現(xiàn)一次。
對于上例,兩個判斷中各包含兩個條件,4個條件在兩個判斷中可能有8種組合:判定/條件覆蓋的優(yōu)缺點【優(yōu)點】:能同時滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)。【缺點】
:判定/條件覆蓋準(zhǔn)則的缺點是未考慮條件的組合情況。一些條件往往掩蓋了另一些條件。對于條件表達(dá)式(A>1)&&(B=0)來說,只要(A>1)的測試為真,才需測試(B=0)的值來確定此表達(dá)式的值,但是若(A>1)的測試值為假時,不需再測(B=0)的值就可確定此表達(dá)式的值為假,因而B=0沒有被檢查。
邏輯表達(dá)式中的錯誤不一定能夠檢查出來。返回條件組合覆蓋條件組合覆蓋要求設(shè)計足夠多的測試用例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。(1)A>1,B=0屬第一個判斷的取真分支;(2)A>1,B≠0屬第一個判斷的取假分支;(3)A<=1,B=0屬第一個判斷的取假分支;(4)A<=1,B≠0屬第一個判斷的取假分支;(5)A=2,x>1屬第二個判斷的取真分支;(6)A=2,x<=1屬第二個判斷的取真分支;(7)A≠2,x>1屬第二個判斷的取真分支;(8)A≠2,x<=1屬第二個判斷的取假分支。返回幾種覆蓋準(zhǔn)則之間的區(qū)別及關(guān)系復(fù)合謂詞覆蓋準(zhǔn)則分支--謂詞覆蓋準(zhǔn)則分支覆蓋準(zhǔn)則原子謂詞覆蓋準(zhǔn)則語句覆蓋準(zhǔn)則3.5白盒測試策略在軟件開發(fā)過程的不同階段,都可能需要進(jìn)行白盒測試,根據(jù)實際的開發(fā)情況,可有選擇的使用下面的白盒測試策略。1:桌前檢查桌前檢查是在程序員實現(xiàn)特定功能后,進(jìn)行單元測試之前,對源代碼進(jìn)行的初步檢查。該項工作的參與人員為開發(fā)人員,重點檢查編碼、語句的使用等是否符合編碼規(guī)范,并根據(jù)《編碼規(guī)范》調(diào)整自己的代碼以符合編碼規(guī)范的要求。2:單元測試單元測試也稱作模塊測試,在傳統(tǒng)結(jié)構(gòu)化程序中,以一個函數(shù)、過程為一個單元;在面向?qū)ο缶幊踢^程中,一般將類作為單元進(jìn)行測試。該項工作的參與人員為專門的白盒測試人員。可采用白盒測試和黑盒測試相結(jié)合的方法。3:代碼評審代碼評審是在編碼初期或編寫過程中采用一種有同行參與的評審活動。該項工作需要所有開發(fā)小組共同參與,通過大家共同閱讀代碼或由程序編寫者講解代碼,其他同行邊聽邊分析問題的方法。共同查看程序,可以找出問題,使大家的代碼風(fēng)格一致或遵守編碼規(guī)范。4:同行評審在同行評審中,由軟件產(chǎn)品創(chuàng)建者的同行們檢查該工作產(chǎn)品,識別產(chǎn)品的缺陷,改進(jìn)產(chǎn)品的不足。主要用于檢驗工作產(chǎn)品是否正確的滿足了以往的工作產(chǎn)品中建立的規(guī)范,如需求或設(shè)計文檔;識別工作產(chǎn)品相對于標(biāo)準(zhǔn)的偏差,包括可能影響軟件可維護(hù)性的問題;向創(chuàng)建者提出改進(jìn)建議;促進(jìn)參與者之間的技術(shù)交流和學(xué)習(xí)等。根據(jù)CMM標(biāo)準(zhǔn),該項工作的參與人員為程序員、設(shè)計師、單元測試工程師、維護(hù)者、需求分析師、編碼標(biāo)準(zhǔn)專家。至少需要開發(fā)人員,測試人員和設(shè)計師。5:代碼走查代碼走查由測試小組組織或者專門的代碼走查小組進(jìn)行代碼走查,這時需要開發(fā)人員提交有關(guān)的資料文檔和源代碼給走查人員,并進(jìn)行必要的講解。代碼走查往往根據(jù)《代碼檢查單》來進(jìn)行,代碼檢查單常常是根據(jù)《編碼規(guī)范》總結(jié)出來的一些條目,目的是檢查代碼是否按照《編碼規(guī)范》來編寫的。當(dāng)然,代碼走查的最終目的還是為了發(fā)現(xiàn)代碼中潛在的錯誤和缺陷。該項工作的參與者為測試人員。代碼走查速度一般建議為:匯編代碼與C代碼150行/小時,C++/Java200-300行/小時。6:靜態(tài)分析靜態(tài)分析通常需要輔助工具支持,通過提取代碼信息,進(jìn)行統(tǒng)計,根據(jù)統(tǒng)計結(jié)果對源代碼進(jìn)行質(zhì)量評估。代碼規(guī)則檢查也是靜態(tài)分析的一個方面。該項工作的參與人員為測試小組。桌面檢查、代碼走查、代碼審查同時屬于代碼檢查的方式。代碼檢查是發(fā)現(xiàn)錯誤缺陷最有效的手段之一,通常能發(fā)現(xiàn)30%-70%的邏輯設(shè)計和編碼缺陷。可以發(fā)現(xiàn)的問題如:聲明或引用錯誤、函數(shù)/方法參數(shù)錯誤、語句不可達(dá)錯誤、數(shù)組越界錯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)安全與加密-全面剖析
- 空間集聚與房產(chǎn)估值-全面剖析
- 城市道路降噪材料研發(fā)-全面剖析
- 區(qū)塊鏈賦能教育審計提升透明與效率
- 2025年供配電測控保護(hù)裝置項目建議書
- 2025年度學(xué)術(shù)研究機(jī)構(gòu)課題立項計劃
- DeFi技術(shù)創(chuàng)新與金融市場透明化
- 小學(xué)道德與法律教育培訓(xùn)計劃
- 微軟云平臺優(yōu)化策略-全面剖析
- 2025年高純?nèi)嗽旃杌沂献鲄f(xié)議書
- 現(xiàn)代漢語語料庫詞頻表CorpusWordlist
- GB/T 5465.2-2023電氣設(shè)備用圖形符號第2部分:圖形符號
- 學(xué)校德育活動安排表
- 2023年浙江省高考滿分作文:科技的新秀人文的毒酒
- 2022年望城區(qū)中、小學(xué)教師招聘《信息技術(shù)基礎(chǔ)知識》試題
- 藥品召回函和通知單
- 天然氣應(yīng)急預(yù)案演練報告
- 個體工商戶公司章程(標(biāo)準(zhǔn)版)
- 《素描》教案-第四章結(jié)構(gòu)素描
- 藏羚羊的介紹
- 人均GDP不同階段的經(jīng)濟(jì)發(fā)展特征及國際經(jīng)驗借鑒
評論
0/150
提交評論