第15、16講軟件測(cè)試_第1頁(yè)
第15、16講軟件測(cè)試_第2頁(yè)
第15、16講軟件測(cè)試_第3頁(yè)
第15、16講軟件測(cè)試_第4頁(yè)
第15、16講軟件測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第15講軟件測(cè)試2

軟件測(cè)試在軟件生命周期中橫跨兩個(gè)階段:單元測(cè)試和綜合測(cè)試。3

無(wú)論怎樣強(qiáng)調(diào)軟件測(cè)試的重要性和它對(duì)軟件可靠性的影響都不過(guò)分。軟件測(cè)試在軟件生存周期中橫跨兩個(gè)階段。 1、通常在編出每個(gè)模塊之后就對(duì)它做必要的測(cè)試(稱(chēng)為單元測(cè)試),模塊的編寫(xiě)者和測(cè)試者是同一個(gè)人,編碼和單元測(cè)試屬于軟件生存周期的同一個(gè)階段。 2、在這個(gè)階段結(jié)束之后,對(duì)軟件系統(tǒng)還要進(jìn)行各種綜合測(cè)試,這是軟件生存周期中的另一個(gè)獨(dú)立的階段,通常由專(zhuān)門(mén)的測(cè)試人員承擔(dān)這項(xiàng)工作。第一節(jié)

基本概念4

軟件工程的其他階段都是“建設(shè)性”的,軟件工程師力圖從抽象的概念出發(fā),逐步設(shè)計(jì)出具體的軟件系統(tǒng),直到用一種適當(dāng)?shù)某绦蛟O(shè)計(jì)語(yǔ)言寫(xiě)出可以執(zhí)行的程序代碼。軟件工程的測(cè)試階段,測(cè)試人員努力設(shè)計(jì)出一系列測(cè)試方案,目的卻是為了“破壞”已經(jīng)建造好的軟件系統(tǒng)--竭力證明程序中有錯(cuò)誤不能按照預(yù)定要求正確執(zhí)行。

測(cè)試階段的根本目的:盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶(hù)使用。5

1、測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程; 2、好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案; 3、成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。測(cè)試的定義:

為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程。一、軟件測(cè)試的目的6

1、為了證明程序是正確的而進(jìn)行測(cè)試,就會(huì)設(shè)計(jì)一些不易暴露錯(cuò)誤的的測(cè)試方案。 2、為了發(fā)現(xiàn)程序中的錯(cuò)誤,就會(huì)力求設(shè)計(jì)出最能暴露錯(cuò)誤的測(cè)試方案。從心理學(xué)的角度看,由程序的編寫(xiě)者自己進(jìn)行測(cè)試是不恰當(dāng)?shù)?。測(cè)試的目的決定了測(cè)試方案的設(shè)計(jì)

測(cè)試方案包括預(yù)定要測(cè)試的功能,應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果。其中最困難的問(wèn)題是設(shè)計(jì)測(cè)試用的輸入數(shù)據(jù)(測(cè)試用例)。

設(shè)計(jì)技術(shù)有:適用于黑盒測(cè)試的等價(jià)劃分,邊界值分析、以及錯(cuò)誤推測(cè)法等;適用于白盒測(cè)試的邏輯覆蓋法;以及灰盒測(cè)試7二、測(cè)試的原則

1、測(cè)試用例包括應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的輸出結(jié)果。

2、測(cè)試數(shù)據(jù)不僅要選擇合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù);

3、除了檢查程序應(yīng)該做的事情,還應(yīng)該檢查程序是否做了不應(yīng)該做的事情;

4、應(yīng)制定測(cè)試計(jì)劃并嚴(yán)格執(zhí)行,排除隨意性;

5、長(zhǎng)期保留測(cè)試用例;

6、對(duì)發(fā)現(xiàn)錯(cuò)誤較多的程序段,應(yīng)進(jìn)行更深入的測(cè)試;

7、程序員避免測(cè)試自己的程序。8可靠性分析三、軟件測(cè)試的對(duì)象及信息流1)軟件配置:包括需求說(shuō)明書(shū),設(shè)計(jì)說(shuō)明書(shū),源程序清單等;2)測(cè)試配置:包括測(cè)試計(jì)劃和測(cè)試方案。

