chap-3-軟件測試技術(shù)-白盒測試技術(shù)(含其他)_第1頁
chap-3-軟件測試技術(shù)-白盒測試技術(shù)(含其他)_第2頁
chap-3-軟件測試技術(shù)-白盒測試技術(shù)(含其他)_第3頁
chap-3-軟件測試技術(shù)-白盒測試技術(shù)(含其他)_第4頁
chap-3-軟件測試技術(shù)-白盒測試技術(shù)(含其他)_第5頁
已閱讀5頁,還剩90頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

白盒測試技術(shù)白盒測試應(yīng)該根據(jù)程序的控制結(jié)構(gòu)設(shè)計測試用例,原則是:保證模塊中每一獨立的路徑至少執(zhí)行一次;保證所有判斷的每一分枝至少執(zhí)行一次;保證每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;驗證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。白盒測試方法程序控制流分析(Programcontrol-flow)數(shù)據(jù)流分析(Data-flowcoverage)邏輯覆蓋域測試符號測試路徑分析程序插裝控制流圖是描述程序控制流的一種圖示方式。其中基本的控制結(jié)構(gòu)對應(yīng)的圖形符號如圖3-8所示。在圖3-8所示的圖形符號中,圓圈稱為控制流圖的一個結(jié)點,它表示一個或多個無分支的語句或源程序語句。

1.程序的控制流圖

圖3-8控制流圖的圖形符號圖3-9(a)所示的是一個程序的流程圖,它可以映射成圖(b)所示的控制流圖。圖3-9程序流程圖和對應(yīng)的控制流圖邏輯覆蓋邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。這一方法要求測試人員對程序的邏輯結(jié)構(gòu)有清楚的了解,甚至要能掌握源程序的所有細(xì)節(jié)。由于覆蓋測試的目標(biāo)不同,邏輯覆蓋又可分為:語句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋圖3-7參考例子流程圖intfunction1(boola,boolb,boolc){

intx;x=0;if(a&&(b||c))x=1;returnx;}1.語句覆蓋為了暴露程序中的錯誤,程序中的每條語句至少應(yīng)該執(zhí)行一次。所以,語句覆蓋的含義是:選擇足夠多的測試數(shù)據(jù),使被測程序中每條語句至少執(zhí)行一次。2.判定覆蓋比語句覆蓋稍強的覆蓋標(biāo)準(zhǔn)是判定覆蓋。按判定覆蓋準(zhǔn)則進(jìn)行測試是指,設(shè)計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷的真假值均曾被滿足。判定覆蓋又稱為分支覆蓋。3.條件覆蓋在設(shè)計程序中,一個判定語句是由多個條件組合而成的復(fù)合判定。條件覆蓋的含義是:構(gòu)造一組測試用例,使得每一判定語句中每個邏輯條件的可能值至少滿足一次。4.條件判定組合覆蓋條件判定組合覆蓋的含義是:設(shè)計足夠的測試用例,使得判定中每個條件的所有可能(真/假)至少出現(xiàn)一次,并且每個判定本身的判定結(jié)果(真/假)也至少出現(xiàn)一次。5.多條件覆蓋多條件覆蓋也稱為條件組合覆蓋,它的含義是:設(shè)計足夠的測試用例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。6.修正條件判定覆蓋它要求滿足兩個條件:首先,每一個程序模塊的入口和出口點都要考慮至少被調(diào)用一次,每個程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過邏輯操作符(and、or)連接的bool條件,每個條件對于判定的結(jié)果值是獨立的。7.測試覆蓋準(zhǔn)則(1)Foster的ESTCA覆蓋準(zhǔn)則前面所介紹的邏輯覆蓋其出發(fā)點似乎是合理的。所謂“覆蓋”,就是想要做到全面而無遺漏。但是,事實表明,它并不能真的做到無遺漏。

