軟件測試 課件 單元3白盒測試_第1頁
軟件測試 課件 單元3白盒測試_第2頁
軟件測試 課件 單元3白盒測試_第3頁
軟件測試 課件 單元3白盒測試_第4頁
軟件測試 課件 單元3白盒測試_第5頁
已閱讀5頁,還剩70頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

單元3白

盒測試小張相對程序代碼進行測試,應該如何進行測試?需要利用什么方法來編寫測試用例呢?對于程序代碼的測試應該利用白盒測試方法來進行。白盒測試是測試人員針對可見代碼進行的一種測試,它需要分析代碼的控制結(jié)構、執(zhí)行路徑和判斷條件,并據(jù)此來寫出測試用例。引例描述小張要完成程序代碼的測試任務,需按照下面3步的白盒測試學習計劃來完成學習。

1.學習用邏輯覆蓋方法編寫測試用例;

2.學習按照路徑測試方法編寫測試用例;

3.學習按照循環(huán)測試方法編寫測試用例。引例描述引例描述白盒內(nèi)部實現(xiàn)可見輸入輸出測試用例目錄邏輯覆蓋測試任務一基本路徑測試任務二

循環(huán)測試任務三任務一邏輯覆蓋測試●本任務通過分析一個Java程序段,分析程序的邏輯結(jié)構、包括流程圖和判斷條件,根據(jù)要求的邏輯覆蓋表中設計程序執(zhí)行的測試用例,對程序代碼的執(zhí)行進行全面分析測試,從而驗證程序邏輯結(jié)構的正確性,實現(xiàn)對該程序片段的邏輯覆蓋測試?!癜缀袦y試又稱為透明盒測試、結(jié)構測試,它基于程序內(nèi)部結(jié)構進行測試,而不是測試應用程序的功能(黑盒測試)。因此,測試人員需要了解程序內(nèi)部邏輯結(jié)構,從編程語言的角度設計測試用例。白盒測試可用于單元測試、集成測試和系統(tǒng)測試。本章將針對具體的白盒測試方法進行詳細講解。任務陳述●邏輯覆蓋是白盒測試中主要的動態(tài)測試方法之一。它是以程序內(nèi)部的邏輯結(jié)構為基礎的測試技術,通過又程序邏輯結(jié)構的遍歷來實現(xiàn)對程序的測試覆蓋。所謂覆蓋就是作為測試標準的邏輯單元、邏輯分支、邏輯取都執(zhí)行到。這一方法要求測試人員對程序的邏輯結(jié)構有清楚的了解。邏輯覆蓋的標準有語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、條件組合覆蓋等?;顒右徽J識邏輯覆蓋一、邏輯覆蓋簡介1.語句覆蓋語句覆蓋就是設計若干測試用例運行被測程序,使得程序中每一可執(zhí)行語句至少執(zhí)行一次。這里的“若干”,意味著使用測試用例越少越好。語句覆蓋在測試中主要發(fā)現(xiàn)缺陷或錯誤語句。語句覆蓋率的公式如下。語句覆蓋率=被評價到語句數(shù)量/可執(zhí)行的語句總數(shù)×100%語句覆蓋的缺點:對程序執(zhí)行邏輯的覆蓋率很低?;顒右徽J識邏輯覆蓋二、五種覆蓋標準2.判定覆蓋判定覆蓋有時也稱為分支覆蓋,就是指設計若干測試用例,運行被測程序,使得每個判定的取真分支和取假分支至少評價一次。判定覆蓋率=被評價到的判定路徑數(shù)量/判定路徑的總數(shù)x100%判定覆蓋的缺點:判定覆蓋雖然把程序所有分支均覆蓋到,但其主要對整個表達式最終取值進行度量,忽略了表達式內(nèi)部的取值。