3)測(cè)試工具:winrunner,robot;軟件配置測(cè)試配置測(cè)試測(cè)試結(jié)果結(jié)果分析錯(cuò)誤調(diào)試正確預(yù)期結(jié)果錯(cuò)誤率數(shù)據(jù)預(yù)測(cè)測(cè)試工具9第二節(jié)軟件測(cè)試方法(一)白盒測(cè)試技術(shù)(一)邏輯覆蓋是設(shè)計(jì)白盒測(cè)試方案的一種技術(shù)。是對(duì)一系列測(cè)試過(guò)程的總稱(chēng)。從覆蓋源程序語(yǔ)句的詳盡程度分析:1、語(yǔ)句覆蓋2、判定覆蓋3、條件覆蓋4、判定/條件覆蓋5、條件組合覆蓋6、路徑覆蓋10開(kāi)始A>1ANDB=0X=X+1停止FTTFsedcbaA=2ORX>1X=X/A1234567測(cè)試舉例(被測(cè)模塊的流程圖)example(inta,intb,floatx){if(a>1&&b==0)x=x/a;if(a==2||x>1)x=x+1;}11A=2,B=0,X=41、語(yǔ)句覆蓋分析:1、只測(cè)試了條件為真的情況,當(dāng)條件為假時(shí)處理有錯(cuò)誤,語(yǔ)句測(cè)試不能發(fā)現(xiàn)。 2、只關(guān)心判定式的值,未測(cè)試每個(gè)條件取不同值情況。 3、如把AND錯(cuò)寫(xiě)成OR,把X>1錯(cuò)寫(xiě)成X<1,上述測(cè)試數(shù)據(jù)不能發(fā)現(xiàn)。開(kāi)始A>1ANDB=0X=X+1停止FTTFsedcbaA=2ORX>1X=X/A1234567預(yù)期結(jié)果:測(cè)試數(shù)據(jù):X=3.0語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。122、判定覆蓋分析: 1、判定覆蓋比語(yǔ)句覆蓋強(qiáng),但邏輯覆蓋程度還不高。 2、上述測(cè)試數(shù)據(jù)只覆蓋了程序全部路徑的一半。開(kāi)始A>1ANDB=0X=X+1停止FTTFsedcbaA=2ORX>1X=X/A1234567I:A=3,B=0,X=3(覆蓋sacbd)II:A=2,B=1,X=1(覆蓋sabed)預(yù)期結(jié)果:測(cè)試數(shù)據(jù):I:X=1.0II:X=2.0判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。13