K.A.Foster從測試工作實踐的教訓(xùn)出發(fā),吸收了計算機硬件的測試原理,提出了一種經(jīng)驗型的測試覆蓋準(zhǔn)則。3.2.3程序插樁在軟件動態(tài)測試中,程序插樁是一種基本的測試手段,有著廣泛的應(yīng)用。1.方法簡介程序插樁方法是借助往被測程序中插入操作,來實現(xiàn)測試目的的方法。設(shè)計插樁程序時需要考慮的問題包括:①探測哪些信息;②在程序的什么部位設(shè)置探測點;③需要設(shè)置多少個探測點。如果我們想要了解一個程序在某次運行中所有可執(zhí)行語句被覆蓋的情況,或是每個語句的實際執(zhí)行次數(shù),最好的辦法是利用插樁技術(shù)。這里僅以計算整數(shù)X和整數(shù)Y的最大公約數(shù)程序為例,說明插樁方法的要點。圖3-3給出了這一程序的流程圖。圖3-3插樁后求最大公約數(shù)程序的流程圖2.?dāng)嘌哉Z句在程序中特定部位插入某些用以判斷變量特性的語句,使得程序執(zhí)行中這些語句得以證實,從而使程序的運行特性得到證實。我們把插入的這些語句稱為斷言。這一做法是程序正確性證明的基本步驟,盡管算不上嚴(yán)格的證明,但方法本身仍然是很實用的。下面以求兩個非負(fù)數(shù)NUM和DEN之商的Wensley迭代算法為例,對斷言語句的作用做一簡要說明。圖3-5計算非負(fù)數(shù)之商的迭代程序圖3-6插入斷言后的迭代程序點覆蓋

NodeCoverage如果連通圖G的子圖G′是連通的,而且包含G的所有節(jié)點,則稱G′是G的點覆蓋。與語句覆蓋標(biāo)準(zhǔn)相同。

語句覆蓋

Statementcoverage語句覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得每一可執(zhí)行語句至少執(zhí)行一次。這種覆蓋又稱為點覆蓋,它使得程序中每個可執(zhí)行語句都得到執(zhí)行,但它是最弱的邏輯覆蓋準(zhǔn),效果有限,必須與其它方法交互使用。Tobecontinue…PROCEDUREExample(A,B:real;X:real);BeginIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;I.A=2,B=0,X=4----sacbed語句覆蓋所有的語句至少執(zhí)行一次!是最弱的邏輯覆蓋eF(A>1)

and

(B=0)(A=2)

or(X>1)X=X/AX=X+12sd1aF4cTb5T637語句覆蓋優(yōu)缺點優(yōu)點:可以很直觀地從源代碼得到測試用例,無須細(xì)分每條判定表達(dá)式。缺點:由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件和可能到達(dá)的隱式邏輯分支,是無法測試的。例如:IF(A>1)AND(B=0)THEN,“nullelse”,用例不需要考慮迫使A<1的出錯情況。判定覆蓋

DecisionCoverage判定覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即程序中的每個分支至少執(zhí)行一次

。判定覆蓋又稱為分支覆蓋(Branchcoverage)。判定覆蓋只比語句覆蓋稍強一些,實際效果表明,只是判定覆蓋,還不能保證一定能查出在判斷的條件中存在的錯誤。因此,還需要更強的邏輯覆蓋準(zhǔn)則去檢驗判斷內(nèi)部條件。

Tobecontinue…X=X/AI:A=3,B=0,X=1:sacbdII:A=2,B=1,X=1:sabed滿足判定覆蓋的測試用例一定滿足語句覆蓋:判定覆蓋比語句覆蓋強。但仍是弱的邏輯覆蓋。(A>1)

and

(B=0)(A=2)

or(X>1)X=X+12sd1aF4cTb5TeF37滿足判定覆蓋(A>1)and(B=0)為一個判定A>1為一個條件每個語句至少執(zhí)行一次!每個判定的每種可能都至少執(zhí)行一次!即每個判定的真假分支都至少執(zhí)行一次!6邊覆蓋

EdgeCoverage如果連通圖G的子圖G′是連通的,而且包含G的所有邊,則稱G′是G的邊覆蓋。通常與判定覆蓋標(biāo)準(zhǔn)相同。17Ⅰ:A=3,B=0,X=3(1-4-5-3);Ⅱ:A=2,B=1,X=1(1-2-6-7)Ⅲ:A=1,B=1,X=1(1-2-3);Ⅳ:A=2,B=0,X=4(1-4-5-6-7)243567