活動一認識邏輯覆蓋二、五種覆蓋標準3.條件覆蓋條件覆蓋是指設計足夠多的測試用例,運行被測程序,使得每一判定語句中每個邏輯條件的可能取值至少滿足一次。條件覆蓋率的公式如下。條件覆蓋率=被評價到的條件取值的數(shù)量/條件取值的總數(shù)x100%條件覆蓋的缺點:只考慮每個判定語句中的每個表達式,沒有考慮各個條件分支(或者涉及不到全部分支),即不能夠滿足判定覆蓋。

活動一認識邏輯覆蓋二、五種覆蓋標準4.條件/判定覆蓋條件/判定覆蓋是指設計足夠多的測試用例,使得判定中每個條件的所有可能(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結(jié)果也至少出現(xiàn)一次。條件/判定覆蓋率的公式如下。條件/判定覆蓋率=被評價到的條件取值和判定分支的數(shù)量/(條件取值總數(shù)+判定分支總數(shù))x100%條件/判定覆蓋的缺點:沒有考慮單個判定對整體結(jié)果的影響,無法發(fā)現(xiàn)邏輯錯誤?;顒右徽J識邏輯覆蓋二、五種覆蓋標準5.條件組合覆蓋條件組合覆蓋,也稱多條件覆蓋(MultipleConditionCoverage,MCC),是指設計足夠多的測試用例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次(以數(shù)軸形式劃分區(qū)域,提取交集,建立最少的測試用例)。這種方法包含了“判定覆蓋”和“條件覆蓋”的各種要求。條件組合覆蓋率的公式如下。條件組合覆蓋率=被評價到的條件取值組合的數(shù)量/條件取值組合的總數(shù)x100%。條件組合覆蓋的缺點:判定語句較多時,條件組合值比較多?;顒右徽J識邏輯覆蓋二、五種覆蓋標準覆蓋標準用于描述測試過程中對被測對象的測試程度,有時候也稱為軟件測試覆蓋準則或者測試數(shù)據(jù)完備準則,它可以用于衡量測試是否充分,可以作為測試停止的標準之一。同時,它也是選取測試數(shù)據(jù)的依據(jù),滿足相同覆蓋標準的測試數(shù)據(jù)集是等價的?;顒右徽J識邏輯覆蓋三、覆蓋標準白盒測試覆蓋標準是針對程序內(nèi)部結(jié)構而言的,可以分為基于控制流的覆蓋標準和基于數(shù)據(jù)流的覆蓋標準。基于控制流的覆蓋標準,可用于檢查程序中的分支和循環(huán)結(jié)構的邏輯表達式,被工業(yè)界廣泛采用,語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、條件組合覆蓋、基本路徑覆蓋都屬于基于控制流的覆蓋標準;基于數(shù)據(jù)流的覆蓋標準則有Rapps和Weyuker的標準、Ntafos的標準、Ural的標準、Laski和Korel的標準等?;顒右徽J識邏輯覆蓋三、覆蓋標準不同的覆蓋標準其測試的充分性是不一樣的。如果說A標準的充分程度比B標準高,則意味著滿足A標準的測試用例集合也滿足B標準。語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、條件組合覆蓋的測試充分程度存在如圖所示的強弱關系。例如,而條件覆蓋并不一定比語句覆蓋強?;顒右徽J識邏輯覆蓋三、覆蓋標準設有程序段P1如下。if(x>0ory>0)thena=10if(x<10andy<10)thenb=0其中,變量a,b的值在其他地方已經(jīng)定義了,均為-1,該程序段對應的流程圖如圖所示?;顒佣壿嫺采w測試用例設計1.語句覆蓋測試用例設計語句覆蓋要求設計若干個測試用例,使得程序中的每個可執(zhí)行語句至少都能被執(zhí)行一次。對圖所示程序段P1流程圖,按照這一標準,程序需要執(zhí)行通過的位置有①③④⑥;由于②⑤位置沒有語句,因此不得要覆蓋。首先可能想到的是,可以設計兩個測試用例,分別覆蓋第一個if結(jié)構有執(zhí)行語句的分支③和第二個if結(jié)構有執(zhí)行語句的分支④,即:Case1:x=1,y=1,覆蓋③;Case2:x=-1,y=-1,覆蓋④。

活動二邏輯覆蓋測試用例設計這樣即可達到語句覆蓋要求,但從節(jié)約測試成本的角度出發(fā),可以優(yōu)化一下測試用例設計,實際上只需要一個測試用例,即:Case3:x=8,y=8。Case3可同時覆蓋①③④⑥,其執(zhí)行路徑如圖所示。

活動二邏輯覆蓋測試用例設計2.判定覆蓋判定覆蓋是指設計若干測試用例,運行被測程序,使程序中每個判斷的真值結(jié)果和假值結(jié)果都至少出現(xiàn)一次。仍以程序段P1為例。對照流程圖,按照這一標準,程序需要執(zhí)行通過的位置有①②③④⑤⑥。程序段P1中存在IF語句,由于每個判斷有真假兩種判斷結(jié)果,因此至少需要兩個測試用例。P1中的兩個IF語句是串聯(lián)的,而不是嵌套的,所以如果設計合理的話兩個測試用例也確實夠了,如下兩個測試用例可以達到判定覆蓋要求。Case4:x=20,y=20,覆蓋①③⑤⑥;Case5:x=-2,y=-2,覆蓋①②④⑥。

活動二邏輯覆蓋測試用例設計

具體覆蓋情況如表所示。

活動二邏輯覆蓋測試用例設計測試用例編號xyx>0ory>0x<10andy<10Case42020YNCase5-2-2NY3.條件覆蓋條件覆蓋就是要求判斷表達式中的每一個條件都要至少取得一次真值和一次假值。需要注意的是,每條件都要至少取得一次真值和一次假值并不等于每一個判定也都能至少取得一次真值和一次假值,即條件圖并不比判定覆蓋強,兩者只是關注點不同,不存在嚴格的強弱關系。對于程序段P1,設計如下測試用例可以達到條件覆蓋要求。Case6:x=20,y=-20;Case7:x=-2,y=20。

活動二邏輯覆蓋測試用例設計

具體覆蓋情況如表所示。

活動二邏輯覆蓋測試用例設計測試用例編號xyx>0y>0x<10y<10Case62020YNNYCase7-2-2NYYNCase6和Case7,對第1個if語句,只覆蓋了Y分支;對第2個if語句,只覆蓋了N分支,因此并不滿判定覆蓋。4.條件/判定覆蓋條件覆蓋并不比判定覆蓋強,兩者只是關注點不同,有時會把條件覆蓋和判定覆蓋結(jié)合起來使用,稱為條件/判定覆蓋。它是指:設計足夠多的測試用例,使判定表達式中每個條件的真/假取值至少都出現(xiàn)一次,并每個判定表達式自身的真/假取值也都要至少出現(xiàn)一次。對于程序段P1來說,我們在做判定覆蓋時設計的測試用例case4和case5,實際上也同時是滿足條件/判定覆蓋的,因為每個條件的真/假取值都出現(xiàn)了一次,并且每個判定的真/假取值結(jié)果也都出現(xiàn)了一次?;顒佣壿嫺采w測試用例設計

具體覆蓋情況如表所示。

活動二邏輯覆蓋測試用例設計測試用例編號xyx>0y>0x<10y<10Case42020YYNNCase5-2-2NNYY來看一個三角形判定問題的案例,有程序段P2如下。If((a<b+c)&&(b<a+c)&&(c<a+b))is_Triangle=true;elseis_Triangle=false;對該程序段進行測試時,如果要滿足條件/判定覆蓋,則四個條件表達式都要既有true取值,也有false取值。活動二邏輯覆蓋測試用例設計4個條件表達式如下:

活動二邏輯覆蓋測試用例設計條件表達式編號條件表達式1a<b+c2b<a+c3c<a+b4(a<b+c)&&(b<a+c)&&(c<a+b)設計如下測試用例可滿足條件/判定覆蓋。Case1:a=1,b=1,c=1;Case2:a=1,b=2,c=3;Case3:a=3,b=1,c=2;Case4:a=2,b=3,c=1。具體覆蓋情況如表所示

活動二邏輯覆蓋測試用例設計測試用例編號abca<b+cb<a+cc<a+b(a<b+c)&&(b<a+c)&&(c<a+b)Case1111YYYYCase2123NYNNCase3312NYYNCase4231YNYN5.條件組合覆蓋條件組合覆蓋也叫多條件覆蓋,它是要設計足夠多的測試用例,使每個判定中條件取值的各種組合都至少出現(xiàn)一次。顯然,滿足條件組合覆蓋的測試用例一定滿足判定覆蓋、條件覆蓋和條件/判定組合覆蓋。對于程序段P1,由于一個判定中有兩個條件,而兩個條件可能的組合情況有4種,因此,如果要達到條件組合覆蓋,至少需要四個測試用例?;顒佣壿嫺采w測試用例設計5.條件組合覆蓋如果能夠合理設計,讓四個測試用例在覆蓋第1個判定四種條件組合的同時也覆蓋第2個判定的四種條件組合,那么四個測試用例就夠了,設計如下測試用例可以滿足條件組合覆蓋。Case8:x=50,y=50;Case9:x=-5,y=-5;Case10:x=50,y=-5;Case11:x=-5,y=50。

活動二邏輯覆蓋測試用例設計對兩個判定表達式的條件組合覆蓋情況如表所示。

活動二邏輯覆蓋測試用例設計測試用例編號xy第1個判定第2個判定X>0y>0X<10y<10Case81010YYNNCase9-1-1NNYYCase1010-1YNNYCase11-110NYYN5.條件組合覆蓋以上滿足條件組合覆蓋的四個測試用例,雖然能夠覆蓋到判定表達式中條件的各種組合情況,但并不能覆蓋到程序中的每一條可能的執(zhí)行路徑。如圖所示,路徑①②⑤⑥就沒有被覆蓋到?;顒佣壿嫺采w測試用例設計5.條件組合覆蓋如果某個判斷表達式由4個條件組成,那么對其進行條件組合覆蓋測試時,需要設計24個,也就是16個測試用例;如果某個判斷表達式由6個條件組成,那么對其進行條件組合覆蓋測試時,需要設計26個,也就是64個測試用例。條件組合覆蓋的缺點是,當一個判定語句中條件較多時,條件組合數(shù)會很大,需要很多的測試用例。從便于測試的角度來說,在編寫程序的時候,一個判定表達式中的條件個數(shù)不宜太多?;顒佣壿嫺采w測試用例設計某Java程序段如下,請設計測試用例集,要求分別滿足語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、條件組合覆蓋。publicvoiddowork(intx,inty,intz){intk=0,j=0if((x>20)&&(z<10)){ k=x*y-1;j=k*k;}if((x==22)||(y>20)){ j=x*y+10;}j=j%3;System.out.println("k,j:"+","+j);}任務實施1.畫出該程序的流程圖,如圖所示。任務實施2.語句覆蓋:分析程序流程圖可知,滿足語句覆蓋可讓兩個判定均取真值,同時覆蓋①③④⑥,設計如下測試用例Case1:x=22,y=21,z=5。任務實施3.判定覆蓋:要求程序中每個判斷的真值結(jié)果和假值結(jié)果都至少出現(xiàn)一次,即x>20&&z<10取真值、假值各一次,x==22||y>20,取真值、假值各一次,可設計如下測試用例。Case2:x=21,y=10,z=5。Case3:x=10,y=22,z=10。任務實施

任務實施4.條件覆蓋:要求判斷表達式中的每一個條件都要至少取得一次真值和一次假值。設計如下測試用例可以達到條件覆蓋要求。Case4:x=22,y=10,z=5。Case5:x=10,y=22,z=10。具體覆蓋情況見表。測試用例編號xyzx>20y>20X==22z<10Case422105YNYYCase5102210NYNN5.條件/判定覆蓋:設計足夠多的測試用例,使判定表達式中每個條件的真/假取值至少都出現(xiàn)一次,并每個判定表達式自身的真/假取值也都要至少出現(xiàn)一次。設計如下測試用例可以達到條件覆蓋要求。Case6:x=22,y=10,z=5。Case7:x=10,y=22,z=10。具體覆蓋情況見表。任務實施測試用例編號xyzx>20z<10x>20&&z<10x==22y>20x==22||y>20Case622225YYYYYYCase7101010NNNNNN6.條件組合覆蓋:要設計足夠多的測試用例,使每個判定中條件取值的各種組合都至少出現(xiàn)一次。顯然,滿足條件組合覆蓋的測試用例一定滿足判定覆蓋、條件覆蓋和條件/判定組合覆蓋。對于該Java程序段,由于一個判定中有兩個條件,而兩個條件可能的組合情況有4種,因此,如果要達到條件組合覆蓋,至少需要四個測試用例。設計如下測試用例可以滿足條件組合覆蓋。Case8:x=22,y=10,z=5;Case9:x=10,y=22,z=11;Case10:x=22,y=22,z=11;Case11:x=10,y=10,z=5。任務實施對兩個判定表達式的條件組合覆蓋情況如表所示。任務實施測試用例編號xyz第1個判定第2個判定x>20z<10x==22y>20Case822105YYYNCase9102211NNNYCase10222211YNYYCase1110105NYNN任務二基本路徑測試●本任務通過分析已經(jīng)編寫的C語言程序的執(zhí)行路徑,設計程序執(zhí)行路徑的測試用例,對程序代碼的執(zhí)行進行全面分析測試,從而驗證程序邏輯結(jié)構的正確性,實現(xiàn)對程序路徑的高覆蓋測試?!衲壳埃窂綔y試比較常見的方法是基本路徑測試方法和循環(huán)測試方法。兩種方法實施步驟都是首先將程序代碼先轉(zhuǎn)變?yōu)槌绦蛄鞒虉D,然后將程序流程圖轉(zhuǎn)變?yōu)楸阌诜治雎窂降目刂屏鲌D,再分析不同獨立路徑的具體結(jié)構,最后設計程序的測試用例。任務陳述從廣義的角度講,任何有關路徑分析的測試都可以被稱為路徑測試,這里給出路徑測試的最簡單描述:路徑測試就是從一個程序的入口開始,執(zhí)行所經(jīng)歷的各個語句的完整過程?;顒右徽J識基本路徑一、路徑測試的定義從廣義的角度講,基本路徑測試法是一種白盒測試方法,它是在程序控制流圖的基礎上,通過分析控制構造的環(huán)路復雜度,導出基本可執(zhí)行路徑集合,從而設計測試用例。設計出的測試用例要保證測試程序中的每一個可執(zhí)行路徑中的語句至少執(zhí)行一次?;顒右徽J識基本路徑二、基本路徑的含義(1)畫出程序控制流圖(描述程序控制流的一種圖示方法);(2)計算程序的圈復雜度(McCabe復雜度度量),從程序的環(huán)路復雜度可導出程序基本路徑集合中的獨立路徑條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界;(3)導出獨立路徑,根據(jù)圈復雜度和程序結(jié)構設計獲得獨立路徑;(4)準備測試用例,確?;韭窂郊忻恳粭l路徑的執(zhí)行?;顒右徽J識基本路徑三、基本路徑測試的步驟程序流程圖四一個有向圖,又稱為框圖,采用不同圖形符號標明條件或者處理等。由于這些符號在路徑分析時并不重要,為了突出控制流結(jié)構,將程序流程圖進行進行簡化,產(chǎn)生控制流圖??刂屏鲌D用于描述程序控制流的一種圖示方法,程序控制流圖中只有兩周圖形符號:每一個圓圈成為流圖的一個結(jié)點,代表一條或多條無分支的語句或源程序語句,箭頭成為邊或者連接,代表控制流。邊和結(jié)點圈定的區(qū)域叫做區(qū)域。當對區(qū)域計數(shù)時,圖形外的區(qū)域也應視為一個區(qū)域?;顒右徽J識基本路徑四、控制流圖程序流程圖四一個有向圖,又稱為框圖,采用不同圖形符號標明條件或者處理等。由于這些符號在路徑分析時并不重要,為了突出控制流結(jié)構,將程序流程圖進行進行簡化,產(chǎn)生控制流圖。控制流圖用于描述程序控制流的一種圖示方法,程序控制流圖中只有兩周圖形符號:每一個圓圈成為流圖的一個結(jié)點,代表一條或多條無分支的語句或源程序語句,箭頭成為邊或者連接,代表控制流。邊和結(jié)點圈定的區(qū)域叫做區(qū)域。當對區(qū)域計數(shù)時,圖形外的區(qū)域也應視為一個區(qū)域?;顒右徽J識基本路徑四、控制流圖活動一認識基本路徑四、控制流圖將程序流程圖轉(zhuǎn)化為控制流圖時,應遵照如下規(guī)格:包含條件的結(jié)點(也叫謂詞結(jié)點),由判定結(jié)點出發(fā)的邊必須終止于某一個結(jié)點,一組順序處理框可以映射為一個結(jié)點,控制流圖中的箭頭(邊)表示控制流的方向,類似于流程圖中的流線,一條邊必須終止于一個結(jié)點。活動一認識基本路徑四、控制流圖如果判斷中的條件表達式是由一個或多個邏輯運算符(OR、AND、NAND、NOR)連接的復合條件表達式,則需要改為一系列只有單條件的嵌套的判斷。例如:

if(iType==1)

x=y+10;

else x=y+20;活動一認識基本路徑四、控制流圖程序流程圖中的一個處理方框序列和一個菱形判定框可被映射為程序控制流圖中的一個結(jié)點,而控制流圖中的箭頭類似于流程圖中的箭頭?;顒佣韭窂綔y試用例設計一、畫程序控制流程圖圈復雜度是一種為程序邏輯復雜性提供定量測度的軟件度量,將該度量用于計算程序的基本的獨立路徑數(shù)目。方法1:流圖中封閉區(qū)域的數(shù)量+1個開放區(qū)域=總的區(qū)域數(shù)=圈復雜度。方法2:給定流圖G的圈復雜度V(G),定義為V(G)=E-N+2,E是流圖中邊的數(shù)量,N是流圖中結(jié)點的數(shù)量。方法3:給定流圖G的圈復雜度V(G),定義為V(G)P+1,P是流圖G中判定結(jié)點的數(shù)量?;顒佣韭窂綔y試用例設計二、計算程序的圈復雜度獨立路徑是指至少沿一條新的邊移動的路徑,即和其他路徑相比,至少引入一個新處理語句或一個新判定的程序通路。程序圈復雜度值V(G)等于該程序基本路徑集合周總的獨立路徑的條數(shù),這是確定程序中每個可執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上限?;顒佣韭窂綔y試用例設計三、導出獨立路徑為了確?;韭窂郊忻恳粭l路徑的執(zhí)行,根據(jù)判斷結(jié)點給出的條件,選擇適當?shù)妮斎霐?shù)據(jù)即準備測試用例以保證某一條路徑可以被測試到?;顒佣韭窂綔y試用例設計四、準備測試用例用基本路徑測試方法對下面的C語言函數(shù)代碼進行白盒測試。voidSort(intiRecordNum,intiType){ intx=0; inty=0; while(iRecordNum>0){ if(iType==0){ x=y+2; break; } else if(iType==1) x=y+10; else x=y+20; iRecordNum--; }}任務實施1.畫出程序控制流圖(1)畫出程序的程序流程圖任務實施1.畫出程序控制流圖(1)將上面的程序流圖圖轉(zhuǎn)變?yōu)榭刂屏鲌D任務實施2.計算程序的圈復雜度方法1:流圖中有3個密閉區(qū)域,1個開放區(qū)域,共計4個區(qū)域,故圈復雜度為4。方法2:圈復雜度V(G)=E(邊)-N(結(jié)點)+2=10-8+2=4。方法3:圈復雜度V(G)=P(判斷結(jié)點)+1=3+1=4。任務實施3.導出獨立路徑V(G)值正好等于該程序的獨立路徑的條數(shù),具體如下:(1)路徑1:4-14。(2)路徑2:4-6-7-14。(3)路徑3:4-6-8-10-13-4-14。(4)路徑4:4-6-8-11-13-4-14。任務實施4.測試用例設計任務實施序號路徑輸入預期輸出14-14iRecordNum=0,或者取iRecordNum<0的某一個值,iType取任意值x=024-6-7-14iRecordNum=1,iType=0x=234-6-8-10-13-4-14iRecordNum=1,iType=1x=1044-6-8-11-13-4-14iRecordNum=1,iType=2x=20任務三循環(huán)測試活動一認識循環(huán)測試一、循環(huán)測試的定義循環(huán)測試是指執(zhí)行足夠的測試用例,使得循環(huán)中的每個條件都得到驗證。循環(huán)測試是一種白盒測試技術,其目的是檢查循環(huán)結(jié)構的有效性?;顒右徽J識循環(huán)測試一、循環(huán)測試的定義在結(jié)構化的程序中通常只有3種循環(huán),即簡單循環(huán)串接循環(huán)嵌套循環(huán)活動一認識循環(huán)測試二、循環(huán)測試的分類活動一認識循環(huán)測試二、循環(huán)測試的分類簡單循環(huán)是最普通的循環(huán),不嵌套,并且只有一個循環(huán)。嵌套循環(huán)是將一個循環(huán)結(jié)構A聲明在另一個循環(huán)結(jié)構B的循環(huán)體中,循環(huán)結(jié)構B為外層循環(huán),循環(huán)結(jié)構A為內(nèi)層循環(huán)。簡單來說,一個循環(huán)的外面包圍一層循環(huán)叫做二重循環(huán),外面包圍兩層循環(huán)稱為三重循環(huán),依此類推,外面包圍多層循環(huán)則為多重循環(huán)。串接循環(huán)又稱為并列循環(huán)。串接循環(huán)有兩種方式,第一種是串接循環(huán)的各個循環(huán)都彼此獨立,第二種是兩個循環(huán)不是獨立的,即第一個循環(huán)的循環(huán)計數(shù)器值是第二個循環(huán)的初始值?;顒佣h(huán)測試用例設計一、簡單循環(huán)使用下列測試集來測試簡單循環(huán),其中n是允許通過循環(huán)的最大次數(shù)。跳過循環(huán)。只通過循環(huán)一次。通過循環(huán)兩次。通過循環(huán)m次,其中m<n-1。(通常取m=n/2)通過循環(huán)n-1,n,n+1次?;顒佣h(huán)測試用例設計二、嵌套循環(huán)從最內(nèi)層循環(huán)開始測試,把所有其他循環(huán)都設置為最小值。對最內(nèi)層循環(huán)使用簡單循環(huán)測試方法,而使外層循環(huán)的迭代參數(shù)(例如,循環(huán)計數(shù)器)取最小值,并為越界值或非法值增加一些額外的測試。由內(nèi)向外,對下一個循環(huán)進行測試,但保持所有其他外層循環(huán)為最小值,其他嵌套循環(huán)為“典型”。繼續(xù)進行下去,直到測試完所有循環(huán)?;顒佣h(huán)測試用例設計三、串接循環(huán)串接循環(huán)。如果串接循環(huán)的各個循環(huán)都彼此獨立,則可以使用前述的測試簡單循環(huán)的方法來測試串接循環(huán)。但是,如果兩個循環(huán)串接,而且第一個循環(huán)的循環(huán)計數(shù)器值是第二個循環(huán)的初始值,則這兩個循環(huán)并不是獨立的。當循環(huán)不獨立時,建議使用測試嵌套循環(huán)的方法來測試串接循環(huán)。任務實施用循環(huán)測試方法對下面的C語言函數(shù)代碼進行白盒測試

voidinput(intnum[],intn){1inta;2for(inti=0;i<n;i++){3do{cout<<"請輸入一個1~200之間的整數(shù):";5cin>>a;6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論