a點(diǎn):A>1,A<=1,B=0,B!=0;b點(diǎn):A=2,A!=2,X>1,X<=1;3、條件覆蓋I:A=2,B=0,X=4;(sacbed)(A>1,B=0,A=2,X>1;

)II:A=1,B=1,X=1;(sabd)(A<=1,B!=0,A!=2,X<=1;)分析:條件覆蓋比判定覆蓋強(qiáng)。開(kāi)始A>1ANDB=0X=X+1停止FTTFsedcbaA=2ORX>1X=X/A1234567預(yù)期結(jié)果:測(cè)試數(shù)據(jù):I:X=3.0II:X=1.0條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。14I:A=2,B=0,X=4;(sacbed)(A>1,B=0,A=2,X>1;

II:A=1,B=1,X=1;(sabd)(

A<=1,B!=0,A!=2,X<=1;分析:判定/條件覆蓋并不比條件覆蓋強(qiáng)。開(kāi)始A>1ANDB=0X=X+1停止FTTFsedcbaA=2ORX>1X=X/A12345674、判定/條件覆蓋預(yù)期結(jié)果:測(cè)試數(shù)據(jù):I:X=3.0II:X=1.0判定-條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,每個(gè)判斷中的每個(gè)條件的可能取值至少執(zhí)行一次。158種可能的條件組合如下:(1)A>1,B=0;(5)A=2,X>1;(2)A>1,B!=0;(6)A=2,X<=1;(3)A<=1,B=0;(7)A!=2,X>1;(4)A<=1,B!=0;(8)A!=2,X<=1;5、條件組合覆蓋開(kāi)始A>1ANDB=0X=X+1停止FTTFsedcbaA=2ORX>1X=X/A1234567I:A=2,B=0,X=4(sacbed)II:A=2,B=1,X=1(sabed)III:A=1,B=0,X=2(sabed)IV:A=1,B=1,X=1(sabd)

預(yù)期結(jié)果:測(cè)試數(shù)據(jù):I:X=3.0II:X=2.0III:

X=3.0IV:

X=1.0條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。164條可能的路徑:

1-2-3;1-2-6-7;1-4-5-3;1-4-5-6-7。6、路徑覆蓋分析:路徑覆蓋是相當(dāng)強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)。和條件組合覆蓋結(jié)合起來(lái),可以設(shè)計(jì)出檢錯(cuò)能力更強(qiáng)的測(cè)試數(shù)據(jù)。sedcba1234567預(yù)期結(jié)果:測(cè)試數(shù)據(jù):I:X=3.0II:X=2.0III:

X=3.0IV:

X=1.0I:A=1,B=1,X=1;(1-2-3

)II:A=1,B=1,X=2;(1-2-6-7

)III:A=3,B=0,X=1;(1-4-5-3

)IV:A=2,B=0,X=4;(1-4-5-6-7

)路徑測(cè)試就是設(shè)計(jì)足夠的測(cè)試用例,覆蓋程序中所有可能的路徑。17二黑盒測(cè)試這種方法是把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說(shuō)明書(shū),檢查程序的功能是否符合它的功能說(shuō)明。黑盒測(cè)試又叫做功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。18等價(jià)類(lèi)劃分是一種典型的黑盒測(cè)試方法,使用這一方法時(shí),完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。等價(jià)類(lèi)劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例。

等價(jià)類(lèi):每類(lèi)中的一個(gè)典型值在測(cè)試中的作用與這一類(lèi)中的所有其他值的作用相同。1、等價(jià)類(lèi)劃分黑盒測(cè)試技術(shù)19等價(jià)類(lèi)的劃分有兩種不同的情況:

①有效等價(jià)類(lèi):是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。

②無(wú)效等價(jià)類(lèi):是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類(lèi)和無(wú)效等價(jià)類(lèi)的設(shè)計(jì)。20劃分等價(jià)類(lèi)等價(jià)類(lèi)的原則。

(1)如果輸入條件規(guī)定了取值范圍,或值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類(lèi)和兩個(gè)無(wú)效等價(jià)類(lèi)。

21例如,在程序的規(guī)格說(shuō)明中,對(duì)輸入條件有一句話(huà):

“……項(xiàng)數(shù)可以從1到999……”

則有效等價(jià)類(lèi)是“1≤項(xiàng)數(shù)≤999”兩個(gè)無(wú)效等價(jià)類(lèi)是“項(xiàng)數(shù)<1”或“項(xiàng)數(shù)>999”。在數(shù)軸上表示成:22

(2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時(shí)可確立一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。例如,在Pascal語(yǔ)言中對(duì)變量標(biāo)識(shí)符規(guī)定為“以字母打頭的……串”。那么所有以字母打頭的構(gòu)成有效等價(jià)類(lèi),而不在此集合內(nèi)(不以字母打頭)的歸于無(wú)效等價(jià)類(lèi)。23

(3)如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類(lèi)和一個(gè)無(wú)效等價(jià)類(lèi)。

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

(5)如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類(lèi)(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(lèi)(從不同角度違反規(guī)則)。25例如,Pascal語(yǔ)言規(guī)定“一個(gè)語(yǔ)句必須以分號(hào)‘;’結(jié)束”。這時(shí),可以確定一個(gè)有效等價(jià)類(lèi)“以‘;’結(jié)束”,若干個(gè)無(wú)效等價(jià)類(lèi)“以‘:’結(jié)束”、“以‘,’結(jié)束”、“以‘’結(jié)束”、“以L(fǎng)F結(jié)束”等。確立測(cè)試用例

在確立了等價(jià)類(lèi)之后,建立等價(jià)類(lèi)表,列出所有劃分出的等價(jià)類(lèi)。

26再?gòu)膭澐殖龅牡葍r(jià)類(lèi)中按以下原則選擇測(cè)試用例:

(1)為每一個(gè)等價(jià)類(lèi)規(guī)定一個(gè)唯一編號(hào);

(2)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類(lèi),重復(fù)這一步,直到所有的有效等價(jià)類(lèi)都被覆蓋為止;

(3)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類(lèi),重復(fù)這一步,直到所有的無(wú)效等價(jià)類(lèi)都被覆蓋為止。27

用等價(jià)類(lèi)劃分法設(shè)計(jì)測(cè)試用例的實(shí)例

在某一PASCAL語(yǔ)言版本中規(guī)定:“標(biāo)識(shí)符是由字母開(kāi)頭,后跟字母或數(shù)字的任意組合構(gòu)成。有效字符數(shù)為8個(gè),最大字符數(shù)為80個(gè)?!?并且規(guī)定:“標(biāo)識(shí)符必須先說(shuō)明,再使用?!薄霸谕徽f(shuō)明語(yǔ)句中,標(biāo)識(shí)符至少必須有一個(gè)?!?/p>

28用等價(jià)類(lèi)劃分方法,建立輸入等價(jià)類(lèi)表:29下面選取了9個(gè)測(cè)試用例,它們覆蓋了所有的等價(jià)類(lèi)。

①VARx,T1234567:REAL;

BEGINx:=3.414;

T1234567:=2.732;

...…(1),(2),(4),(8),(9),(12),(14)

②VAR:REAL;

(3)

③VARx,:REAL;(5)

30④VART12345678:REAL;

(6)⑤VART12345......:REAL;

(7)

多于80個(gè)字符⑥VART$:CHAR;

(10)⑦VARGOTO:INTEGER;

(11)⑧VAR2T:REAL;

(13)⑨VARPAR:REAL;

(15)

BEGIN......

PAP:=SIN(3.14*0.8)/6;31

人們從長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,大量的錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是在輸入范圍的內(nèi)部。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例,可以查出更多的錯(cuò)誤。通常,輸入等價(jià)類(lèi)和輸出等價(jià)類(lèi)的邊界,就是應(yīng)該著重測(cè)試的程序邊界情況。選取測(cè)試數(shù)據(jù)應(yīng)該:

“剛好等于;剛剛小于;剛剛大于?!?/p>

2、邊界值分析

某應(yīng)用程序完成如下功能:

輸入某年某月某日,判斷這一天是這一年的第幾天。32例如:某應(yīng)用程序完成如下功能:輸入某年某月某日,判斷這一天是這一年的第幾天。程序C源代碼如下:

main(){intday,month,year,sum,leap;printf("\npleaseinputyear,month,day\n");scanf("%d,%d,%d",&year,&month,&day);

switch(month){

case1:sum=0;break;case2:sum=31;break;case3:sum=59;break;case4:sum=90;break;

case5:sum=120;break;

case6:sum=151;break;

case7:sum=181;break;

case8:sum=212;break;

case9:sum=243;break;

case10:sum=273;break;

case11:sum=304;break;

case12:sum=334;break;

default:printf("dataerror");break;}sum=sum+day;

printf("Itisthe%dthday.",sum);}331、用下述表格形式設(shè)計(jì)邊界值測(cè)試用例序號(hào)輸入條件預(yù)期輸出實(shí)際輸出123456734序號(hào)輸入條件預(yù)期輸出實(shí)際輸出11900,1,1Itisthe1thdayItisthe1thday21899,0,0dataerrordataerror31901,2,2Itisthe33thdayItisthe33thday42050,12,31Itisthe365thdayItisthe365thday52049,11,30Itisthe334thdayItisthe334thday62051,13,32dataerrordataerror735

該程序是否有缺陷?這些缺陷可以用什么測(cè)試案例檢測(cè)出來(lái)?

有缺陷,沒(méi)有考慮閏年問(wèn)題??梢杂靡韵聹y(cè)試案例測(cè)試:

year=2000,month=3,day=1

預(yù)期輸出:61實(shí)際輸出:60修改缺陷部分,給出代碼。if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/

leap=1;

else

leap=0;

if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一天*/

sum++;36序號(hào)輸入數(shù)據(jù)預(yù)期輸出實(shí)際輸出說(shuō)明11900,1,1Itisthefirstday剛好等于最小值22050,12,31Itisthe365thday剛好等于最大值31899,1,1輸入年份超范圍年份剛小于最小值42051,1,1輸入年份超范圍年份剛大于最大值52000,0,1輸入月份超范圍月份剛小于最小值62000,13,32輸入月份超范圍月份剛大于最大值72000,1,0輸入日超范圍日剛小于最小值82000,1,32輸入日超范圍日剛大于最大值92000,3,1Itisthe61thday閏年問(wèn)題測(cè)試數(shù)據(jù)及預(yù)期結(jié)果37

基本思想:是列舉出程序中可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,并且根據(jù)他們選擇測(cè)試方案。

經(jīng)驗(yàn)告訴我們:在一段程序中已經(jīng)發(fā)現(xiàn)的錯(cuò)誤數(shù)往往和未發(fā)現(xiàn)的錯(cuò)誤數(shù)成正比。 錯(cuò)誤推測(cè)法很大程度上靠直覺(jué)和經(jīng)驗(yàn)進(jìn)行。3、錯(cuò)誤推測(cè)3灰盒測(cè)試的定義1999年,美國(guó)洛克希德公司發(fā)表了灰盒測(cè)試法的論文,提出了灰盒測(cè)試法。單純從名稱(chēng)上來(lái)看,灰盒測(cè)試是介于黑盒測(cè)試與白盒測(cè)試之間的一種測(cè)試方式。灰盒測(cè)試是基于程序運(yùn)行時(shí)的外部表現(xiàn)同時(shí)又結(jié)合程序內(nèi)部邏輯結(jié)構(gòu)來(lái)設(shè)計(jì)用例,執(zhí)行程序并采集程序路徑執(zhí)行信息和外部用戶(hù)接口結(jié)果的測(cè)試技術(shù)。383.1灰盒測(cè)試的定義灰盒測(cè)試與黑盒測(cè)試的區(qū)別如果某軟件包含多個(gè)模塊,當(dāng)你使用黑盒測(cè)試時(shí),你只要關(guān)心整個(gè)軟件系統(tǒng)的邊界,無(wú)需關(guān)心軟件系統(tǒng)內(nèi)部各個(gè)模塊之間如何協(xié)作。而如果使用灰盒測(cè)試,你就需要關(guān)心模塊與模塊之間的交互。這是灰盒測(cè)試與黑盒測(cè)試的區(qū)別。393.1灰盒測(cè)試的定義灰盒測(cè)試與白盒測(cè)試的區(qū)別

在灰盒測(cè)試中,無(wú)需關(guān)心模塊內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。對(duì)于軟件系統(tǒng)的內(nèi)部模塊,灰盒測(cè)試依然把它當(dāng)成一個(gè)黑盒來(lái)看待。而白盒測(cè)試還需要再深入地了解內(nèi)部模塊的實(shí)現(xiàn)細(xì)節(jié)。403.1灰盒測(cè)試的定義灰盒測(cè)試與單元測(cè)試的區(qū)別首先,在進(jìn)行單元測(cè)試時(shí),需要寫(xiě)一些測(cè)試代碼(即“樁代碼”stub)。通常測(cè)試代碼和被測(cè)試代碼通常是同種語(yǔ)言(比如Java的單元測(cè)試通常也用Java來(lái)寫(xiě)),且測(cè)試代碼和被測(cè)試代碼的耦合很緊密。因此,單元測(cè)試通常由開(kāi)發(fā)人員來(lái)完成的,測(cè)試人員的能力未必能勝任。其次,單元測(cè)試的顆粒度會(huì)更細(xì)(會(huì)細(xì)到類(lèi)一級(jí)、函數(shù)一級(jí)),而灰盒測(cè)試僅僅到模塊一級(jí)。413.1灰盒測(cè)試的優(yōu)缺點(diǎn)優(yōu)點(diǎn):1、

能夠進(jìn)行基于需求的覆蓋測(cè)試和基于程序路徑覆蓋的測(cè)試;2、

測(cè)試結(jié)果可以對(duì)應(yīng)到程序內(nèi)部路徑,便于bug的定位、分析和解決;3、

能夠保證設(shè)計(jì)的黑盒測(cè)試用例的完整性,防止遺漏軟件的一些不常用的功能或功能組合;4、

能夠需求或設(shè)計(jì)不詳細(xì)或不完整對(duì)測(cè)試造成的影響。423.1灰盒測(cè)試的優(yōu)缺點(diǎn)缺點(diǎn):1、投入的時(shí)間比黑盒測(cè)試大概多20-40%的時(shí)間;2、對(duì)測(cè)試人員的要求比黑盒測(cè)試高;灰盒測(cè)試要求測(cè)試人員清楚系統(tǒng)內(nèi)部由哪些模塊構(gòu)成,模塊之間如何協(xié)作。3、不如白盒測(cè)試深入;4、不適用于簡(jiǎn)單的系統(tǒng)。所謂的簡(jiǎn)單系統(tǒng),就是簡(jiǎn)單到總共只有一個(gè)模塊。由于灰盒測(cè)試關(guān)注于系統(tǒng)內(nèi)部模塊之間的交互。如果某個(gè)系統(tǒng)簡(jiǎn)單到只有一個(gè)模塊,那就沒(méi)必要進(jìn)行灰盒測(cè)試了。433.2灰盒測(cè)試的準(zhǔn)備1、在測(cè)試中,部署產(chǎn)品之外,還要安裝源代碼。從源代碼編譯生成的目錄中運(yùn)行軟件。2、需要代碼覆蓋率工具的配置;部署可以針對(duì)本軟件開(kāi)發(fā)語(yǔ)言的代碼覆蓋率工具;3、測(cè)試人員要具備閱讀代碼的能力,其對(duì)開(kāi)發(fā)語(yǔ)言的熟悉程度和程序設(shè)計(jì)經(jīng)驗(yàn)多少?zèng)Q定了采用灰盒測(cè)試能夠取得多大的好處,所以配置這方面的測(cè)試人員或進(jìn)行必要的培訓(xùn)是必要的。443.4灰盒測(cè)試實(shí)例4546三、測(cè)試策略 在軟件系統(tǒng)進(jìn)行實(shí)際測(cè)試時(shí),應(yīng)該聯(lián)合使用各種設(shè)計(jì)測(cè)試方案的方法,形成一種綜合策略。 通常的做法是:用黑盒測(cè)試法設(shè)計(jì)基本的測(cè)試方案,再用白盒測(cè)試法補(bǔ)充一些必要的測(cè)試方案。具體地說(shuō),可用下述策略:1)在任何情況下都應(yīng)該使用邊界值分析的方法;2)必要時(shí)用等價(jià)劃分法補(bǔ)充測(cè)試方案3)必要時(shí)再用錯(cuò)誤推測(cè)法補(bǔ)充測(cè)試方案4)對(duì)照程序邏輯,檢查已經(jīng)設(shè)計(jì)出的測(cè)試方案。