判定覆蓋的優(yōu)缺點優(yōu)點:判定覆蓋比語句覆蓋要多幾乎一倍的測試路徑,當(dāng)然也就具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細(xì)分每個判定就可以得到測試用例。缺點:往往大部分的判定語句是由多個邏輯條件組合而成(如,判定語句中包含AND、OR、CASE),若僅僅判斷其整個最終結(jié)果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。

判定-判定路徑覆蓋

DD-pathsDD-path:decision-decisionpath.DD-path,定義:開始于判定點-結(jié)束于判定點并且中間不包含其他的判定點。例如:1451226723與判定覆蓋等價條件覆蓋

ConditionCoverage條件覆蓋就是設(shè)計若干個測試用例,運行被測程序,使得程序中每個判斷的每個條件的可能取值至少執(zhí)行一次。條件覆蓋深入到判定中的每個條件,但可能不能滿足判定覆蓋的要求。Tobecontinue…每個語句至少執(zhí)行一次,而且判定表達(dá)式中的每個條件都要取得各種可能的結(jié)果。第一判定表達(dá)式:設(shè)條件A>1取真記為T1

假F1

條件B=0取真記為T2

假F2第二判定表達(dá)式:設(shè)條件A=2取真記為T3

假F3

條件X>1取真記為T4

假F4條件覆蓋要求這8種值都要取到(A>1)

and

(B=0)(A=2)

or(X>1)X=X/AX=X+12sd1aF4cTb5T637eF(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)Ⅱ:A=1,B=1,X=1:sabdⅠ:A=2,B=0,X=4:sacbed測試用例通過路徑滿足的條件ABX204sacbedT1,T2,T3,T4111sabdF1,F2,F3,F4同時滿足判定覆蓋(A>1)

and

(B=0)(A=2)

or(X>1)X=X/AX=X+12sd1aF4cTb5T637eF(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)Ⅳ:A=1,B=1,X=2:sabedⅢ:A=2,B=0,X=1:sacbed測試用例通過路徑滿足的條件ABX201sacbedT1,T2,T3,F4112sabedF1,F2,F3,T4不滿足判定覆蓋(A>1)

and

(B=0)(A=2)

or(X>1)X=X/AX=X+12sd1aF4cTb5T637eF

條件覆蓋的優(yōu)缺點優(yōu)點:

顯然條件覆蓋比判定覆蓋增加了對符合判定情況的測試,增加了測試路徑。缺點:

要達(dá)到條件覆蓋,需要足夠多的測試用例,但條件覆蓋并不能保證判定覆蓋。條件覆蓋只能保證每個條件至少有一次為真,而不考慮所有的判定結(jié)果。

條件覆蓋不一定包含判定覆蓋判定覆蓋也不一定包含條件覆蓋

條件覆蓋通常比判定覆蓋強,因為它使判定表達(dá)式中每個條件都取到了兩個不同的結(jié)果,判定覆蓋卻關(guān)心整個判定表達(dá)式的值。但也可能有相反的情況:雖然每個條件都取到了不同值,但判定表達(dá)式卻始終只取一個值。判定覆蓋和條件覆蓋(DC)判定-條件覆蓋既然判定條件不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,就自然會提出一種能同時滿足兩種覆蓋標(biāo)準(zhǔn)的邏輯覆蓋,這就是判定--條件覆蓋。判定-條件覆蓋就是設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷本身的所有可能判斷結(jié)果至少執(zhí)行一次。換言之,即是要求各個判斷的所有可能的條件取值組合至少執(zhí)行一次。Tobecontinue…判定-條件覆蓋測試用例I,II既滿足判定覆蓋也滿足條件覆蓋的要求。嚴(yán)格來講,合適的條件覆蓋測試用例設(shè)計應(yīng)該做到滿足判定--條件覆蓋的標(biāo)準(zhǔn):判定-條件覆蓋并不比條件覆蓋更強。判定-條件覆蓋有缺陷。表面上,它測試了所有條件的取值,但事實并非如此,往往某些條件掩蓋了另一些條件,會遺漏某些條件取值錯誤的情況。為徹底地檢查所有條件的取值,需要將判定語句中給出的復(fù)合條件表達(dá)式進(jìn)行分解,形成由多個基本判定嵌套的流程圖。這樣就可以有效地檢查所有的條件是否正確了。

