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

下載本文檔

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

文檔簡介

1第15講軟件測試2

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

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

基本概念4

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

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

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

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

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

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

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

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

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

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

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

5、長期保留測試用例;

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

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

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

X=3.0IV:

X=1.0條件組合覆蓋就是設(shè)計(jì)足夠的測試用例,運(yùn)行被測程序,使得每個判斷的所有可能的條件取值組合至少執(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é)合起來,可以設(shè)計(jì)出檢錯能力更強(qiáng)的測試數(shù)據(jù)。sedcba1234567預(yù)期結(jié)果:測試數(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

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

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

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

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

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

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

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

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

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

(3)如果輸入條件是一個布爾量,則可以確定一個有效等價類和一個無效等價類。

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

(5)如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。25例如,Pascal語言規(guī)定“一個語句必須以分號‘;’結(jié)束”。這時,可以確定一個有效等價類“以‘;’結(jié)束”,若干個無效等價類“以‘:’結(jié)束”、“以‘,’結(jié)束”、“以‘’結(jié)束”、“以LF結(jié)束”等。確立測試用例

在確立了等價類之后,建立等價類表,列出所有劃分出的等價類。

26再從劃分出的等價類中按以下原則選擇測試用例:

(1)為每一個等價類規(guī)定一個唯一編號;

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

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

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

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

28用等價類劃分方法,建立輸入等價類表:29下面選取了9個測試用例,它們覆蓋了所有的等價類。

①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個字符⑥VART$:CHAR;

(10)⑦VARGOTO:INTEGER;

(11)⑧VAR2T:REAL;

(13)⑨VARPAR:REAL;

(15)

BEGIN......

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

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

“剛好等于;剛剛小于;剛剛大于。”

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ì)邊界值測試用例序號輸入條件預(yù)期輸出實(shí)際輸出123456734序號輸入條件預(yù)期輸出實(shí)際輸出11900,1,1Itisthe1thdayItisthe1thday21899,0,0dataerrordataerror31901,2,2Itisthe33thdayItisthe33thday42050,12,31Itisthe365thdayItisthe365thday52049,11,30Itisthe334thdayItisthe334thday62051,13,32dataerrordataerror735

該程序是否有缺陷?這些缺陷可以用什么測試案例檢測出來?

有缺陷,沒有考慮閏年問題??梢杂靡韵聹y試案例測試:

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序號輸入數(shù)據(jù)預(yù)期輸出實(shí)際輸出說明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閏年問題測試數(shù)據(jù)及預(yù)期結(jié)果37

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

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

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

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

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

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

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

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

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

54

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

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

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

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

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

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

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

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

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

錯誤探測功能──系統(tǒng)能否發(fā)現(xiàn)硬件失效與故障;能否切換或啟動備用的硬件;在故障發(fā)生時能否保護(hù)正在運(yùn)行的作業(yè)和系統(tǒng)狀態(tài);在系統(tǒng)恢復(fù)后能否從最后記錄下來的無錯誤狀態(tài)開始繼續(xù)執(zhí)行作業(yè),等等。掉電測試:69強(qiáng)度測試 強(qiáng)度測試是要檢查在系統(tǒng)運(yùn)行環(huán)境不正常乃至發(fā)生故障的情況下,系統(tǒng)可以運(yù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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論