47第四節(jié)軟件測(cè)試的步驟及過(guò)程48軟件開(kāi)發(fā)與軟件測(cè)試的關(guān)系項(xiàng)目規(guī)劃項(xiàng)目需求分析項(xiàng)目概要分析項(xiàng)目詳細(xì)分析代碼編寫(xiě)測(cè)試代碼編寫(xiě)測(cè)試需求分析系統(tǒng)測(cè)試計(jì)劃集成測(cè)試計(jì)劃單元測(cè)試計(jì)劃產(chǎn)品發(fā)布系統(tǒng)測(cè)試集成測(cè)試單元測(cè)試完整的軟件開(kāi)發(fā)流程49一、單元測(cè)試單元測(cè)試又稱(chēng)模塊測(cè)試。每個(gè)程序模塊完成一個(gè)相對(duì)獨(dú)立的子功能,所以可以對(duì)該模塊進(jìn)行單獨(dú)的測(cè)試。在單元測(cè)試期間主要評(píng)價(jià)模塊的下述5個(gè)特性:●模塊的接口●局部數(shù)據(jù)結(jié)構(gòu)●重要的執(zhí)行通路●出錯(cuò)處理通路●影響上述各方面特性的邊界條件50單元測(cè)試的步驟通常單元測(cè)試在編碼階段進(jìn)行,并經(jīng)過(guò)人工測(cè)試和計(jì)算機(jī)測(cè)試兩種類(lèi)型的測(cè)試。(1)代碼審查人工測(cè)試源程序可以由編寫(xiě)者本人非正式的進(jìn)行,也可以由審查小組正式進(jìn)行,后者稱(chēng)為代碼審查,是一種非常有效的程序驗(yàn)證技術(shù),對(duì)于典型的程序來(lái)說(shuō),可以查處30-70%的邏輯設(shè)計(jì)錯(cuò)誤和編碼錯(cuò)誤。審查小組的組成:組長(zhǎng);程序的設(shè)計(jì)者;編寫(xiě)者;測(cè)試者。代碼審查比計(jì)算機(jī)測(cè)試優(yōu)越的是:●一次審查會(huì)上可以發(fā)現(xiàn)許多錯(cuò)誤;●可以減少系統(tǒng)驗(yàn)證的總工作量(計(jì)算機(jī)測(cè)試的錯(cuò)誤是一個(gè)一個(gè)地發(fā)現(xiàn)并改正的)。51(2)測(cè)試軟件在源程序代碼編制完成,經(jīng)過(guò)評(píng)審和驗(yàn)證,確認(rèn)沒(méi)有語(yǔ)法錯(cuò)誤之后,就開(kāi)始進(jìn)行單元測(cè)試的測(cè)試用例設(shè)計(jì)。程序單元并不一定是一個(gè)獨(dú)立的程序,在考慮測(cè)試單元時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助單元去模擬與被測(cè)單元相聯(lián)系的其它單元。這些輔助單元分為兩種:驅(qū)動(dòng)模塊和樁模塊。樁模塊:樁模塊(Stub)是指模擬被測(cè)試的模塊所調(diào)用的模塊,而不是軟件產(chǎn)品的組成的部分。被測(cè)單元、相關(guān)的驅(qū)動(dòng)模塊及樁模塊共同構(gòu)成了一個(gè)“測(cè)試環(huán)境”。52二、集成測(cè)試集成測(cè)試過(guò)程中要考慮如下問(wèn)題:●數(shù)據(jù)穿過(guò)模塊接口時(shí)是否會(huì)丟失;●模塊的功能是否會(huì)對(duì)其它模塊的功能產(chǎn)生不利的影響;●把子功能組合起來(lái),能否達(dá)到預(yù)期的主功能要求;●單個(gè)模塊的誤差累積起來(lái)是否會(huì)放大到不能接受的程度;●全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題。53 集成是組裝軟件的系統(tǒng)技術(shù);模塊組裝成程序時(shí)有兩種方法: 1、先分別測(cè)試每個(gè)模塊,在把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序,稱(chēng)為非漸增式測(cè)試方法; 2、把下一個(gè)要測(cè)試的模塊同已經(jīng)測(cè)試好的那些模塊結(jié)合起來(lái)進(jìn)行測(cè)試,測(cè)試完以后在把下一個(gè)該測(cè)試的模塊結(jié)合進(jìn)來(lái)測(cè)試,這種每次增加一個(gè)模塊的方法稱(chēng)為漸增式測(cè)試(實(shí)際上同時(shí)完成了單元測(cè)試和集成測(cè)試)。