判定-條件覆蓋的優(yōu)缺點優(yōu)點:判定/條件覆蓋滿足判定覆蓋準(zhǔn)則和條件覆蓋準(zhǔn)則,彌補了二者的不足。缺點:判定/條件覆蓋準(zhǔn)則的缺點是未考慮條件的組合情況。

條件組合覆蓋

(MultipleCondition)條件組合覆蓋就是設(shè)計足夠的測試用例,運行被測程序,使得每個判斷的所有可能的條件取值組合至少執(zhí)行一次。這是一種相當(dāng)強的覆蓋準(zhǔn)則,可以有效地檢查各種可能的條件取值的組合是否正確。它不但可覆蓋所有條件的可能取值的組合,還可覆蓋所有判斷的可取分支,但可能有的路徑會遺漏掉。測試還不完全。A>1,B=0A>1,B≠0A≤1,B=0A≤1,B≠0A=2,X>1A=2,X≤1A≠2,X>1A≠2,X≤1選取足夠多的測試數(shù)據(jù),使得每個判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。(A>1)

and

(B=0)(A=2)

or(X>1)X=X/AX=X+12sd1aF4cTb5T637eF(A>1)

and

(B=0)(A=2)

or(X>1)X=X/AX=X+12sd1aF4cTb5T637e(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)I.A=2,B=0,X=4II.A=2,B=1,X=1III.A=1,B=0,X=2IV.A=1,B=1,X=1I:sacbedII:sabedIII:sabedIV:sabd覆蓋路徑滿足條件組合覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。F測試用例通過路徑滿足的條件條件組合覆蓋分支ABX204sacbedT1,T2,T3,T41,54563211sabedT1,F2,T3,F42,6263102sabedF1,T2,F3,T43,7263111sabdF1,F2,F3,F44,8234組測試數(shù)據(jù)可以使8種條件組合每種至少出現(xiàn)一次顯然,滿足條件組合覆蓋的測試用例,也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋。所以,條件組合覆蓋是前述幾種覆蓋中最強的。但滿足條件組合覆蓋的不一定能使程序中的每條路徑都執(zhí)行到,如sacbd。

條件組合覆蓋的優(yōu)缺點優(yōu)點:多重條件覆蓋準(zhǔn)則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準(zhǔn)則。更改的判定/條件覆蓋要求設(shè)計足夠多的測試用例,使得判定中每個條件的所有可能結(jié)果至少出現(xiàn)一次,每個判定本身的所有可能結(jié)果也至少出現(xiàn)一次。并且每個條件都顯示能單獨影響判定結(jié)果。缺點:線性地增加了測試用例的數(shù)量。路徑覆蓋路徑測試就是設(shè)計足夠的測試用例,覆蓋程序中所有可能的路徑。這是最強的覆蓋準(zhǔn)則。但在路徑數(shù)目很大時,真正做到完全覆蓋是很困難的,必須把覆蓋路徑數(shù)目壓縮到一定限度。測試用例通過路徑滿足的條件ABX111sabdF1,F2,F3,F4112sabedF1,F2,F3,T4301sacbdT1,T2,F3,F4204sacbedT1,T2,T3,T4路徑覆蓋是相當(dāng)強的邏輯覆蓋,它保證程序中每條可能的路徑都至少執(zhí)行一次,因此更具代表性,暴露錯誤的能力也比較強。但為了做到路徑覆蓋,只需考慮每個判定式的取值,并沒有檢驗表達(dá)式中條件的各種可能組合。如果將路徑覆蓋和條件組合覆蓋結(jié)合起來,可以設(shè)計出檢錯能力更強的測試數(shù)據(jù)。路徑覆蓋

(Pathcoverage)條件3A≤1,B=0

沒有被覆蓋

路徑覆蓋的優(yōu)缺點優(yōu)點:這種測試方法可以對程序進(jìn)行徹底的測試,比前面五種的覆蓋面都廣。缺點:由于路徑覆蓋需要對所有可能的路徑進(jìn)行測試(包括循環(huán)、條件組合、分支選擇等),那么需要設(shè)計大量、復(fù)雜的測試用例,使得工作量呈指數(shù)級增長。而在有些情況下,一些執(zhí)行路徑是不可能被執(zhí)行的,如:

If

(A)B++;

If

(!A)D--;這兩個語句實際只包括了2條執(zhí)行路徑,即A為真或假時候?qū)和D的處理,真或假不可能都存在,而路徑覆蓋測試則認(rèn)為是包含了真與假的4條執(zhí)行路徑。這樣不僅降低了測試效率,而且大量的測試結(jié)果的累積,也為排錯帶來麻煩。Level-iPathLevel-0path,是從起點到終點的一條無圈路,即不包含循環(huán)、圈。Level-ipath,開始于level-(i-1)path中的點,并且可能含有圈。一般來說表示嵌套循環(huán)的語句結(jié)構(gòu)。123456713121110981415161718

圖1-18Project/Settings...,Pre-Linkstep增加

Pre-LinkCommand:copye:\cppunit\lib\cppunitd_dll.dll$(OutDir)Project/Settings...,Post-Buildstep增加

Post-buildCommand:copye:\cppunit\lib\cppunitd_dll.dll$(OutDir)Tools/Options…directions,在showdirectionsfor中選擇includefiles,添加目錄:E:\cppunit\include,E:\cppunit\include\cppunit.如圖:完成上述步驟后,點擊Build-rebuildall.輸出結(jié)果為:如圖動態(tài)技術(shù)的應(yīng)用黑盒測試黑盒測試功能測試或者數(shù)據(jù)驅(qū)動測試。它是在已知產(chǎn)品所應(yīng)具有的功能,通過測試來檢測每個功能是否都能正常使用:

1)是否有不正確或遺漏的功能

2)在接口上,是否能正確的接受輸入數(shù)據(jù),能否產(chǎn)生正確的輸出

3)訪問外部信息是否有錯

4)性能上是否滿足要求

5)界面是否錯誤、是否不美觀

6)初始化和終止錯誤

黑盒測試用例設(shè)計方法等價類劃分邊界值分析法錯誤推測法因果圖法功能圖法等價類指某個輸入域的子集合,在該集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的,具有等價性。例如:對所有實數(shù)進(jìn)行開方運算的程序的測試將實數(shù)分類:正實數(shù)、負(fù)實數(shù)、零。劃分等價類等價類的劃分有兩種不同的情況:有效等價類:是指對于程序的規(guī)格說明來說,是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。無效等價類:是指對于程序的規(guī)格說明來說,是不合理的,無意義的輸入數(shù)據(jù)構(gòu)成的集合。在設(shè)計測試用例時,要同時考慮有效等價類和無效等價類的設(shè)計。

劃分等價類的原則如果輸入條件規(guī)定了取值范圍,或值的個數(shù),則可以確立一個有效等價類和兩個無效等價類。例如,在規(guī)格說明中,對輸入條件有一句話: “……項數(shù)可以從1到999……”

則有效等價類是“1≤項數(shù)≤999”;

兩個無效等價類是“項數(shù)<1”或“項數(shù)>999”。在數(shù)軸上表示成:1999有效等價類無效等價類無效等價類

劃分等價類的原則如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時可確立一個有效等價類和一個無效等價類。例如,程序輸入條件為x=10,則有效等價類為x=10,無效等價類為x≠10.在編程語言中對變量標(biāo)識符規(guī)定為“以字母打頭的……串”。那么所有以字母打頭的構(gòu)成有效等價類,而不在此集合內(nèi)(不以字母打頭)的歸于無效等價類。

劃分等價類的原則如果輸入條件是一個布爾量,則可以確定一個有效等價類和一個無效等價類。例如:輸入條件為x=true,則有效等價類為x=true,無效等價類為x=false

劃分等價類的原則④

如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對每個輸入值分別進(jìn)行處理。這時可為每一個輸入值確立一個有效等價類,此外針對這組值確立一個無效等價類,它是所有不允許的輸入值的集合。例如,在教師上崗方案中規(guī)定對教授、副教授、講師和助教分別計算分?jǐn)?shù),做相應(yīng)的處理。因此可以確定4個有效等價類為教授、副教授、講師和助教,一個無效等價類,它是所有不符合以上身分的人員的輸入值的集合。

