




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上白盒測(cè)試和黑盒測(cè)試目錄專心-專注-專業(yè)1. 軟件測(cè)試基本分類一般地,我們將軟件測(cè)試活動(dòng)分為以下幾類:黑盒測(cè)試、白盒測(cè)試、靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試、手動(dòng)測(cè)試、自動(dòng)測(cè)試等等。黑盒測(cè)試黑盒測(cè)試又叫功能測(cè)試、數(shù)據(jù)驅(qū)動(dòng)測(cè)試或給予需求規(guī)格說明書的功能測(cè)試。這種測(cè)試注重于測(cè)試軟件的功能性需求。采用這種測(cè)試方法,測(cè)試工程師把測(cè)試對(duì)象看作一個(gè)黑盒子,不需要考慮程序內(nèi)部的邏輯結(jié)構(gòu)和特性,只需要依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。黑盒測(cè)試能更好更真實(shí)的從用戶角度來考察被測(cè)系統(tǒng)的功能性需求實(shí)現(xiàn)情況。在軟件測(cè)試的各個(gè)階段,如單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試及確認(rèn)測(cè)試等階段都發(fā)揮
2、著重要作用。尤其在系統(tǒng)測(cè)試和確認(rèn)測(cè)試中,其作用是其他測(cè)試方法無法取代的。白盒測(cè)試白盒測(cè)試又稱結(jié)構(gòu)測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于程序代碼內(nèi)部結(jié)構(gòu)的測(cè)試。此時(shí),需要深入考察程序代碼的內(nèi)部結(jié)構(gòu)、邏輯設(shè)計(jì)等等。白盒測(cè)試需要測(cè)試工程師具備很深的軟件開發(fā)工地,精通相應(yīng)的開發(fā)語言,一般的軟件測(cè)試工程師難以勝任該工作。靜態(tài)測(cè)試靜態(tài)測(cè)試,顧名思義,就是靜態(tài)的、不執(zhí)行被測(cè)對(duì)象程序代碼而尋找缺陷的過程。通俗地講,靜態(tài)測(cè)試就是用眼睛看,閱讀程序代碼,文檔資料等,與需求規(guī)格說明書中的需求進(jìn)行比較,找出程序代碼中設(shè)計(jì)的不合理,以及文檔資料中的錯(cuò)誤。在進(jìn)行代碼的靜態(tài)測(cè)試時(shí),可以采用一些代碼走查的工具,如 QA C+、C+ Tes
3、t等。動(dòng)態(tài)測(cè)試動(dòng)態(tài)測(cè)試即為實(shí)際的執(zhí)行被測(cè)對(duì)象的程序代碼,輸入事先設(shè)計(jì)好的測(cè)試用例,檢查程序代碼運(yùn)行的結(jié)果與測(cè)試用例中設(shè)計(jì)的預(yù)期結(jié)果之間是否差異,判定實(shí)際結(jié)果與預(yù)期結(jié)果是否一致,從而檢驗(yàn)程序的正確性、可靠性和有效性,并分析系統(tǒng)運(yùn)行效率和健壯性等性能狀況。動(dòng)態(tài)測(cè)試由四部分組成:設(shè)計(jì)測(cè)試用例、執(zhí)行測(cè)試用例、分析比較輸出結(jié)果、輸出測(cè)試報(bào)告。動(dòng)態(tài)測(cè)試結(jié)合使用白盒測(cè)試和黑盒測(cè)試。2. 測(cè)試方法對(duì)于白盒測(cè)試,常用的測(cè)試方法有:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、多重條件覆蓋等等。黑盒測(cè)試較為知名的測(cè)試方法有:等價(jià)類劃分、邊界值分析、因果圖分析、錯(cuò)誤猜測(cè)等。本章將對(duì)這些測(cè)試方法進(jìn)行一些簡單的介紹。2
4、.1 白盒測(cè)試白盒測(cè)試關(guān)注的是測(cè)試用例執(zhí)行的程度或覆蓋程序邏輯結(jié)構(gòu) (源代碼) 的程度。如完全的白盒測(cè)試是將程序中每條路徑都執(zhí)行到,然而對(duì)一個(gè)帶有循環(huán)的程序來說,完全的路徑測(cè)試并不切合實(shí)際。 圖 21被測(cè)試的小程序2.1.1 語句覆蓋如果完全從路徑測(cè)試中跳出來看,那么有價(jià)值的目標(biāo)似乎就是將程序中的每條語句至少執(zhí)行一次。遺憾的是,這恰是合理的白盒測(cè)試中較弱的準(zhǔn)則。Error! Reference source not found.描述了這種思想。假設(shè)Error! Reference source not found. 代表了一個(gè)將要進(jìn)行測(cè)試的小程序,其等價(jià)的代碼段如下: Public void
5、foo(int a, int b, int x) if (a > 1 && b = 0) x = x / a; if (a = 2 | x > 1) X = x + 1; 通過編寫單個(gè)的測(cè)試用例遍歷程序路徑 ace,可以執(zhí)行到每一條語句。也就是說,通過在點(diǎn) a 處設(shè)置 A=2,B=0,X=3,每條語句將被執(zhí)行一次(實(shí)際上,X 可被賦任何值) 。 遺憾的是,這個(gè)準(zhǔn)則相當(dāng)不足。舉例來說,也許第一個(gè)判斷應(yīng)是“或” ,而不是 “與” 。 如果這樣, 這個(gè)錯(cuò)誤就會(huì)發(fā)現(xiàn)不到。 另外, 可能第二個(gè)判斷應(yīng)該寫成 “X>0” ,這個(gè)錯(cuò)誤也不會(huì)被發(fā)現(xiàn)。還有,程序中存在一條 X 未
6、發(fā)生改變的路徑(路徑 abd) ,如果這是個(gè)錯(cuò)誤,它也不會(huì)被發(fā)現(xiàn)。換句話說,語句覆蓋這條準(zhǔn)則有很大的不足,以至于它通常沒有什么用處。 2.1.2 判定(分支)覆蓋判定覆蓋或分支覆蓋是較強(qiáng)一些的邏輯覆蓋準(zhǔn)則。該準(zhǔn)則要求必須編寫足夠的測(cè)試用例,使得每一個(gè)判斷都至少有一個(gè)為“真”和為“假”的輸出結(jié)果。換句話說,也就是每條分支路徑都必須至少遍歷一次。分支或判定語句的例子包括switch,do-while 和 if-else 語句。判定覆蓋通??梢詽M足語句覆蓋。由于每條語句都是在要么從分支語句開始,要么從程序入口點(diǎn)開始的某條子路徑上,如果每條分支路徑都被執(zhí)行到了,那么每條語句也應(yīng)該被執(zhí)行到了。但是,仍然
7、有些例外情況: 程序中不存在判斷。 程序或子程序/方法有著多重入口點(diǎn)。只有從程序的特定入口點(diǎn)進(jìn)入時(shí),某條特定的語句才能執(zhí)行到。 我們的探討僅針對(duì)有兩個(gè)選擇的判斷或分支,當(dāng)程序中包含有多重選擇的判斷時(shí),判定/分支覆蓋準(zhǔn)則的定義就必須有所改變。典型的例子有包含 select(case)語句的 Java 程序, 包含算術(shù) (三重選擇) IF 語句、 計(jì)算或算術(shù) GOTO 語句的 FORTRAN 程序,以及包含可選 GOTO 語句或 GO-TO-DEFENDING-ON 語句的 COBOL 程序。對(duì)于這些程序,判定/分支覆蓋準(zhǔn)則將所有判斷的每個(gè)可能結(jié)果都至少執(zhí)行一次,以及將程序或子程序的每個(gè)入口點(diǎn)都至
8、少執(zhí)行一次。 在Error! Reference source not found. 中,兩個(gè)涵蓋了路徑 ace 和 abd,或涵蓋了路徑 acd 和 abe 的測(cè)試用例就可以滿足判定覆蓋的要求。如果我們選擇了后一種情況,兩個(gè)測(cè)試用例的輸入是 A=3,B=0,X=3 和 A=2,B=1,X=1。 判定覆蓋是一種比語句覆蓋更強(qiáng)的準(zhǔn)則,但仍然相當(dāng)不足。舉例來說,我們僅有 50%的可能性遍歷到那條 X 未發(fā)生變化的路徑 (也即, 僅當(dāng)我們選擇前一種情況) 。如果第二個(gè)判斷存在錯(cuò)誤(例如把 X>1 寫成了 X<1,那么前面例子中的兩個(gè)測(cè)試用例都無法找出這個(gè)錯(cuò)誤。2.1.3 條件覆蓋比判定覆
9、蓋更強(qiáng)一些的準(zhǔn)則是條件覆蓋。在條件覆蓋情況下,要編寫足夠的測(cè)試用例以確保將一個(gè)判斷中的每個(gè)條件的所有可能的結(jié)果至少執(zhí)行一次。因?yàn)?,就如同判定覆蓋的情況一樣,這并不總是能讓每條語句都執(zhí)行到,因此作為對(duì)這條準(zhǔn)則的補(bǔ)充就是對(duì)程序或子程序。舉例來說,分支語句 DO K=0 to 50 WHILE (J+K<QUEST) 包含兩種情況:K 是否小于或等干 50?以及 J+K 是否小于 QUEST? 因此,需要針對(duì)K <= 50、 K >50 (達(dá)到循環(huán)的最后一次迭代) 以及J+K<QUEST、 J+K>=QUEST的情況設(shè)計(jì)測(cè)試用例。 Error! Reference so
10、urce not found. 有四個(gè)條件:A>1、B=0、A=2 以及 X>1。因此需要足夠的測(cè)試用例,使得在點(diǎn) a 處出現(xiàn) A=2、A<2、X>1 及 X<=1 的情況。有足夠數(shù)量的測(cè)試用例滿足此準(zhǔn)則,用例及其遍歷的路徑如下所示: 1A=2,B=0,X=4 ace 2A=1,B=1,X=1 adb 請(qǐng)注意,盡管在本例中生成的測(cè)試用例數(shù)量是一樣的,但條件覆蓋通常還是要比判定覆蓋更強(qiáng)一些。因?yàn)?,條件覆蓋可能(但并不總是這樣)會(huì)使判斷中的各個(gè)條件都取到兩個(gè)結(jié)果( “真”和“假” ) ,而判定覆蓋卻做不到這一點(diǎn)。舉例來說,在相同的分支語句 DO K=0 to 50 W
11、HILE (J+K<QUEST)中,存在一個(gè)兩重分支(執(zhí)行循環(huán)體,或者跳過循環(huán)體) 。如果使用的是判定覆蓋測(cè)試,將循環(huán)從 K = 0 執(zhí)行到 K = 51 即可滿足該準(zhǔn)則,但從未考慮到 WHILE子句為假的情況。如果使用的是條件覆蓋準(zhǔn)則,就需要設(shè)計(jì)一個(gè)測(cè)試用例為J+K<QUEST 產(chǎn)生一個(gè)為假的結(jié)果。 雖然條件覆蓋準(zhǔn)則乍看上去似乎滿足判定覆蓋準(zhǔn)則,但并不總是如此。如果正在測(cè)試判斷條件 IF (A&B),條件覆蓋準(zhǔn)則將要求編寫兩個(gè)測(cè)試用例:A 為真,B為假;A 為假,B 為真。但是這并不能使 IF 語句中的 THEN 被執(zhí)行到。對(duì)Error! Reference source
12、 not found. 所示例子所進(jìn)行的條件覆蓋測(cè)試涵蓋了全部判斷結(jié)果,但這僅僅是偶然情況。舉例來說,兩個(gè)可選的測(cè)試用例: 1 A=2,B=0,X=32 A=1,B=1,X=1 涵蓋了全部的條件結(jié)果,卻僅涵蓋了四個(gè)判斷結(jié)果中的兩個(gè)(這兩個(gè)測(cè)試用例都涵蓋到了路徑 abe,因而不會(huì)執(zhí)行第一個(gè)判斷結(jié)果為真的路徑,以及第二個(gè)判斷結(jié)果為假的路徑) 。2.1.4 判定/條件覆蓋 顯然,解決上面左右為難局面的辦法就是所謂的判定/條件覆蓋準(zhǔn)則。這種準(zhǔn)則要求設(shè)計(jì)出充足的測(cè)試用例。將一個(gè)判斷中的每個(gè)條件的所有可能的結(jié)果至少執(zhí)行一次,將每個(gè)判斷的每個(gè)條件的所有可能的結(jié)果至少執(zhí)行一次,將每個(gè)判斷的所有可能的結(jié)果至少執(zhí)
13、行一次,將每個(gè)入口點(diǎn)都至少調(diào)用一次。 判定/條件覆蓋準(zhǔn)則的一個(gè)缺點(diǎn)是盡管看上去所有條件的所有結(jié)果似乎都執(zhí)行到了,但由于有些特定的條件會(huì)屏蔽掉其他的條件,常常并不能全部都執(zhí)行到。請(qǐng)參見Error! Reference source not found.來觀察此種情況。Error! Reference source not found. 中的流程圖描述的是編譯器將Error! Reference source not found.中的程序編譯生成機(jī)器代碼的過程。源程序中的多重條件判斷被分解成單個(gè)的判斷和分支,因?yàn)榇蠖鄶?shù)的機(jī)器都沒有能執(zhí)行多重條件判斷的單獨(dú)指令。那么,更為完全的測(cè)試覆蓋似乎是將每個(gè)基
14、本判斷的全部可能的結(jié)果都執(zhí)行到,而前兩個(gè)判定覆蓋的測(cè)試用例都做不到這點(diǎn), 它們未能執(zhí)行到判斷 I 中的結(jié)果為 “假” 的分支, 以及判斷 K 中結(jié)果為“真”的分支。圖 22 Error! Reference source not found.中程序的機(jī)器碼 如Error! Reference source not found.所示,其中的原因是“與”和“或”表達(dá)式中某些條件的結(jié)果可能會(huì)屏蔽掉或阻礙其他條件,的判斷。舉例來說,如果“與”表達(dá)式中有個(gè)條件為“假” ,那么就無須計(jì)算該表達(dá)式中的后續(xù)條件。 同樣, 如果 “或” 表達(dá)式中有個(gè)條件為 “真” ,那么后續(xù)條件也無須計(jì)算。因此,條件覆蓋或判定
15、/條件覆蓋誰都不一定會(huì)發(fā)現(xiàn)邏輯表達(dá)式中的錯(cuò)誤。 2.1.5 多重條件覆蓋所謂的多重條件覆蓋準(zhǔn)則能夠部分解決這個(gè)問題。該準(zhǔn)則要求編寫足夠多的測(cè)試用例,將每個(gè)判定中的所有可能的條件結(jié)果的組合,以及所有的入口點(diǎn)都至少執(zhí)行一次。舉例來說,考慮下面的偽代碼程序; NOTFOUND=TRUE; DO I=1 TO TABSIZE WHILE (NOTFOUND); /*SEARCH TABLE*/ searching logic; END 要測(cè)試四種情況: 1. I<=TABSIZE,并且 NOTFOUND 為真; 2. I<=TABSIZE,并且 NOTFOUND 為假(在到達(dá)表格尾部前查詢
16、指定條目) ; 3. I>TABSIZE,并且 NOTFOUND 為真(查詢了整個(gè)表格,未找到指定條目) ; 4. I>TABSIZE,并且 NOTFOUND 為假(指定條目位于表格的最后位置) 。 很容易發(fā)現(xiàn),滿足多重條件覆蓋準(zhǔn)則的測(cè)試用例集,同樣滿足判定覆蓋準(zhǔn)則、條件覆蓋準(zhǔn)則以及判定/條件覆蓋準(zhǔn)則。 再次回到Error! Reference source not found.中,測(cè)試用例必須覆蓋以下 8 種組合: 1. A > 1, B = 0 2. A > 1, B != 0 3. A <= 1,B = 0 4. A <= 1, B != 05. A
17、= 2, X > 1 6. A = 2, X <= 1 7. A != 2, X > 1 8. A != 2, X <= 1注意,第 5 至8 組合表示了第二個(gè) if 語句的值。由于 X可能在該 if 語句之前發(fā)生了改變,因此這個(gè) if 語所需的值必需對(duì)程序邏輯進(jìn)行回溯,以找到相對(duì)應(yīng)的輸入值,要測(cè)試的這 8 種組合并不一定意味著需要設(shè)計(jì)出 8 個(gè)測(cè)試用例。實(shí)際上,用 4 個(gè)測(cè)試用例就可以覆蓋它們。下面是這些測(cè)試用例的輸入,以及它們覆蓋的組合: A=3,B=0,X=4 覆蓋組合 1,5 A=2,B=1,X=1 覆蓋組合 2,6 A=1,B=0,X=2 覆蓋組合 3,7 A
18、=1,B=1,X=1 覆蓋組合 4,8Error! Reference source not found.的程序存在 4 條不同的路徑,需要 4 個(gè)測(cè)試用例,這樣的情況純屬巧合。事實(shí)上,這 4 個(gè)用例也沒有覆蓋到每條路徑,路徑 acd 就被遺漏掉了。舉例來說,對(duì)于如下所示的判斷語句,盡管它只包舍兩條路徑,仍可能需要 8個(gè)測(cè)試用例: if (x=y && length(z)=0 && FLAG) j=1 ;Else i=1; 在存在循環(huán)的情況下,多重條件覆蓋準(zhǔn)則所需要的測(cè)試用例的數(shù)量通常會(huì)遠(yuǎn)遠(yuǎn)小于其路徑的數(shù)量。 總的來說,對(duì)于包含每個(gè)判斷只存在一種條件的程序,最簡
19、單的測(cè)試準(zhǔn)則就是設(shè)計(jì)出足夠數(shù)量的測(cè)試用例,實(shí)現(xiàn): (1)將每個(gè)判斷的所有結(jié)果都至少執(zhí)行一次;(2)將所有的程序入口都至少調(diào)用一次,以確保全部的語句都至少執(zhí)行一次。而對(duì)于包含多重條件判斷的程序,最簡單的測(cè)試準(zhǔn)則是設(shè)計(jì)出足夠數(shù)量的測(cè)試用例,將每個(gè)判斷的所有可能的條件結(jié)果的組合,以及所有的入口點(diǎn)都至少執(zhí)行一次(加入“可能”二字,是因?yàn)橛行┙M合情況難以生成) 。2.1.6 路徑覆蓋在以上測(cè)試用例中,我們發(fā)現(xiàn)漏掉了路徑acd。路徑覆蓋則要求覆蓋程序所有可能的路徑,路徑覆蓋需要對(duì)所有可能的路徑進(jìn)行測(cè)試(包括循環(huán)、條件組合、分支選擇等)。那么需要設(shè)計(jì)大量、復(fù)雜的測(cè)試用例,使得工作量呈指數(shù)級(jí)增長。而在有些情況
20、下,一些執(zhí)行路徑是不可能被執(zhí)行的。從這個(gè)簡單的例子可以看出,要想充分測(cè)試一個(gè)程序是很困難的。同時(shí),測(cè)試條件越強(qiáng),測(cè)試的代價(jià)越高。測(cè)試時(shí)應(yīng)分主次,在測(cè)試代價(jià)和測(cè)試充分性之間做出平衡。2.2 黑盒測(cè)試2.2.1 等價(jià)劃分一個(gè)好的測(cè)試用例描述為具有相當(dāng)高的可能性發(fā)現(xiàn)某個(gè)錯(cuò)誤來,此外對(duì)程序的窮舉輸入測(cè)試是無法實(shí)現(xiàn)的。因此,當(dāng)測(cè)試某個(gè)程序時(shí),我們就被限制在從所有可能的輸入中努力找出某個(gè)小的子集。理所當(dāng)然,我們要找的子集必須是正確的,并且是可能發(fā)現(xiàn)最多錯(cuò)誤的子集。確定這個(gè)子集的一種方法,就是要意識(shí)到一個(gè)精心挑選的測(cè)試用例還應(yīng)具備另外兩個(gè)特性: 1. 嚴(yán)格控制測(cè)試用例的增加,減少為達(dá)到“合理測(cè)試”的某些既定
21、目標(biāo)而必須設(shè)計(jì)的其他測(cè)試用例的數(shù)量。 2. 它覆蓋了大部分其他可能的測(cè)試用例。也就是說,它會(huì)告訴我們,使用或不使用這個(gè)特定的輸入集合,哪些錯(cuò)誤會(huì)被發(fā)現(xiàn),哪些會(huì)被遺漏掉。 雖然這兩個(gè)特性看起來很相似,但描述的卻是截然不同的兩種思想。第一個(gè)特性意味著,每個(gè)測(cè)試用例都必須體現(xiàn)盡可能多的不同的輸入情況,以使最大限度地減少測(cè)試所需的全部用例的數(shù)量。而第二個(gè)特性意味著應(yīng)該盡量將程序輸入范圍進(jìn)行劃分,將其劃分為有限數(shù)量的等價(jià)類,這樣就可以合理地假設(shè)(但是,顯然不能絕對(duì)肯定)測(cè)試每個(gè)等價(jià)類的代表性數(shù)據(jù)等同于測(cè)試該類的其他任何數(shù)據(jù)。也就是說,如果等價(jià)類的某個(gè)測(cè)試用例發(fā)現(xiàn)了某個(gè)錯(cuò)誤,該等價(jià)類的其他用例也應(yīng)該能發(fā)現(xiàn)
22、同樣的錯(cuò)誤。相反,如果測(cè)試用例沒能發(fā)現(xiàn)錯(cuò)誤,那么我們可以預(yù)計(jì),該等價(jià)類中的其他測(cè)試用例不會(huì)出現(xiàn)在其他等價(jià)類中,因?yàn)榈葍r(jià)類是相互交迭的。 這兩種思想形成了稱為等價(jià)劃分的黑盒測(cè)試方法。第二種思想可以用來設(shè)計(jì)一個(gè)“令人感興趣的”輸入條件集合以供測(cè)試,而第一個(gè)思想可以隨后用來設(shè)計(jì)涵蓋這些狀態(tài)的一個(gè)最小測(cè)試用例集。使用等價(jià)劃分方法設(shè)計(jì)測(cè)試用例主要有兩個(gè)步驟: (1)確定等價(jià)類; (2)生成測(cè)試用例。 表 21等價(jià)類列舉表輸入條件有效等價(jià)類無效等價(jià)類1確定等價(jià)類 確定等價(jià)類是選取每一個(gè)輸入條件(通常是規(guī)格說明中的一個(gè)句子或短語)并將其劃分為兩個(gè)或更多的組。可以使用Error! Reference sour
23、ce not found.中的表格來進(jìn)行劃分。注意,我們確定了兩類等價(jià)類:有效等價(jià)類代表對(duì)程序的有效輸入,而無效等價(jià)類代表的則是其他任何可能的輸入條件(即不正確的輸入值) 。這樣,我們遵循了測(cè)試原則,即要注意無效和未預(yù)料到的輸入情況。 在給定了輸入或外部條件之后,確定等價(jià)類大體上是一個(gè)啟發(fā)式的過程。下面給出了一些指導(dǎo)原則: 1. 如果輸入條件規(guī)定了一個(gè)取值范圍(例如, “數(shù)量可以是從1到999”),那么就應(yīng)確定出一個(gè)有效等價(jià)類 (1<數(shù)量<999 ) , 以及兩個(gè)無效等價(jià)類 (數(shù)量<1,數(shù)量>999) 。 輸入條件有效等價(jià)類無效等價(jià)類取值范圍1<數(shù)量<999
24、數(shù)量<1,數(shù)量>9992. 如果輸入條件規(guī)定了取值的個(gè)數(shù)(例如, “汽車可登記一至六名車主”),那么就應(yīng)確定出一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類(沒有車主,或車主多于六個(gè)) 。 輸入條件有效等價(jià)類無效等價(jià)類取值個(gè)數(shù)1至六名車主沒有車主,車主多于六個(gè)3. 如果輸入條件規(guī)定了一個(gè)輸入值的集合,而且有理由認(rèn)為程序會(huì)對(duì)每個(gè)值進(jìn)行不同處理(例如, “交通工具的類型必須是公共汽車、卡車、出租車、火車或摩托車” ) ,那么就應(yīng)為每個(gè)輸入值確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類(例如, “拖車” ) 。 輸入條件有效等價(jià)類無效等價(jià)類輸入值集合公共汽車,卡車,出租車,火車,摩托車拖車4. 如果存在輸入條件規(guī)
25、定了“必須是”的情況,例如“標(biāo)識(shí)符的第一個(gè)字符必須是字母”,那么就應(yīng)確定一個(gè)有效等價(jià)類(首字符是字母)和一個(gè)無效等價(jià)類(首字符不是字母) 。輸入條件有效等價(jià)類無效等價(jià)類第一個(gè)字符首字符是字母首字符不是字母如果有任何理由可以認(rèn)為程序并未等同地處理等價(jià)類中的元素,那么應(yīng)該將這個(gè)等價(jià)類再劃分為小一些的等價(jià)類。 2生成測(cè)試用例 第二步是使用等價(jià)類來生成測(cè)試用例,我們以上述第一個(gè)例子來說明,其過程如下: 1. 為每個(gè)等價(jià)類設(shè)置一個(gè)不同的編號(hào)。 2. 編寫新的測(cè)試用例,盡可能多地覆蓋那些尚未被涵蓋的有效等價(jià)類,直到所有的有效等價(jià)類都被測(cè)試用例所覆蓋(包含進(jìn)去) 。 3. 編寫新的用例,覆蓋一個(gè)且僅一個(gè)尚未
26、被覆蓋的無效等價(jià)類,直到所有的無效等價(jià)類都被測(cè)試用例所覆蓋。 用單個(gè)測(cè)試用例覆蓋無效等價(jià)類,是因?yàn)槟承┨囟ǖ妮斎脲e(cuò)誤檢查可能會(huì)屏蔽或取代其他輸入錯(cuò)誤檢查。舉例來說,如果規(guī)格說明規(guī)定了“請(qǐng)輸入書籍類型(硬皮、軟皮或活頁)及數(shù)量(l999 )” ,代表兩個(gè)錯(cuò)誤輸入(書籍類型錯(cuò)誤,數(shù)量錯(cuò)誤)的測(cè)試用例“XYZ 0” ,很可能不會(huì)執(zhí)行對(duì)數(shù)量的檢查,因?yàn)槌绦蛞苍S會(huì)提示“XYZ 是未知的書籍類型” ,就不檢查輸入的其余部分了。這里將上述的第4個(gè)例子進(jìn)行一下擴(kuò)展,然后進(jìn)行示范說明如何用等價(jià)類劃分的思想來設(shè)計(jì)測(cè)試用例:規(guī)定標(biāo)識(shí)符的第一個(gè)字符必須是字母,標(biāo)識(shí)符只能使用字母、數(shù)字和下劃線。第一步:劃分等價(jià)類,為每
27、一個(gè)等價(jià)類編號(hào)。輸入條件有效等價(jià)類無效等價(jià)類第一個(gè)字符首字符是字母(1)首字符不是字母(2)字符限制僅使用字母、數(shù)字和下劃線(3)使用了其他字符(4)第二步:設(shè)計(jì)測(cè)試用例,覆蓋所有有效等價(jià)類,用盡可能少的用例覆蓋最多的有效等價(jià)類。測(cè)試用例:Test_1 覆蓋(1) (3) 第三步:設(shè)計(jì)測(cè)試用例,覆蓋所有無效等價(jià)類。每新增一個(gè)測(cè)試用例,只覆蓋一個(gè)無效等價(jià)類。測(cè)試用例:123test 覆蓋(2)測(cè)試用例:Test#¥ 覆蓋(4)2.2.2 邊界值分析經(jīng)驗(yàn)證明,考慮了邊界條件的測(cè)試用例與其他沒有考慮邊界條件的測(cè)試用例相比,具有更高的測(cè)試回報(bào)率。所謂邊界條件,是指輸入和輸出等價(jià)類中那些恰好處于邊界、或超過邊界、或在邊界以下的狀態(tài)。邊界值分析方法與等價(jià)劃分方法存在兩方面的不同: 1. 與從等價(jià)類中挑選出任意一個(gè)元素作為代表不同,邊界值分析需要選擇一個(gè)或多個(gè)元素,以便等價(jià)類的每個(gè)邊界都經(jīng)過一次測(cè)試。比如要求輸入職工年齡,規(guī)定輸入為18 45。根據(jù)等價(jià)類劃分思想,一個(gè)有效等價(jià)類:18 <= 年齡 <=45 ,兩個(gè)無效等價(jià)類:年齡<18 和 年齡>45。這樣選取 10 ,30 ,50即可滿足覆蓋。但是等價(jià)類的思想沒有從邊界值方面來分析問題,從邊界值角度分析,我們就會(huì)再添加17、18、19 、44、45、46這樣的邊界值。2. 與僅僅關(guān)注輸入條件(輸入空間)不同,還
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中生冬季預(yù)防傳染病
- 常見傳染病的識(shí)別與預(yù)防
- 行政主管年終總結(jié)模版
- 梅毒護(hù)理診斷及護(hù)理措施
- 人教版高中物理必修二第七章第8節(jié)機(jī)械能守恒定律習(xí)題課教學(xué)設(shè)計(jì)
- 下學(xué)期歷史教學(xué)的工作總結(jié)模版
- 新質(zhì)生產(chǎn)力綠色生產(chǎn)力
- 山東省濟(jì)南平陰縣聯(lián)考2025年數(shù)學(xué)七下期末綜合測(cè)試試題含解析
- 內(nèi)蒙古鄂爾多斯準(zhǔn)格爾旗第四中學(xué)2025屆八年級(jí)數(shù)學(xué)第二學(xué)期期末綜合測(cè)試模擬試題含解析
- 2025屆福建省福州師范大泉州附屬中學(xué)數(shù)學(xué)八下期末質(zhì)量檢測(cè)試題含解析
- 河南省機(jī)關(guān)事業(yè)單位退休人員一次性退休補(bǔ)貼審核表
- 英文電影鑒賞智慧樹知到答案章節(jié)測(cè)試2023年北華大學(xué)
- 教練技術(shù)三階段講義
- GB/T 27760-2011利用Si(111)晶面原子臺(tái)階對(duì)原子力顯微鏡亞納米高度測(cè)量進(jìn)行校準(zhǔn)的方法
- GB/T 223.26-2008鋼鐵及合金鉬含量的測(cè)定硫氰酸鹽分光光度法
- GB/T 1766-2008色漆和清漆涂層老化的評(píng)級(jí)方法
- 2023年第五屆全國大學(xué)生化學(xué)實(shí)驗(yàn)競賽筆試題及答案
- GB 31634-2014食品安全國家標(biāo)準(zhǔn)食品添加劑珍珠巖
- GB 2715-2016食品安全國家標(biāo)準(zhǔn)糧食
- 二年級(jí)體育教案-《立定跳遠(yuǎn)》說課稿 全國通用
- 門診特殊藥品使用申請(qǐng)表
評(píng)論
0/150
提交評(píng)論