當(dāng)使用漸增式的測(cè)試方法把模塊結(jié)合到軟件系統(tǒng)中去時(shí),有自頂向下和自底向上兩種方法。

54

從主控模塊開(kāi)始,沿著軟件的控制層次向下移動(dòng),從而逐漸把各個(gè)模塊結(jié)合起來(lái)。(深度優(yōu)先;寬度優(yōu)先)。用下述步驟實(shí)現(xiàn)自頂向下的結(jié)合策略: 第一步:對(duì)主控制模塊進(jìn)行測(cè)試,測(cè)試時(shí)用存根程序代替所有直接附屬于主控制模塊的模塊; 第二步:根據(jù)選定的結(jié)合策略(深度、寬度優(yōu)先),每次用一個(gè)實(shí)際模塊代換一個(gè)存根程序(新結(jié)合進(jìn)來(lái)的模塊往往需要新的存根程序); 第三步:再結(jié)合下一個(gè)模塊的同時(shí)進(jìn)行測(cè)試;

第四步:為了保證新加入的模塊沒(méi)有引進(jìn)新的錯(cuò)誤,可能需要進(jìn)行回歸測(cè)試(全部或部分地重復(fù)以前做過(guò)的測(cè)試)。

1)自頂向下結(jié)合存根程序代替被測(cè)試的模塊所調(diào)用的模塊。因此存根程序也可以稱(chēng)為“虛擬子程序”。(樁模塊)55自頂向下增式集成測(cè)試進(jìn)行單元測(cè)試,這時(shí)需配以樁模塊sub1、sub2和sub3(見(jiàn)圖(a)),以模擬被它調(diào)用的模塊B、C和D。其后,把模塊B、C和D與頂層模塊A連接起來(lái),再對(duì)模塊B和D配以樁模塊sub4和sub5以模擬對(duì)模塊E和F的調(diào)用。這樣按圖(b)的形式完成測(cè)試。最后,去掉樁模塊sub4和sub5,把模塊E和F連上即對(duì)完整的結(jié)構(gòu)圖(見(jiàn)圖(c))進(jìn)行測(cè)試。56M1M4M3M2M7M6M5M8深度優(yōu)先策略先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊。(主控路徑的選擇決定于軟件的應(yīng)用特性)如:先結(jié)合M1,M2和M5,接著是M8,如果M2需要,可結(jié)合M6,然后再構(gòu)造中央和右側(cè)控制通路。寬度優(yōu)先策略 沿著軟件結(jié)構(gòu)的水平移動(dòng),把處于同一個(gè)控制層次上的所有模塊組裝起來(lái)。如:先結(jié)合M2,M3和M4,接著是M5,M6,M7,直到所有模塊結(jié)合進(jìn)來(lái)。57 從“原子”模塊開(kāi)始,從底部向上結(jié)合模塊進(jìn)行組裝和測(cè)試。用下述步驟實(shí)現(xiàn)自底向上的結(jié)合策略: 第一步:把低層模塊組合成實(shí)現(xiàn)某個(gè)特定的軟件子功能的族; 第二步:寫(xiě)一個(gè)驅(qū)動(dòng)程序(用于測(cè)試的控制程序),協(xié)調(diào)測(cè)試數(shù)據(jù)的輸入和輸出; 第三步:對(duì)由模塊組成的子功能族進(jìn)行測(cè)試;

