




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件測試用例設(shè)計1測試用例 測試用例由測試輸入數(shù)據(jù)以及與之對應(yīng)的輸出結(jié)果組成。 測試用例設(shè)計的好壞直接決定了測試的效果和結(jié)果。所以說在軟件測試活動中最關(guān)鍵的步驟就是設(shè)計有效的測試用例。 測試用例可以針對黑盒測試設(shè)計用例,也可以針對白盒測試設(shè)計用例,我們今天只講針對白盒測試的用例設(shè)計方法。 2概 念語句覆蓋:語句覆蓋就是設(shè)計若干個測試用例,運行被測試程序,使得每一條可執(zhí)行語句至少執(zhí)行一次;判定覆蓋(也稱為分支覆蓋):設(shè)計若干個測試用例,運行所測程序,使程序中每個判斷的取真分支和取假分支至少執(zhí)行一次;條件覆蓋:設(shè)計足夠多的測試用例,運行所測程序,使程序中每個判斷的每個條件的每個可能取值至少執(zhí)行一次
2、;判定-條件覆蓋:設(shè)計足夠多的測試用例,運行所測程序,使程序中每個判斷的每個條件的所有可能取值至少執(zhí)行一次,并且每個可能的判斷結(jié)果也至少執(zhí)行一次,換句話說,即是要求各個判斷的所有可能的條件取值組合至少執(zhí)行一次;條件組合測試:設(shè)計足夠多的測試用例,運行所測程序,使程序中每個判斷的所有可能的條件取值組合至少執(zhí)行一次;路徑測試:設(shè)計足夠多的測試用例,運行所測程序,要覆蓋程序中所有可能的路徑。 3下面以例子進(jìn)行分析講解: void DoWork(int x,int y,int z) int k=0,j=0; if(x3)&(z5) j=x*y+10; /語句塊2 j=j%3; /語句塊34畫出上面函數(shù)
3、的流程圖如下:5語句覆蓋:為了說明簡略,分別對各個判斷的取真、取假分支編號為b、c、d、e。為了測試語句覆蓋率只要設(shè)計一個測試用例就可以把三個執(zhí)行語句塊中的語句覆蓋了。測試用例輸入為: x=4、y=5、z=5程序執(zhí)行的路徑是:abd該測試用例雖然覆蓋了可執(zhí)行語句,但并不能檢查判斷邏輯是否有問題,例如在第一個判斷中把&錯誤的寫成了|,則上面的測試用例仍可以覆蓋所有的執(zhí)行語句??梢哉f語句覆蓋率是最弱的邏輯覆蓋準(zhǔn)則。 6分支覆蓋 對于上面的程序,如果設(shè)計兩個測試用例則可以滿足條件覆蓋的要求。 測試用例的輸入為: x=4、y=5、z=5 x=2、y=5、z=5 上面的兩個測試用例雖然能夠滿足條件覆蓋的
4、要求,但是也不能對判斷條件進(jìn)行檢查,例如把第二個條件y5錯誤的寫成y3 取真值為T1,取假值為-T1條件z5 取真值為T4,取假值為-T48則可以設(shè)計測試用例如下 測試用例 通過路徑 條件取值覆蓋分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=5 ace-T1、T2、-T3、-T4 cex=4、y=5、z=15 acdT1、-T2、T3、-T4 cd 上面的測試用例不但覆蓋了所有分支的真假兩個分支,而且覆蓋了判斷中的所有條件的可能值。 9 但是如果設(shè)計了下面的測試用例,則雖然滿足了條件覆蓋,但只覆蓋了第一個條件的取假分支和第二個條件的取真分支,不滿足分支覆蓋的
5、要求。 測試用例 通過路徑 條件取值覆蓋分支x=2、y=6、z=5 acd-T1、T2、-T3、T4 cdx=4、y=5、z=5 acdT1、-T2、T3、-T4 cd10分支條件覆蓋: 分支條件覆蓋就是設(shè)計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執(zhí)行一次,同時每個判斷的所有可能判斷結(jié)果至少執(zhí)行,即要求各個判斷的所有可能的條件取值組合至少執(zhí)行一次。 根據(jù)定義只需設(shè)計以下兩個測試用例便可以覆蓋8個條件值以及4個判斷分支。 測試用例 通過路徑 條件取值覆蓋分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=11ace-T1、-T2、-T3、-T4 ce11
6、分支條件覆蓋從表面來看,它測試了所有條件的取值,但是實際上某些條件掩蓋了另一些條件。例如對于條件表達(dá)式(x3)&(z3)為假則一般的編譯器不在判斷是否z5)來說,若x=4測試結(jié)果為真,就認(rèn)為表達(dá)式的結(jié)果為真,這時不再檢查(y5)條件了。因此,采用分支條件覆蓋,邏輯表達(dá)式中的錯誤不一定能夠查出來了。 12條件組合覆蓋: 條件組合覆蓋就是設(shè)計足夠的測試用例,運行被測試對象,使得每一個判斷的所有可能的條件取值組合至少執(zhí)行一次。 現(xiàn)在對例子中的各個判斷的條件取值組合加以標(biāo)記如下:x3,z3,z=10 記做T1 -T2, 第一個判斷的取假分支x=3,z0 記做-T1 T2, 第一個判斷的取假分支x=10
7、 記做-T1 -T2,第一個判斷的取假分支x=4,y5 記做T3 T4, 第二個判斷的取真分支x=4,y5 記做-T3 T4, 第二個判斷的取真分支x!=4,y 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 20第一步:畫出控制流圖c/c+語句中的控制語句表示含義如下:圖中的每一個圓稱為流圖的結(jié)點,代表一條或多條語句。流圖中的箭頭稱為邊或連接,代表控制流。為了說明流圖的用法,我們采用過程設(shè)計表示法,此處,流程圖用來描述程序控制結(jié)構(gòu)??蓪⒘鞒虉D映射到一個相應(yīng)的流圖(假設(shè)流程圖的菱形決
8、定框中不包含復(fù)合條件)。在流圖中,每一個圓,稱為流圖的結(jié)點,代表一個或多個語句。一個處理方框序列和一個菱形決測框可被映射為一個結(jié)點,流圖中的箭頭,稱為邊或連接,代表控制流,類似于流程圖中的箭頭。一條邊必須終止于一個結(jié)點,即使該結(jié)點并不代表任何語句(例如:參見if-else-then結(jié)構(gòu)的符號)。由邊和結(jié)點限定的范圍稱為區(qū)域。計算區(qū)域時應(yīng)包括圖外部的范圍。任何過程設(shè)計都要被翻譯成控制流圖。 21畫出其程序流程圖和對應(yīng)的控制流圖如下:22 程序設(shè)計中遇到復(fù)合條件時,生成的流圖變得更為復(fù)雜。當(dāng)條件語句中用到一個或多個布爾運算符(邏輯OR,AND,NAND,NOR)時,就出現(xiàn)了復(fù)合條件。下圖為語句IF
9、 a OR b中的每一個a和b創(chuàng)建了一個獨立的結(jié)點,包含條件的結(jié)點被稱為判定結(jié)點,從每一個判定結(jié)點發(fā)出兩條或多條邊。例如: 1 if a or b 2 x 3 else 4 y 對應(yīng)的邏輯為:23第二步:計算圈復(fù)雜度 圈復(fù)雜度是一種為程序邏輯復(fù)雜性提供定量測度的軟件度量,將該度量用于計算程序的基本的獨立路徑數(shù)目,為確保所有語句至少執(zhí)行一次的測試數(shù)量的上界。獨立路徑必須包含一條在定義之前不曾用到的邊。 有以下三種方法計算圈復(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),定
10、義為V(G)=P+1,P是流圖G中判定結(jié)點的數(shù)量。 24對應(yīng)上面圖中的圈復(fù)雜度,計算如下:流圖中有四個區(qū)域;V(G)=11條邊-9結(jié)點+2=4;V(G)=3個判定結(jié)點+1=4。25第三步:導(dǎo)出測試用例 根據(jù)上面的計算方法,可得出四個獨立的路徑:路徑1:4-14路徑2:4-6-7-14路徑3:4-6-8-10-13-4-14路徑4:4-6-8-11-13-4-14根據(jù)上面的獨立路徑,去設(shè)計輸入數(shù)據(jù),使程序分別執(zhí)行到上面四條路徑。26第四步:準(zhǔn)備測試用例為了確?;韭窂郊械拿恳粭l路徑的執(zhí)行,根據(jù)判斷結(jié)點給出的條件,選擇適當(dāng)?shù)臄?shù)據(jù)以保證某一條路徑可以被測試到,滿足上面例子基本路徑集的測試用例是:路
11、徑1:4-14輸入數(shù)據(jù):iRecordNum0,或者取iRecordNum0的某一個值預(yù)期結(jié)果:x0路徑2:4-6-7-14輸入數(shù)據(jù):iRecordNum1,iType0預(yù)期結(jié)果:x2路徑3:4-6-8-10-13-4-14輸入數(shù)據(jù):iRecordNum1,iType1預(yù)期結(jié)果:x10路徑4:4-6-8-11-13-4-14輸入數(shù)據(jù):iRecordNum1,iType2預(yù)期結(jié)果:x2027工具方法:圖形矩陣導(dǎo)出控制流圖和決定基本測試路徑的過程均需要機械化,為了開發(fā)輔助基本路徑測試的軟件工具,稱為圖形矩陣(graph matrix)的數(shù)據(jù)結(jié)構(gòu)很有用。 利用圖形矩陣可以實現(xiàn)自動地確定一個基本路徑集
12、。一個圖形矩陣是一個方陣,其行/列數(shù)控制流圖中的結(jié)點數(shù),每行和每列依次對應(yīng)到一個被標(biāo)識的結(jié)點,矩陣元素對應(yīng)到結(jié)點間的連接(即邊)。在圖中,控制流圖的每一個結(jié)點都用數(shù)字加以標(biāo)識,每一條邊都用字母加以標(biāo)識。如果在控制流圖中第i個結(jié)點到第j個結(jié)點有一個名為x的邊相連接,則在對應(yīng)的圖形矩陣中第i行/第j列有一個非空的元素x。 28 對每個矩陣項加入連接權(quán)值(link weight),圖矩陣就可以用于在測試中評估程序的控制結(jié)構(gòu),連接權(quán)值為控制流提供了另外的信息。最簡單情況下,連接權(quán)值是 1(存在連接)或0(不存在連接),但是,連接權(quán)值可以賦予更有趣的屬性:執(zhí)行連接(邊)的概率。穿越連接的處理時間。穿越連
13、接時所需的內(nèi)存。穿越連接時所需的資源。29根據(jù)上面的方法對例子畫出圖形矩陣如下: 連接權(quán)為“1”表示存在一個連接,在圖中如果一行有兩個或更多的元素“1”,則這行所代表的結(jié)點一定是一個判定結(jié)點,通過連接矩陣中有兩個以上(包括兩個)元素為“1”的個數(shù),就可以得到確定該圖圈復(fù)雜度的另一種算法。 30小結(jié):從上面的概念和例子可以看出要進(jìn)行上面的白盒測試是需要投入巨大的測試資源,包括人力、物力和時間等。但是為什么還要進(jìn)行白盒測試呢?原因如下:邏輯錯誤和不正確假設(shè)與一條程序路徑被運行的可能性成反比。當(dāng)我們設(shè)計和實現(xiàn)主流之外的功能、條件或控制時,錯誤往往開始出現(xiàn)在我們的工作中。日常處理往往被很好地了解(和很
14、好地細(xì)查),而“特殊情況”的處理則難于發(fā)現(xiàn)。我們經(jīng)常相信某邏輯路徑不可能被執(zhí)行,而事實上,它可能在正常的基礎(chǔ)上被執(zhí)行。程序的邏輯流有時是違反直覺的,這意味著我們關(guān)于控制流和數(shù)據(jù)流的一些無意識的假設(shè)可能導(dǎo)致設(shè)計錯誤,只有路徑測試才能發(fā)現(xiàn)這些錯誤。印刷上的錯誤是隨機的。當(dāng)一個程序被翻譯為程序設(shè)計語言源代碼時,有可能產(chǎn)生某些打印錯誤,很多將被語法檢查機制發(fā)現(xiàn),但是,其他的會在測試開始時才會被發(fā)現(xiàn)。打印錯誤出現(xiàn)在主流上和不明顯的邏輯路徑上的可能性是一樣的。 上述任何一條原因都是該進(jìn)行白盒測試的論據(jù),黑盒測試,不管它多么全面,都可能忽略前面提到的某些類型的錯誤。正如Beizer所說:“錯誤潛伏在角落里,
15、聚集在邊界上”。白盒測試更可能發(fā)現(xiàn)它們。 31前面所述的基本路徑測試技術(shù)是控制結(jié)構(gòu)測試技術(shù)之一。盡管基本路徑測試簡單高效,但是,其本身并不充分。下面討論控制結(jié)構(gòu)測試的其他變種,這些測試覆蓋并提高了白盒測試的質(zhì)量。包括:條件測試數(shù)據(jù)流測試循環(huán)測試。321、條件測試 條件測試是檢查程序模塊中所包含邏輯條件的測試用例設(shè)計方法。一個簡單條件是一個布爾變量或一個可能帶有NOT(“!”)操作符的關(guān)系表達(dá)式。關(guān)系表達(dá)式的形式如:E1關(guān)系操作符E2 其中E1和E2是算術(shù)表達(dá)式,而關(guān)系操作符是下列之一:“”、“”、“=”、“”(“!=”)、“”、或“”。復(fù)雜條件由簡單條件、布爾操作符和括弧組成。我們假定可用于復(fù)
16、雜條件的布爾算子包括OR“|”,AND“”和NOT“!”,不含關(guān)系表達(dá)式的條件稱為布爾表達(dá)式。所以條件的成分類型包括布爾操作符、布爾變量、布爾括弧(括住簡單或復(fù)雜條件)、關(guān)系操作符或算術(shù)表達(dá)式。33 如果條件不正確,則至少有一個條件成分不正確,這樣,條件的錯誤類型如下:布爾操作符錯誤(遺漏布爾操作符,布爾操作符多余或布爾操作符不正確);布爾變量錯誤;布爾括弧錯誤;關(guān)系操作符錯誤;算術(shù)表達(dá)式錯誤。 條件測試方法注重于測試程序中的條件。條件測試策略主要有兩個優(yōu)點:首先,測度條件測試的覆蓋率是簡單的;其次,程序的條件測試覆蓋率為產(chǎn)生另外的程序測試提供了指導(dǎo)。34條件測試的目的 條件測試是測試程序條件
17、錯誤和程序的其他錯誤。如果程序的測試集能夠有效地檢測程序中的條件錯誤,則該測試集可能也會有效地檢測程序中的其他錯誤。此外,如果測試策略對檢測條件錯誤有效,則它也可能有效地檢測程序錯誤。35條件測試策略 分支測試可能是最簡單的條件測試策略,對于復(fù)合條件C,C的真分支和假分支以及C中的每個簡單條件都需要至少執(zhí)行一次。域測試(Domain testing)要求從有理表達(dá)式中導(dǎo)出三個或四個測試,有理表達(dá)式的形式如:E1關(guān)系操作符E2需要三個測試分別用于計算E1的值是大于、等于或小于E2的值。如果關(guān)系操作符錯誤,而E1和E2正確,則這三個測試能夠發(fā)現(xiàn)關(guān)系算子的錯誤。為了發(fā)現(xiàn)E1和E2的錯誤,計算E1小于
18、或大于E2的測試應(yīng)使兩個值間的差別盡可能小。有n個變量的布爾表達(dá)式需要2n個可能的測試(n0)。這種策略可以發(fā)現(xiàn)布爾操作符、變量和括弧的錯誤,但是只有在n很小時實用。36 也可以派生出敏感布爾表達(dá)式錯誤的測試。對于有n個布爾變量(n0)的單布爾表達(dá)式(每個布爾變量只出現(xiàn)一次),可以很容易地產(chǎn)生測試數(shù)小于2n的測試集,該測試集能夠發(fā)現(xiàn)多個布爾操作符錯誤和其他錯誤。 建議在上述技術(shù)之上建立條件測試策略,稱為BRO(branch and relational)測試集。測試保證能發(fā)現(xiàn)布爾變量和關(guān)系操作符只出現(xiàn)一次而且沒有公共變量的條件中的分支和條件操作符錯誤。BRO策略利用條件C的條件約束。有n個簡單
19、條件的條件C的條件約束定義為(D1,D2,Dn),其中Di(0in)表示條件C中第i個簡單條件的輸出約束。如果C的執(zhí)行過程中C的每個簡單條件的輸出都滿足D中對應(yīng)的約束,則稱條件C的條件約束D由C的執(zhí)行所覆蓋。對于布爾變量B,B輸出的約束說明B必須是真(T)或假(F)。類似地,對于關(guān)系表達(dá)式,符號、=、用于指定表達(dá)式輸出的約束。 37作為簡單的例子,考慮條件C1B1B2其中B1和B2是布爾變量。C1的條件約束式如(D1,D2),其中D1和D2是“T”或“F”,值(T,F(xiàn))是C1的條件約束,由使B1為真、B2為假的測試所覆蓋。BRO測試策略要求約束集(T,T),(F,T),(T,F(xiàn))由C1的執(zhí)行所
20、覆蓋,如果C1由于布爾算子的錯誤而不正確,至少有一個約束強制C1失敗。38作為第二個例子,考慮C2B1(E3=E4)其中B1是布爾表達(dá)式,而E3和E4是算術(shù)表達(dá)式。C2的條件約束形式如(D1,D2),其中D1是“T”或“F”,D2是,=或。除了C2的第二個簡單條件是關(guān)系表達(dá)式以外,C2和C1相同,所以可以修改C1的約束集(T,T),(F,T),(T,F(xiàn)),得到C2的約束集,注意(E3=E4)的“T”意味著“=”,而(E3=E4)的“F”意味著“”或“”。分別用(T,=)和(F,=)替換(T,T)和(F,T),并用(T,)和(T,)替換(T,F(xiàn)),就得到C2的約束集(T,=),(F,=),(T,
21、),(T,)。上述條件約束集的覆蓋率將保證檢測C2的布爾和關(guān)系算子的錯誤。39作為第三個例子,考慮C3(E1E2)(E3=E4)其中E1、E2、E3和E4是算術(shù)表達(dá)式。C3的條件約束形式如(D1,D2),其中D1和D2是、=或。除了C3的第一個簡單條件是關(guān)系表達(dá)式以外,C3和C2相同,所以可以修改C2的約束集得到C3的約束集,結(jié)果為(,=),(=,=),(,=),(,),(,)上述條件約束集能夠保證檢測C3的關(guān)系操作符的錯誤。402、 數(shù)據(jù)流測試數(shù)據(jù)流測試方法按照程序中的變量定義和使用的位置來選擇程序的測試路徑。為了說明數(shù)據(jù)流測試方法,假設(shè)程序的每條語句都賦予了獨特的語句號,而且每個函數(shù)都不改
22、變其參數(shù)和全局變量。對于語句號為S的語句,DEF(S)=X語句S包含X的定義USE(S)=X語句S包含X的使用如果語句S是if或循環(huán)語句,它的DEF集為空,而USE集取決于S的條件。如果存在從S到S的路徑,并且該路徑不含X的其他定義,則稱變量X在語句S處的定義在語句S仍有效。 41變量X的定義使用鏈(或稱DU鏈)形式如X,S,S,其中S和S是語句號,X在DEF(S)和USE(S)中,而且語句S定義的X在語句S有效。一種簡單的數(shù)據(jù)流測試策略是要求覆蓋每個DU鏈至少一次。我們將這種策略稱為DU測試策略。已經(jīng)證明DU測試并不能保證覆蓋程序的所有分支,但是,DU測試不覆蓋某個分支僅僅在于如下之類的情況
23、:if-then-else中的then沒有定義變量,而且不存在else部分。這種情況下,if語句的else分支并不需要由DU測試覆蓋。數(shù)據(jù)流測試策略可用于為包含嵌套if和循環(huán)語句的程序選擇測試路徑,為此,考慮使用DU測試為如下的PDL選擇測試路徑:42proc xB1;do while C1if C2thenif C4 then B4; else B5;endif;elseif C3 then B2; else B3;endif;endif;enddo;B6;end proc;43為了用DU測試選擇控制流圖的測試路徑,需要知道PDL條件或塊中的變量定義和使用。假設(shè)變量X定義在塊B1,B2,B3
24、,B4和B5的最后一條語句之中,并在塊B2,B3,B4,B5和B6的第一條語句中使用。DU測試策略要求執(zhí)行從每個B(0i5)到Bj(0j6)的最短路徑(這樣的測試也覆蓋了條件C1,C2,C3和C4中的變量使用)。盡管有25條X的DU鏈,只需5條路徑覆蓋這些DU鏈。原因在于可用5條從Bi(0i5)到B6的路徑覆蓋X的鏈,而這5條鏈包含循環(huán)的迭代就可以覆蓋其他的DU鏈。注意如果要用分支測試策略為上述的PDL選擇測試路徑,并不需要另外的信息。為了選擇BRO測試的路徑,只需知道每個條件和塊的結(jié)構(gòu)。(選擇程序的路徑之后,需要決定該路徑是否實用于該程序,即是否存在執(zhí)行該路徑的至少一個輸入)。由于變量的定義
25、和使用,程序中的語句都彼此相關(guān),所以數(shù)據(jù)流測試方法能夠有效地發(fā)現(xiàn)錯誤,但是,數(shù)據(jù)流測試的覆蓋率測度和路徑選擇比條件測試更為困難。44 3、循環(huán)測試 循環(huán)測試是一種白盒測試技術(shù),注重于循環(huán)構(gòu)造的有效性。有四種循環(huán):簡單循環(huán),串接循環(huán),嵌套循環(huán)和不規(guī)則循環(huán)。簡單循環(huán)嵌套循環(huán)串接循環(huán)不規(guī)則循環(huán)45簡單循環(huán): 下列測試集用于簡單循環(huán),其中n是允許通過循環(huán)的最大次數(shù)。整個跳過循環(huán);只有一次通過循環(huán);兩次通過循環(huán);m次通過循環(huán),其中mn;n-1,n,n+1次通過循環(huán)。46嵌套循環(huán):如果將簡單循環(huán)的測試方法用于嵌套循環(huán),可能的測試數(shù)就會隨嵌套層數(shù)成幾何級增加,這會導(dǎo)致不實際的測試數(shù)目,下面是一種減少測試數(shù)的
26、方法:從最內(nèi)層循環(huán)開始,將其它循環(huán)設(shè)置為最小值;對最內(nèi)層循環(huán)使用簡單循環(huán),而使外層循環(huán)的跌代參數(shù)(即循環(huán)計數(shù))最小,并為范圍外或排除的值增加其它測試;由內(nèi)向外構(gòu)造下以個循環(huán)的測試,但其它的外層循環(huán)為最小值,并使其它的嵌套循環(huán)為“典型”值;繼續(xù)直到測試所有的循環(huán)。47 串接循環(huán):如果串接循環(huán)的循環(huán)都彼此獨立,可是使用嵌套的策略測試。但是如果兩個循環(huán)串接起來,而第一個循環(huán)是第二個循環(huán)的初始值,則這兩個循環(huán)并不是獨立的。如果循環(huán)不獨立,則推薦使用的嵌套循環(huán)的方法進(jìn)行測試。不規(guī)則循環(huán): 不能測試,盡量重新設(shè)計給結(jié)構(gòu)化的程序結(jié)構(gòu)后再進(jìn)行測試。48面向?qū)ο蟮陌缀袦y試對OO軟件的類測試相當(dāng)于傳統(tǒng)軟件的單元測
27、試。和傳統(tǒng)軟件的單元測試不同,他往往關(guān)注模塊的算法細(xì)節(jié)和模塊接口間流動的數(shù)據(jù),OO軟件的類測試是由封裝在類中的操作和類的狀態(tài)行為所驅(qū)動的。OO軟件測試的特點:因為屬性和操作是被封裝的,對類之外操作的測試通常是徒勞的。封裝使對對象的狀態(tài)快照難于獲得。繼承也給測試帶來了難度,即使是徹底復(fù)用的,對每個新的使用語境也需要重新測試。多重繼承更增加了需要測試的語境的數(shù)量,使測試進(jìn)一步復(fù)雜化。如果從超類導(dǎo)出的測試用例被用于相同的問題域,有可能對超類導(dǎo)出的測試用例集可以用于子類的測試,然而,如果子類被用于完全不同的語境,則超類的測試用例將沒有多大用途,必須設(shè)計新的測試用例集。49類測試一般有兩種主要的方式: 功能性測試和結(jié)構(gòu)性測試,即對應(yīng)于傳統(tǒng)結(jié)構(gòu)化軟件的黑盒測試和白盒測試。功能性測試以類的規(guī)格說明為基礎(chǔ),它主要檢查類是否符合其規(guī)格說明的要求。例如,對于Stack類,即檢查它的操作是否滿足LIFO規(guī)則;結(jié)構(gòu)性測試則從程序出發(fā),它需要考慮其中的代碼是否正確,同樣是Stack類,就要檢查其中代碼是否動作正確且至少執(zhí)行過一次。50結(jié)構(gòu)性測試方法(白盒測試) 結(jié)構(gòu)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)財務(wù)合同范本
- 深圳市房產(chǎn)轉(zhuǎn)讓合同范本
- 城市土地開發(fā)和商品房借款合同書
- 2025探討分期付款買賣合同中的期待權(quán)
- 反恐普法教育主題班會
- 陪診師考試友善互動試題及答案
- 馬工學(xué)的初心與使命探討試題及答案
- 個人施工合作合同標(biāo)準(zhǔn)文本
- 2025年度毛絨玩具采購合同
- 2025聘請安保服務(wù)合同
- 路燈安全培訓(xùn)
- DLDS-1214F電氣裝置技術(shù)方案(世賽KNX版)
- 電力行業(yè)電氣工程師求職簡歷
- (完整)3.1輔助角公式及應(yīng)用的公開課比賽課件
- 遼寧省地方標(biāo)準(zhǔn)編制說明
- 2020新版?zhèn)€人征信報告模板
- 運動性猝死-PPT課件
- 裝飾裝修工程質(zhì)量管理體系與措施
- 施工方案(樓梯間墻面翻新)
- 《胃癌患者的護(hù)理》ppt課件
- 學(xué)會感恩主題班會PPT課件.pptx
評論
0/150
提交評論