劃分等價類的原則如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。

例如,Pascal語言規(guī)定“一個語句必須以分號‘;’結(jié)束”。這時,可以確定一個有效等價類“以‘;’結(jié)束”,若干個無效等價類“以‘:’結(jié)束”、“以‘,’結(jié)束”、“以‘’結(jié)束”、“以LF結(jié)束”等。有效Email地址的規(guī)則:含有﹫,﹫后面是*.*,Emaild地址不帶特殊符號”,#,&,’等。有效等價類:滿足所有的條件的輸入的集合。無效等價類:任何不滿足一個或者多個條件的輸入的集合

劃分等價類的原則⑥在確定已知的等價類中各元素在程序處理中的方式不同的情況下,應(yīng)再將該等價類進(jìn)一步劃分為更小的等價類。

等價類劃分法設(shè)計測試用例形成等價類表,每一等價類規(guī)定一個唯一的編號;設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步驟,直到所有有效等價類均被測試用例所覆蓋;且分割有效等價類直至最小。設(shè)計一新的測試用例,使其盡可能多的覆蓋尚未被覆蓋的無效等價類,重復(fù)這一步驟直到所有無效等價類均被覆蓋,即分割無效等價類直至最小。某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2003年1月至2008年12月,即系統(tǒng)只能對該段期間內(nèi)的報表進(jìn)行處理,如日期不在此范圍內(nèi),則顯示輸入錯誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(shù)字字符組成,前四位代表年,后兩位代表月。如何用等價類劃分法設(shè)計測試用例,來測試程序的日期檢查功能?

等價類劃分法—實例

第一步:等價類劃分輸入條件有效等價類無效等價類報表日期的類型及長度6位數(shù)字字符(1)有非數(shù)字字符

(4)少于6個數(shù)字字符

(5)多于6個數(shù)字字符

(6)年份范圍在2003~2008之間

(2)小于2003

(7)大于2008

(8)月份范圍在1~12之間(3)小于1

(9)大于12

(10)“報表日期”輸入條件的等價類表

第二步:為有效等價類設(shè)計測試用例對表中編號為1,2,3的3個有效等價類用一個測試用例覆蓋:測試數(shù)據(jù)期望結(jié)果覆蓋范圍200306輸入有效等價類(1)(2)(3)(1)

6位數(shù)字字符(2)

年在2003~2008之間(3)

月在1~12之間

第三步:為每一個無效等價類 至少設(shè)計一個測試用例測試數(shù)據(jù)期望結(jié)果覆蓋范圍003MAY輸入無效等價類(4)20035輸入無效等價類(5)2003005輸入無效等價類(6)200105輸入無效等價類(7)200905輸入無效等價類(8)200300輸入無效等價類(9)200313輸入無效等價類(10)不能出現(xiàn)相同的測試用例本例的10個等價類至少需要8個測試用例有非數(shù)字字符

(4)少于6個數(shù)字字符

(5)多于6個數(shù)字字符

(6)小于2003

(7)大于2008

(8)月份小于1

(9)月份大于12

(10)邊界值分析法邊界值分析也是一種黑盒測試方法,是對等價類劃分方法的補充。邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。人們從長期的測試工作經(jīng)驗得知,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對各種邊界情況設(shè)計測試用例,可以查出更多的錯誤。被測試子域測試內(nèi)點測試外點測試邊界