第四步:去掉驅(qū)動(dòng)程序,沿軟件結(jié)構(gòu)自底向上移動(dòng),把子功能族組合起來(lái)形成更大的子功能族。

2)自底向上結(jié)合58自底向上增式集成測(cè)試圖(a)、(b)和(c)表示:樹(shù)狀結(jié)構(gòu)圖中處在最下層的葉結(jié)點(diǎn)模塊E、C和F,由于它們不再調(diào)用其他模塊,對(duì)它們進(jìn)行單元測(cè)試時(shí),只需配以驅(qū)動(dòng)模塊drv1、drv2和drv3,用來(lái)模擬B、A和D對(duì)它們的調(diào)用。完成這三個(gè)單元測(cè)試以后,再按圖(d)和(e)的形式,分別將模塊B和E及模塊D和F連接起來(lái),在配以驅(qū)動(dòng)模塊drv4和drv5的條件下實(shí)施部分集成測(cè)試。最后再按圖(f)的形式完成整體的集成測(cè)試。59自頂向下測(cè)試方法的優(yōu)點(diǎn):1)不需要測(cè)試驅(qū)動(dòng)程序2)能夠在測(cè)試的早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)的主要功能3)能在早期發(fā)現(xiàn)上層模塊的接口錯(cuò)誤缺點(diǎn):1)需要樁模塊2)低層關(guān)鍵模塊中的錯(cuò)誤發(fā)現(xiàn)較晚3)測(cè)試早期不能充分展開(kāi)人力。自底向上測(cè)試方法的優(yōu)缺點(diǎn)與上述剛好相反??!

不同集成測(cè)試策略的比較60 目的:向未來(lái)的用戶(hù)表明系統(tǒng)能夠象預(yù)定要求那樣工作。進(jìn)一步驗(yàn)證軟件的有效性。驗(yàn)證:保證軟件正確地實(shí)現(xiàn)了某一特定要求的一系列活動(dòng);即:“我們是否正確地構(gòu)造了產(chǎn)品?”確認(rèn):保證軟件的實(shí)現(xiàn)滿(mǎn)足了用戶(hù)需求的一系列活動(dòng)。即:“我們是否構(gòu)造了正確的產(chǎn)品?”軟件有效性:如果軟件的功能和性能如同用戶(hù)所合理的期待的那樣,則軟件是有效的。三確認(rèn)(驗(yàn)收)測(cè)試61 與系統(tǒng)測(cè)試類(lèi)似,但還有一些差別:1)某些已經(jīng)測(cè)試過(guò)的純粹技術(shù)性的特點(diǎn)可能不需要再次測(cè)試;2)對(duì)用戶(hù)特別感興趣的功能和性能,可能需要增加一些測(cè)試;3)通常主要使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測(cè)試;4)可能需要設(shè)計(jì)并執(zhí)行一些與用戶(hù)使用步驟有關(guān)的測(cè)試。