邊界值地確定如果輸入條件規(guī)定了值的范圍,則應(yīng)取剛達(dá)到這個范圍的邊界的值,以及剛剛超越這個范圍邊界的值作為測試輸入數(shù)據(jù)。如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)、比最小個數(shù)少一、比最大個數(shù)多一的數(shù)作為測試數(shù)據(jù)。如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合,則應(yīng)選取集合的第一個元素和最后一個元素作為測試用例。如果程序中使用了一個內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測試用例。分析規(guī)格說明,找出其他可能的邊界條件。邊界點圖示閉區(qū)間半開半閉區(qū)間開區(qū)間外點外點外點外點外點外點上點上點上點上點上點上點內(nèi)點內(nèi)點內(nèi)點閉區(qū)間[50,100]的上點為50和100,外點是49和101,在域范圍內(nèi)的都是內(nèi)點; 半開半閉區(qū)間(50,100]的上點為50和100,外點是51和101,在域范圍內(nèi)的都是內(nèi)點; 開區(qū)間(50,100)的上點為50和100,外點是51和99,在域范圍內(nèi)的都是內(nèi)點上點:就是邊界上的點,不管它是開區(qū)間還是閉區(qū)間,就是說,如果該點是封閉的,那上點就在域范圍內(nèi),如果該點是開放的,那上點就在域范圍外;內(nèi)點:就是在域范圍內(nèi)的任意一個點;外點:就是離上點最近的一個點,如果邊界是封閉的,那離點就是域范圍外離上點最近的點,如果邊界是開放的,那離點就是域范圍內(nèi)離上點最近的點。

內(nèi)部邊界值地確定

(隱含)項范圍或值位(bit)0或1字節(jié)(byte)0~255千(K)1024兆(M)1048576吉(G)1073741824太(T)1099511627776

內(nèi)部邊界值地確定字符的邊界值檢查:ASCII和Unicode,其他邊界值檢驗“報表日期”邊界值--用例輸入條件測試用例說明測試數(shù)據(jù)期望結(jié)果選取理由報表日期類型及長度1個數(shù)字字符5顯示出錯僅有1個合法字符6個數(shù)字字符200305輸入有效類型及長度均有效5個數(shù)字字符20035顯示出錯比有效長度少17個數(shù)字字符2003005顯示出錯比有效長度多1有1個非數(shù)字字符2003.5顯示出錯只有1個非法字符全是非數(shù)字字符MAY---顯示出錯6個非法字符年份范圍年份為2003年200305輸入有效最小年份年份為2008年200805輸入有效最大年份年份<2003年200205顯示出錯剛好小于最小年份年份>2008年200905顯示出錯剛好大于最大年份月份范圍月份為1月200301輸入有效最小月份月份為12月200312輸入有效最大月份月份<1200300顯示出錯剛好小于最小月份月份>12200313顯示出錯剛好大于最大月份錯誤推測法基于經(jīng)驗和直覺推測程序中所有可能存在的各種錯誤,從而有針對性地設(shè)計測試用例。經(jīng)驗表明,一段程序中已經(jīng)發(fā)現(xiàn)的錯誤數(shù)往往和尚未發(fā)現(xiàn)的錯誤數(shù)成正比。因此進(jìn)一步測試要著重測試發(fā)現(xiàn)錯誤較多的程序段。

錯誤推測法測試用例設(shè)計發(fā)現(xiàn)程序經(jīng)常出現(xiàn)的錯誤的方法:單元測試中發(fā)現(xiàn)的模塊錯誤;產(chǎn)品的以前版本曾經(jīng)發(fā)現(xiàn)的錯誤;輸入數(shù)據(jù)為0或字符為空;當(dāng)軟件要求輸入時(比如在文本框中),不是沒有輸入正確的信息,而是根本沒有輸入任何內(nèi)容,單單按了Enter鍵;這種情況在產(chǎn)品說明書中常常忽視,程序員也可能經(jīng)常遺忘,但是在實際使用中卻時有發(fā)生。程序員總會習(xí)慣性的認(rèn)為用戶要么輸入信息,不管是看起來合法的或非法的信息,要不就會選擇Cancel鍵放棄輸入。因果圖法等價分類法和邊界分析法,均沒有考慮到輸入情況的組合。因果圖法:一種利用圖解法分析輸入的各種條件組合(相應(yīng)產(chǎn)生多個動作的形式),從而設(shè)計測試用例的方法。分析關(guān)聯(lián)轉(zhuǎn)換輸出輸入/輸出數(shù)據(jù)輸入/輸出數(shù)據(jù)間的關(guān)系不同組合間的關(guān)聯(lián)約束或限制條件將因果圖轉(zhuǎn)換成判定表導(dǎo)出測試用例例子第一列字符必須是A或者B,第二列字符必須是一個數(shù)字,在此情況下進(jìn)行文件的修改;但如果第一列字符不正確

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論