1、驗(yàn)收測(cè)試的范圍621)驗(yàn)收測(cè)試必須有用戶(hù)積極參與,或以用戶(hù)為主進(jìn)行;2)驗(yàn)收測(cè)試一般使用黑盒測(cè)試法3)驗(yàn)收測(cè)試有兩種可能的結(jié)果:(1)功能和性能與用戶(hù)需求一致,軟件是可以接受的;(2)功能和性能與用戶(hù)的要求有差距;

驗(yàn)收測(cè)試的特點(diǎn)63642、軟件配置復(fù)查復(fù)查的目的: 1)保證軟件配置的所有成分齊全 2)各方面的質(zhì)量都符合要求 3)文檔與程序一致653.Alpha和Beta測(cè)試Alpha測(cè)試由用戶(hù)在開(kāi)發(fā)者的場(chǎng)所進(jìn)行,并且在開(kāi)發(fā)者對(duì)用戶(hù)的“指導(dǎo)”下進(jìn)行測(cè)試。開(kāi)發(fā)者負(fù)責(zé)記錄錯(cuò)誤和使用中遇到的問(wèn)題。是在受控的環(huán)境中進(jìn)行。Beta測(cè)試由軟件的最終用戶(hù)在一個(gè)或多個(gè)客戶(hù)場(chǎng)所進(jìn)行。與Alpha測(cè)試不同的是,開(kāi)發(fā)者通常不在測(cè)試現(xiàn)場(chǎng)。因此Beta測(cè)試是軟件在開(kāi)發(fā)者不能控制的環(huán)境中的“真實(shí)”應(yīng)用。用戶(hù)記錄下Beta測(cè)試中遇到的問(wèn)題(真實(shí)的或想象的),并定期報(bào)告給開(kāi)發(fā)者。軟件開(kāi)發(fā)者對(duì)產(chǎn)品進(jìn)行修改,并準(zhǔn)備向全體客戶(hù)發(fā)布最終的軟件產(chǎn)品。66四、系統(tǒng)測(cè)試(SystemTesting)系統(tǒng)測(cè)試,是將通過(guò)確認(rèn)測(cè)試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。系統(tǒng)測(cè)試的目的在于通過(guò)與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。67系統(tǒng)測(cè)試

(1)恢復(fù)測(cè)試恢復(fù)測(cè)試是通過(guò)各種手段,強(qiáng)制性地使軟件出錯(cuò),而不能正常工作,進(jìn)而檢查軟件系統(tǒng)的恢復(fù)能力。(2)安全測(cè)試安全測(cè)試的目的在于驗(yàn)證安裝在系統(tǒng)內(nèi)的保護(hù)機(jī)制能否在實(shí)際中保護(hù)系統(tǒng)且不受非法侵入,不受各種非法的干擾。(3)強(qiáng)度測(cè)試強(qiáng)度測(cè)試需要在反常的數(shù)量、頻率或資源的方式下運(yùn)行系統(tǒng),以檢驗(yàn)系統(tǒng)能力的最高實(shí)際限度。(4)性能測(cè)試性能測(cè)試用來(lái)測(cè)試軟件在集成系統(tǒng)中的運(yùn)行性能,特別是針對(duì)實(shí)時(shí)系統(tǒng)、嵌入式系統(tǒng)。68恢復(fù)測(cè)試 恢復(fù)測(cè)試是要證實(shí)在克服硬件故障(包括掉電、硬件或網(wǎng)絡(luò)出錯(cuò)等)后,系統(tǒng)能否正常地繼續(xù)進(jìn)行工作,并不對(duì)系統(tǒng)造成任何損害。為此,可采用各種人工干預(yù)的手段,模擬硬件故障,故意造成軟件出錯(cuò)。并由此檢查:

錯(cuò)誤探測(cè)功能──系統(tǒng)能否發(fā)現(xiàn)硬件失效與故障;能否切換或啟動(dòng)備用的硬件;在故障發(fā)生時(shí)能否保護(hù)正在運(yùn)行的作業(yè)和系統(tǒng)狀態(tài);在系統(tǒng)恢復(fù)后能否從最后記錄下來(lái)的無(wú)錯(cuò)誤狀態(tài)開(kāi)始繼續(xù)執(zhí)行作業(yè),等等。掉電測(cè)試:69強(qiáng)度測(cè)試 強(qiáng)度測(cè)試是要檢查在系統(tǒng)運(yùn)行環(huán)境不正常乃至發(fā)生故障的情況下,系統(tǒng)可以運(yùn)行到何種程度的測(cè)試。例如:

溫馨提示

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

評(píng)論

0/150

提交評(píng)論