第7章 編碼與測試-new_第1頁
第7章 編碼與測試-new_第2頁
第7章 編碼與測試-new_第3頁
第7章 編碼與測試-new_第4頁
第7章 編碼與測試-new_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1第七章實現(xiàn)第七章

實現(xiàn)(編碼與測試)7.1編碼7.2軟件測試基礎(chǔ)7.3單元測試7.4集成測試7.5確認測試7.6白盒測試技術(shù)7.7黑盒測試技術(shù)7.8調(diào)試7.9軟件可靠性23第七章

實現(xiàn)(編碼與測試)7.1編碼編碼就是把軟件設(shè)計結(jié)果翻譯成用某種程序設(shè)計語言書寫的程序。1、選擇程序設(shè)計語言程序設(shè)計語言是人和計算機通信的最基本的工具,它的特點必然會影響人的思維和解題方式,會影響人和計算機通信的方式和質(zhì)量,也會影響其他人閱讀和理解程序的難易程度。因此,編碼之前的一項重要工作就是選擇一種適當(dāng)?shù)某绦蛟O(shè)計語言。4選擇程序設(shè)計語言的主要實用標(biāo)準(zhǔn):(1)系統(tǒng)用戶的要求。(2)可以使用的編譯程序。(3)可以得到的軟件工具。(4)工程規(guī)模。(5)程序員的知識。(6)軟件可移植性要求。(7)軟件的應(yīng)用領(lǐng)域。52程序設(shè)計風(fēng)格程序?qū)嶋H上也是一種供人閱讀的文章,有一個文章的風(fēng)格問題。應(yīng)該使程序具有良好的風(fēng)格。源程序文檔化

數(shù)據(jù)說明語句結(jié)構(gòu)

輸入/輸出方法6(1)源程序文檔化

標(biāo)識符的命名

安排注釋

程序的視覺組織7★

符號名的命名符號名即標(biāo)識符,包括模塊名、變量名、常量名、標(biāo)號名、子程序名、、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。這些名字應(yīng)能反映它所代表的實際東西,應(yīng)有一定實際意義。例如,表示次數(shù)的量用Times,表示總量的用Total,表示平均值的用Average,表示和的量用Sum等。名字不是越長越好,應(yīng)當(dāng)選擇精煉的意義明確的名字。必要時可使用縮寫名字,但這時要注意縮寫規(guī)則要一致,并且要給每一個名字加注釋。同時,在一個程序中,一個變量只應(yīng)用于一種用途。8★程序的注釋

夾在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。注釋決不是可有可無的。一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個源程序的1/3到1/2,甚至更多。注釋分為序言性注釋和功能性注釋。9序言性注釋通常置于每個程序模塊的開頭部分,它應(yīng)當(dāng)給出程序的整體說明,對于理解程序本身具有引導(dǎo)作用。序言性注釋包括:

程序標(biāo)題;有關(guān)本模塊功能和目的的說明;

主要算法;

接口說明:包括調(diào)用形式,參數(shù)描述,子程序清單;

有關(guān)數(shù)據(jù)描述:重要的變量及其用途,約束或限制條件,以及其它有關(guān)信息;

模塊位置:在哪一個源文件中,或隸屬于哪一個軟件包;

開發(fā)簡歷:模塊設(shè)計者,復(fù)審者,復(fù)審日期,修改日期及有關(guān)說明等。10功能性注釋功能性注釋嵌在源程序體中,用以描述其后的語句或程序段是在做什么工作,或是執(zhí)行了下面的語句會怎么樣,而不要解釋下面怎么做。例如,/*ADDAMOUNTTOTOTAL*/

TOTAL=AMOUNT+TOTAL

上面注視不清楚,如果注明把月銷售額計入年度總額,便使讀者理解了下面語句的意圖:

/*ADDMONTHLY-SALESTOANNUAL-TOTAL*/

TOTAL=AMOUNT+TOTAL要點描述一段程序,而不是每一個語句;用縮進和空行,使程序與注釋容易區(qū)別;注釋要正確。11★視覺組織空格、空行和移行恰當(dāng)?shù)乩每崭?,可以突出運算的優(yōu)先性,避免發(fā)生運算的錯誤。例如,將表達式

(A<-17)ANDNOT(B<=49)ORC

寫成(A<-17)ANDNOT(B<=49)ORC自然的程序段之間可用空行隔開;移行也叫做向右縮格。它是指程序中的各行不必都在左端對齊,都從第一格起排列。這樣做使程序完全分不清層次關(guān)系。對于選擇語句和循環(huán)語句,把其中的程序段語句向右做階梯式移行。使程序的邏輯結(jié)構(gòu)更加清晰。例如,兩重選擇結(jié)構(gòu)嵌套,寫成下面的移行形式,層次就清楚得多。IF(…)

THEN

IF(…)

THEN

……

ELSE

……

ENDIF

……

ELSE

……

ENDIF12(2)數(shù)據(jù)說明在設(shè)計階段已經(jīng)確定了數(shù)據(jù)結(jié)構(gòu)的組織及其復(fù)雜性。在編寫程序時,則需要注意數(shù)據(jù)說明的風(fēng)格。為了使程序中數(shù)據(jù)說明更易于理解和維護,必須注意以下幾點:

數(shù)據(jù)說明的次序應(yīng)該標(biāo)準(zhǔn)化。有次序易查閱,能加速測試、調(diào)試和維護的過程。例如:數(shù)據(jù)說明數(shù)據(jù)類型說明

①常量說明 ②簡單變量類型說明 ③數(shù)組說明 ④公用數(shù)據(jù)塊說明 ⑤所有的文件說明①整型量說明②實型量說明③字符量說明④邏輯量說明13

b.

當(dāng)多個變量名在一個語句中說明時,應(yīng)該按字母順序排列這些變量。

例如,把

integersize,length,width,cost,price

寫成

integer

cost,length,price,size,widthc.如果設(shè)計時使用了一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)該用注解說明用程序設(shè)計語言實現(xiàn)這個數(shù)據(jù)結(jié)構(gòu)的方法和特點。14(3)語句構(gòu)造

構(gòu)造語句時應(yīng)該遵循的原則是,每個語句都應(yīng)該簡單而直接,不能為了提高效率而使程序變得過分復(fù)雜;也不要刻意追求技巧性,使程序編寫得過于緊湊。例如:A[I]=A[I]+A[T];

A[T]=A[I]-A[T];

A[I]=A[I]-A[T];WORK=A[T];

A[T]=A[I];

A[I]=WORK;例如:

inti,j;for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

V[i][j]=(i/j)*(j/i)

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if(i==j)

V[i][j]=1;

else

V[i][j]=0;下述規(guī)則有助于使語句簡單明了:

不要為了節(jié)省空間而把多個語句寫在同一行;盡量避免復(fù)雜的條件測試;盡量減少對“非”條件的測試;

if(!(char<0||char>9))改成

if(char>=0&&char<=9)

不要讓讀者繞彎子想。

避免大量使用循環(huán)嵌套和條件嵌套;利用括號使邏輯表達式或算術(shù)表達式的運算次序清晰直觀。17(4)輸入輸出

在設(shè)計和編寫程序時應(yīng)該考慮下述有關(guān)輸入輸出風(fēng)格的規(guī)則:

對所有的輸入數(shù)據(jù)都要進行檢驗,識別錯誤的輸入,以保證每個數(shù)據(jù)的有效性;檢查輸入項的各種重要組合的合法性,必要時報告輸入狀態(tài)信息;使得輸入的步驟和操作盡可能簡單,并保持簡單的輸入格式;輸入數(shù)據(jù)時,應(yīng)允許使用自由格式輸入;應(yīng)允許缺省值;18輸入一批數(shù)據(jù)時,最好使用輸入結(jié)束標(biāo)志,而不要由用戶指定輸入數(shù)據(jù)數(shù)目;在交互式輸入輸入時,要在屏幕上使用提示符明確提示交互輸入的請求,指明可使用選擇項的種類和取值范圍。同時,在數(shù)據(jù)輸入的過程中和輸入結(jié)束時,也要在屏幕上給出狀態(tài)信息;當(dāng)程序設(shè)計語言對輸入/輸出格式有嚴(yán)格要求時,應(yīng)保持輸入格式與輸入語句的要求的一致性;給所有的輸出加注解,并設(shè)計輸出報表格式。

輸入/輸出風(fēng)格還受到許多其它因素的影響。如輸入/輸出設(shè)備(例如終端的類型,圖形設(shè)備,數(shù)字化轉(zhuǎn)換設(shè)備等)、用戶的熟練程度、以及通信環(huán)境等。19(5)程序效率

程序的效率是指程序的執(zhí)行速度及程序所需占用的內(nèi)存的存儲空間。程序編碼是最后提高運行速度和節(jié)省存儲的機會,因此在此階段不能不考慮程序的效率。20讓我們首先明確討論程序效率的幾條準(zhǔn)則效率是一個性能要求,應(yīng)當(dāng)在需求分析階段給出。軟件效率以需求為準(zhǔn),不應(yīng)以人力所及為準(zhǔn)。好的設(shè)計可以提高效率。程序的效率與程序的簡單性相關(guān),不要犧牲程序的清晰性和可讀性來不必要地提高效率。21效率問題

(1)程序運行時間(2)存儲器效率(3)輸入輸出的效率22(1)

程序運行時間源程序的效率直接由詳細設(shè)計階段確定的算法的效率決定,但是,寫程序的風(fēng)格也能對程序的執(zhí)行速度和存儲器要求產(chǎn)生影響。在把詳細設(shè)計結(jié)果翻譯成程序時,總可以應(yīng)用下述規(guī)則:

√寫程序之前先簡化算術(shù)的和邏輯的表達式;

√仔細研究嵌套的循環(huán),以確定是否有語句可以從內(nèi)層往外移;

√盡量避免使用多維數(shù)組;

√盡量避免使用指針和復(fù)雜的表;

√使用執(zhí)行時間短的算術(shù)運算;

√不要混合使用不同的數(shù)據(jù)類型;

√盡量使用整數(shù)運算和布爾表達式。

在效率是決定性因素的應(yīng)用領(lǐng)域,盡量使用有良好優(yōu)化特性的編譯程序,以自動生成高效目標(biāo)代碼。23(2)

存儲器效率在大中型計算機系統(tǒng)中,存儲限制不再是主要問題。在這種環(huán)境下,對內(nèi)存采取基于操作系統(tǒng)的分頁功能的虛擬存儲管理。存儲效率與操作系統(tǒng)的分頁功能直接有關(guān)。采用結(jié)構(gòu)化程序設(shè)計,將程序功能合理分塊,使每個模塊或一組密切相關(guān)模塊的程序體積大小與每頁的容量相匹配,可減少頁面調(diào)度,減少內(nèi)外存交換,提高存儲效率。在微型計算機系統(tǒng)中,存儲器的容量對軟件設(shè)計和編碼的制約很大。因此要選擇可生成較短目標(biāo)代碼且存儲壓縮性能優(yōu)良的編譯程序,有時需采用匯編程序。提高存儲器效率的關(guān)鍵是程序的簡單性。24(3)

輸入輸出的效率輸入/輸出可分為兩種類型:面向人(操作員)的輸入/輸出面向設(shè)備的輸入/輸出如果操作員能夠十分方便、簡單地錄入輸入數(shù)據(jù),或者能夠十分直觀、一目了然地了解輸出信息,則可以說面向人的輸入/輸出是高效的。25關(guān)于提高設(shè)備輸入/輸出效率的指導(dǎo)原則:輸入/輸出的請求應(yīng)當(dāng)最小化;對于所有的輸入/輸出操作,安排適當(dāng)?shù)木彌_區(qū),以減少頻繁的信息交換。對輔助存儲(例如磁盤),選擇盡可能簡單的,可接受的存取方法;

對輔助存儲的輸入/輸出,應(yīng)當(dāng)成塊傳送;

對終端或打印機的輸入/輸出,應(yīng)考慮設(shè)備特性,盡可能改善輸入/輸出的質(zhì)量和速度;任何不易理解的,對改善輸入/輸出效果關(guān)系不大的措施都是不可取的;任何不易理解的所謂“超高效”的輸入/輸出是毫無價值的;

7.2.1、軟件測試的目的

1963年,美國,飛往火星的火箭爆炸,損失$10million。原因:FORTRAN循環(huán):

DO5I=1,3誤寫為DO5I=1.3

軟件測試的工作量約占整個項目工作量的40%左右,對于要求極高的系統(tǒng)測試工作量還要成倍增加。微軟Exchange2000和Windows

2000中的人員結(jié)構(gòu)

Exchange2000Windows2000項目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人測試人員/開發(fā)人員2:51:97.2軟件測試基礎(chǔ)為什么需要這么多人、花這么多代價進行測試?目的何在?

“證明程序正確!”對嗎?Myers對軟件測試目的提出以下觀點:(1)軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。(2)一個好的測試用例能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤。(3)一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。28在測試階段測試人員努力設(shè)計出一系列測試方案,目的卻是為了“破壞”已經(jīng)建造好的軟件系統(tǒng)—竭力證明程序中有錯誤不能按照預(yù)定要求正確工作。暴露問題并不是軟件測試的最終目的,發(fā)現(xiàn)問題是為了解決問題,測試階段的根本目標(biāo)是盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。29

通常想象的“測試是為了表明程序是正確的”,“成功的測試是沒有發(fā)現(xiàn)錯誤的測試”是不正確的。測試的目標(biāo)決定了測試方案的設(shè)計。如果為了表明程序是正確的而進行測試,就會設(shè)計一些不易暴露錯誤的測試方案;相反,如果測試是為了發(fā)現(xiàn)程序中的錯誤,就會力求設(shè)計出最能暴露錯誤的測試方案。測試決不能證明軟件是正確的,也不能證明錯誤的不存在,它只能證明錯誤的存在。30軟件測試的問題軟件缺陷是什么?誰執(zhí)行測試?開發(fā)者?單獨的測試人員?兩方面人員?測試什么?每個部分都測試?測試軟件中高風(fēng)險部分?什么時候測試?怎樣測試?測試應(yīng)進行到什么程度?31軟件缺陷是什么---描述軟件失敗的術(shù)語缺點(defect)謬誤(fault)問題(problem)錯誤(error)異常(anomaly)偏差(variance)失敗(failure)缺陷(bug)32測試工具軟件開發(fā)工程師(SoftwareDevelopmentEngineerinTest,簡稱SDE/T)軟件測試人員軟件測試工程師(SoftwareTestEngineer,簡稱STE)33SDE/T

負責(zé)寫測試工具代碼,并利用測試工具對軟件進行測試;或者開發(fā)測試工具為軟件測試工程師服務(wù)。負責(zé)理解產(chǎn)品的功能要求,然后對其進行測試,檢查軟件有沒有錯誤(Bug),決定軟件是否具有穩(wěn)定性,并寫出相應(yīng)的測試規(guī)范和測試案例STE

347.2.2軟件測試準(zhǔn)則(1)

所有測試都應(yīng)該能追溯到用戶需求。

正如上一小節(jié)講過的,軟件測試的目標(biāo)是發(fā)現(xiàn)錯誤。從用戶的角度看,最嚴(yán)重的錯誤是導(dǎo)致程序不能滿足用戶需求的那些錯誤。

軟件中的問題根源可能在開發(fā)前期的各階段解決、糾正錯誤也必須追溯到前期工作。35367.2.2軟件測試準(zhǔn)則(2)

應(yīng)當(dāng)把“盡早地和不斷地進行軟件測試”作為軟件開發(fā)者的座右銘。概要設(shè)計時應(yīng)完成測試計劃,詳細的測試用例定義可在設(shè)計模型確定后開始,所有測試可在任何代碼被產(chǎn)生之前進行計劃和設(shè)計。

軟件測試不等于程序測試。

軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間;據(jù)美國一家公司統(tǒng)計,查出的軟件錯誤中,屬于需求分析和軟件設(shè)計的錯誤約占64%,屬于程序編寫的錯誤僅占

36%。程序編寫的許多錯誤是“先天的”。37測試與開發(fā)前期工作的關(guān)系決定軟件與系統(tǒng)的配合關(guān)系需求分析概要設(shè)計詳細設(shè)計編碼單元測試集成測試確認測試系統(tǒng)測試387.2.2軟件測試準(zhǔn)則

(3)

pareto原則:測試發(fā)現(xiàn)的錯誤中的80%很可能是由程序中20%的模塊造成的。當(dāng)然,問題是怎樣找出這些可疑的模塊并徹底地測試它們。(4)應(yīng)該從“小規(guī)模”測試開始,并逐步進行“大規(guī)?!睖y試。通常,首先重點測試單個程序模塊,然后把測試重點轉(zhuǎn)向在集成的模塊簇中尋找錯誤,最后在整個系統(tǒng)中尋找錯誤。397.2.2軟件測試準(zhǔn)則(5)測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩部分組成,并兼顧合理的輸入和不合理的輸入數(shù)據(jù)(6)窮舉測試是不可能的。所謂窮舉測試就是把程序所有可能的執(zhí)行路徑都檢查一遍的測試。例:輸入三條邊長可采用的測試用例數(shù)

(設(shè)字長16位)

執(zhí)行時間:設(shè)測試一次需1ms

共需一萬年.=2X2X2≈3X1016161614窮舉測試實例:設(shè)程序含4個分支,循環(huán)次數(shù)≤20,從A到B的可能路徑

執(zhí)行時間:設(shè)測試一次需2ms

窮舉測試需5億年.=5+5+..+5+5≈1020121914AB427.2.2軟件測試準(zhǔn)則(7)為了達到最佳的測試效果,應(yīng)該由獨立的第三方從事測試工作。所謂“最佳效果”是指有最大可能性發(fā)現(xiàn)錯誤的測試。由于前面已經(jīng)講過的原因,開發(fā)軟件的軟件工程師(心理)并不是完成全部測試工作的最佳人選(通常他們主要承擔(dān)模塊測試工作)。(8)程序修改后要回歸測試。(9)應(yīng)長期保留測試用例,直至系統(tǒng)廢棄。437.2.3測試方法軟件測試的策略和方法靜態(tài)測試方法動態(tài)測試方法

人工測試方法計算機輔助靜態(tài)分析方法白盒測試方法黑盒測試方法44靜態(tài)測試:

基本特征是在對軟件進行分析、檢查和審閱,不實際運行被測試的軟件。靜態(tài)測試約可找出30~70%的邏輯設(shè)計錯誤.

對需求規(guī)格說明書、軟件設(shè)計說明書、源程序做檢查和審閱包括:是否符合標(biāo)準(zhǔn)和規(guī)范;通過結(jié)構(gòu)分析、流圖分析、符號執(zhí)行指出軟件缺陷。

45動態(tài)測試:

通過運行軟件來檢驗軟件的動態(tài)行為和運行結(jié)果的正確性。動態(tài)測試的兩個基本要素:被測試程序測試數(shù)據(jù)(測試用例)動態(tài)測試方法:(1)選取定義域有效值,或定義域外無效值;(2)對已選取值決定預(yù)期的結(jié)果;(3)用選取值執(zhí)行程序;(4)執(zhí)行結(jié)果與預(yù)期的結(jié)果相比,不吻和程序有錯。測試用例ID目的前提輸入預(yù)期輸出后果執(zhí)行歷史日期結(jié)果版本執(zhí)行人46動態(tài)測試技術(shù)1、白盒測試(WhiteBoxTesting)2、黑盒測試(BlackBoxTesting)如果知道產(chǎn)品的內(nèi)部工作過程,可以通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進行----稱為白盒測試。如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用----稱為黑盒測試。47也叫玻璃盒測試(GlassBoxTesting)

對軟件的過程性細節(jié)做細致的檢查。這一方法是把測試對象看作一個打開的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,來設(shè)計或選擇測試用例,對程序所有邏輯路徑進行測試。白盒測試(WhiteBoxTesting)白盒測試的內(nèi)容對程序模塊的所有獨立執(zhí)行路徑至少測試一次對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測試一次。在循環(huán)的邊界和運行邊界限內(nèi)執(zhí)行循環(huán)體測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。48已知產(chǎn)品的功能設(shè)計規(guī)格,可以進行測試證明每個實現(xiàn)了的功能是否符合要求。

黑盒測試(BlackBoxTesting)黑盒測試的內(nèi)容

Alpha/BetaTesting菜單/幫助測試發(fā)行測試回歸測試軟件497.2.4測試步驟大型軟件系統(tǒng)的測試過程基本上由下述幾個步驟組成:

1.模塊測試---單元

2.子系統(tǒng)測試---局部3.系統(tǒng)測試---集成4.驗收測試---用戶參與5.平行運行---新舊共存

507.2.5測試階段的信息流測試軟件配置結(jié)果分析測試結(jié)果排錯改正的軟件預(yù)期結(jié)果可靠性分析預(yù)測的可靠性錯誤出錯率數(shù)據(jù)測試配置測試工具需求規(guī)格說明書軟件設(shè)計說明書被測源程序

測試計劃測試用例(測試數(shù)據(jù))測試驅(qū)動程序測試數(shù)據(jù)自動生成程序、靜態(tài)分析程序、動態(tài)分析程序、測試結(jié)果分析程序、以及驅(qū)動測試的測試數(shù)據(jù)庫等。51軟件測試的對象軟件測試并不等于程序測試。軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間。因此,需求分析、概要設(shè)計、詳細設(shè)計以及程序編碼等所得到的文檔資料,包括需求規(guī)格說明、概要設(shè)計說明、詳細設(shè)計規(guī)格說明以及源程序,都應(yīng)成為軟件測試的對象。527.3單元(模塊)測試7.3.1測試重點

---5個方面模塊接口

主要檢查下述幾個方面:參數(shù)的數(shù)目、次序、屬性或單位系統(tǒng)與變元是否一致;是否修改了只作輸入用的變元;全局變量的定義和用法在各個模塊中是否一致。2.局部數(shù)據(jù)結(jié)構(gòu)

局部數(shù)據(jù)說明、初始化、默認值等方面的錯誤。3.重要的執(zhí)行通路

選擇最有代表性、最可能發(fā)現(xiàn)錯誤的執(zhí)行通路進行測試就是十分關(guān)鍵的。應(yīng)該設(shè)計測試方案用來發(fā)現(xiàn)由于錯誤的計算、不正確的比較或不適當(dāng)?shù)目刂屏鞫斐傻腻e誤。4.出錯處理通路著重測試下述一些可能發(fā)生的錯誤:(1)對錯誤的描述是難以理解的;(2)記下的錯誤與實際遇到的錯誤不同;(3)在對錯誤進行處理之前,錯誤條件已經(jīng)引起系統(tǒng)干預(yù);(4)對錯誤的處理不正確;(5)描述錯誤的信息不足以幫助確定造成錯誤的位置。5.邊界條件邊界測試是單元測試中最后的也可能是最重要的任務(wù),軟件常常在它的邊界上失效。537.3.2

代碼審查

由審查小組,人工測試源程序稱為代碼審查。它是一種非常有效的程序驗證技術(shù),對于典型的程序來說,可以查出30%~70%的邏輯設(shè)計錯誤和編碼錯誤。

審查小組最好由下述4人組成:(1)組長,應(yīng)該是一個很有能力的程序員,而且沒有直接參與這項工程;(2)程序的設(shè)計者;(3)程序的編寫者;(4)程序的測試者。7.3單元(模塊)測試審查的步驟:小組成員先研究設(shè)計說明書,力求理解這個設(shè)計。由設(shè)計者扼要地介紹他的設(shè)計。審查會上程序的編寫者逐個語句地解釋是怎樣用程序代碼實現(xiàn)這個設(shè)計的。審查會上對照程序設(shè)計常見錯誤,分析審查這個程序。當(dāng)發(fā)現(xiàn)時,記錄錯誤,繼續(xù)審查。547.3.3計算機測試

模塊并不是一個獨立的程序,要運行它就必須為其開發(fā)驅(qū)動軟件和(或)存根軟件。

驅(qū)動程序也就是一個“主程序”,它接收測試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測試的模塊,并且印出有關(guān)的結(jié)果。

存根程序代替被測試的模塊所調(diào)用的模塊,也稱為“虛擬子程序”。它使用被它代替的模塊的接口,可能做最少量的數(shù)據(jù)操作,印出對入口的檢驗或操作結(jié)果,并且把控制歸還給調(diào)用它的模塊。7.3單元(模塊)測試557.4集成測試集成測試是測試和組裝軟件的系統(tǒng)化技術(shù),其主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。

如:數(shù)據(jù)穿過接口時可能丟失;

一個模塊對另一個模塊可能由于疏忽而造成有害影響;

把子功能組合起來可能不產(chǎn)生預(yù)期的主功能;

個別看來是可以接受的誤差可能積累到不能接受的程度;

全程數(shù)據(jù)結(jié)構(gòu)可能有問題等等。567.4集成測試集成測試有兩種方法。

1、非漸增式測試方法,即:先分別測試每個模塊,再把所有模塊按設(shè)計要求放在一起結(jié)合成所要的程序進行測試。

2、漸增式測試,即:先把下一個要測試的模塊同已經(jīng)測試好的那些模塊結(jié)合起來進行測試,測試完以后再把下一個應(yīng)該測試的模塊結(jié)合進來測試。這種每次增加一個模塊的方法實際上同時完成單元測試和集成測試.

目前在進行集成測試時普遍采用漸增式測試方法。57漸增方式把模塊結(jié)合到程序中去時,有自頂向下和自底向上兩種集成策略。但在實踐中常采用混合的策略。7.4.1自頂向下集成7.4.2自底向上集成深度(寬度)優(yōu)先組裝,需要存根程序自底向上組裝,需要驅(qū)動程序不同集成測試策略的比較自頂向下結(jié)合的主要優(yōu)點:不需要設(shè)計測試驅(qū)動模塊,與存根模塊相聯(lián)系的問題可能在測試的早期發(fā)現(xiàn)。主要缺點是:需要設(shè)計存根模塊,并且由于為了使存根模塊能夠盡量模擬實際模塊的功能,必然會增加設(shè)計存根模塊的復(fù)雜度,從而導(dǎo)致增加一些附加的測試。自底向上結(jié)合的主要優(yōu)點:不需要設(shè)計存根模塊,而設(shè)計測試驅(qū)動模塊一般比建立存根模塊要容易,同時比較容易設(shè)計測試用例,并且可以實現(xiàn)多個模塊的并行測試,從而提高測試效率。主要缺點是:直到最后一個模塊結(jié)合進來以前,程序作為一個整體始終不存在。也就是說,對主要的控制直到最后才接觸到。一般來說,我們根據(jù)情況結(jié)合這兩種方法來進行組裝和測試:對軟件結(jié)構(gòu)中較上層模塊使用自頂向下結(jié)合方法,對軟件結(jié)構(gòu)中較下層模塊使用自底向上結(jié)合方法。607.4.3回歸測試任何成功的測試都會發(fā)現(xiàn)錯誤,而且錯誤必須被改正。每當(dāng)改正軟件錯誤的時候,軟件配置的某些成分(程序、文檔或數(shù)據(jù))也被修改了?;貧w測試就是用于保證由于調(diào)試或其他原因引起的變化,不會導(dǎo)致非預(yù)期的軟件行為或額外錯誤的測試活動。即:回歸測試是指重新執(zhí)行已經(jīng)做過的測試的某個子集,以保證修改變化沒有帶來非預(yù)期的副作用?;貧w測試集(已執(zhí)行過的測試用例的子集)包括下述3類不同的測試用例:(1)檢測軟件全部功能的代表性測試用例;(2)專門針對可能受修改影響的軟件功能的附加測試;(3)針對被修改過的軟件成分的測試。617.5確認測試確認測試也稱為驗收測試,它的目標(biāo)是驗證軟件的有效性。確認(validation):指的是為了保證軟件確實滿足了用戶需求而進行的一系列活動。驗證(verification):指的是保證軟件正確地實現(xiàn)了某個特定要求的一系列活動。有效性的簡單定義:如果軟件的功能和性能如同用戶所合理期待的那樣,軟件就是有效的。需求分析階段產(chǎn)生的軟件需求規(guī)格說明書,準(zhǔn)確地描述了用戶對軟件的合理期望,因此是軟件有效性的標(biāo)準(zhǔn),也是進行確認測試的基礎(chǔ)。627.5.1確認測試的范圍確認測試必須有用戶積極參與,或者以用戶為主進行。用戶應(yīng)該參與設(shè)計測試方案,使用用戶界面輸入測試數(shù)據(jù)并且分析評價測試的輸出結(jié)果。確認測試通常使用黑盒測試法。應(yīng)該仔細設(shè)計測試計劃和測試過程,測試計劃包括要進行的測試的種類及進度安排,測試過程規(guī)定了用來檢測軟件是否與需求一致的測試方案。通過測試和調(diào)試要保證軟件能滿足所有功能要求,能達到每個性能要求,文檔資料是準(zhǔn)確而完整的,此外,還應(yīng)該保證軟件能滿足其他預(yù)定的要求(例如,安全性、可移植性、兼容性和可維護性等)。軟件功能和性能

==

用戶要求??637.5.2軟件配置復(fù)查確認測試的一個重要內(nèi)容是復(fù)查軟件配置。

----軟件配置:軟件需求規(guī)格說明、軟件設(shè)計規(guī)格說明、源代碼等。復(fù)查的目的是保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,具有完成軟件維護所必須的細節(jié),而且已經(jīng)編好目錄。除了按合同規(guī)定的內(nèi)容和要求,由人工審查軟件配置之外,在確認測試過程中還應(yīng)該嚴(yán)格遵循用戶指南及其他操作程序,以便檢驗這些使用手冊的完整性和正確性。必須仔細記錄發(fā)現(xiàn)的遺漏或錯誤,并且適當(dāng)?shù)匮a充和改正。647.5.3Alpha和Beta測試Alpha測試由用戶在開發(fā)者的場所進行,并且在開發(fā)者對用戶的“指導(dǎo)”下進行測試。開發(fā)者負責(zé)記錄發(fā)現(xiàn)的錯誤和使用中遇到的問題。該測試是在受控的環(huán)境中進行的。Beta測試由軟件的最終用戶們在一個或多個客戶場所進行。Beta測試是軟件在開發(fā)者不能控制的環(huán)境中的“真實”應(yīng)用。用戶記錄在Beta測試過程中遇到的一切問題(真實的或想像的),并且定期把這些問題報告給開發(fā)者。接收到在Beta測試期間報告的問題之后,開發(fā)者對軟件產(chǎn)品進行必要的修改,并準(zhǔn)備向全體客戶發(fā)布最終的軟件產(chǎn)品。65如何測試?關(guān)鍵技術(shù)

----設(shè)計測試方案。測試方案

----包括:具體的測試目的,應(yīng)該輸入的測試數(shù)據(jù)和預(yù)期的結(jié)果。通常又把測試數(shù)據(jù)和預(yù)期的輸出結(jié)果稱為測試用例。其中最困難的問題是設(shè)計測試用例的輸入數(shù)據(jù)。不同的測試數(shù)據(jù)發(fā)現(xiàn)程序錯誤的能力差別很大,為了提高測試效率降低測試成本,應(yīng)該選用高效的測試數(shù)據(jù)。因為不可能進行窮盡的測試,選用少量“最有效的”測試數(shù)據(jù),做到盡可能完備的測試就更重要了。66測試方案哪一種好呢?設(shè)計測試方案的基本目標(biāo)是,確定一組最可能發(fā)現(xiàn)某個錯誤或某類錯誤的測試數(shù)據(jù)?,F(xiàn)已經(jīng)研究出許多設(shè)計測試數(shù)據(jù)的技術(shù),這些技術(shù)各有優(yōu)缺點,沒有哪一種是最好的,更沒有哪一種可以代替其余所有技術(shù);同一種技術(shù)在不同的應(yīng)用場合效果可能相差很大,因此,通常需要聯(lián)合使用多種設(shè)計測試數(shù)據(jù)的技術(shù)。677.6白盒測試技術(shù)7.6.1邏輯覆蓋

邏輯覆蓋----是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計測試用例的技術(shù)。

(1)語句覆蓋(2)判定覆蓋(3)條件覆蓋(4)判定/條件覆蓋(5)條件組合覆蓋(6)點覆蓋(7)邊覆蓋(8)路徑覆蓋白盒測試測試時按照程序內(nèi)部的邏輯測試程序、檢驗程序中的每條通路是否都能按預(yù)定的要求正確工作。白盒測試又稱為結(jié)構(gòu)測試,主要用于單元測試。邏輯覆蓋是以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ)的測試用例設(shè)計技術(shù),在白盒法中,規(guī)定了不同的覆蓋標(biāo)準(zhǔn)。69發(fā)現(xiàn)錯誤的能力標(biāo)準(zhǔn)含義1(弱)語句覆蓋每條語句至少執(zhí)行一次2判定覆蓋每一判定的每個分支至少執(zhí)行一次3條件覆蓋每一判定中的每個條件,分別按“真”、“假”至少各執(zhí)行一次4判定/條件覆蓋同時滿足判定覆蓋和條件覆蓋的要求5(強)條件組合覆蓋求出判定中所有條件的各種可能組合值,每一可能的條件組合至少執(zhí)行一次

邏輯覆蓋測試的5種標(biāo)準(zhǔn)

語句覆蓋語句覆蓋就是設(shè)計足夠的測試用例,使得程序中的每個語句至少執(zhí)行一次。只需設(shè)計一個測試用例:輸入數(shù)據(jù):A=2,B=0,X=4若第一個判斷中的邏輯運算符“&&”若錯寫成了“||”,利用上面的數(shù)據(jù)能檢查出這個錯誤嗎?判定覆蓋覆蓋情況:共有兩個判定,應(yīng)執(zhí)行路徑:

ace∧abd或:acd∧abe選擇用例:

(1)[(2,0,4),(2,0,3)]

ace

[(1,1,1),(1,1,1)]

abd或:(2)[(3,0,3),(3,0,1)]

acd

[(2,1,1),(2,1,2)]

abe如果x>1錯寫成了x<1,能檢查出這個錯誤嗎?

A>1ANDB=0X=X/A

A=2ORX>1X=X+1abcdeTFTF覆蓋標(biāo)準(zhǔn):使得程序中每個判定的取“真”分支和取“假”分支至少都執(zhí)行一次。條件覆蓋條件:

A>1,B=0,A=2,x>1。選擇輸入數(shù)據(jù):

A=2,B=0,x=4

A=1,B=1,x=1如下數(shù)據(jù):

A=1,B=0,x=3A=2,B=1,x=1滿足條件覆蓋,但不滿足判定覆蓋。條件覆蓋:使得程序判定中的每個條件能獲得各種可能的結(jié)果。

A>1ANDB=0X=X/A

A=2ORX>1X=X+1abcdeTFTF判定/條件覆蓋條件:

A>1,B=0,A=2,x>1。判定:(A>1)and(B=0)(A=2)or(x>1)選擇輸入數(shù)據(jù):

A=2,B=0,x=4A=1,B=1,x=1

A>1ANDB=0X=X/A

A=2ORX>1X=X+1abcdeTFTF判定/條件覆蓋:使得判定中的每個條件都取到各種可能的值,而且每個判定表達式也都取到各種可能的結(jié)果。條件組合覆蓋可能的條件組合:(1)A>1,B=0(2)A>1,B≠0(3)A≤1,B=0(4)A≤1,B≠0(5)A=2,x>1(6)A=2,x≤1(7)A≠2,x>1(8)A≠2,x≤1相應(yīng)的輸入數(shù)據(jù):A=2,B=0,x=4滿足(1)和(5)A=2,B=1,x=1滿足(2)和(6)A=1,B=0,x=2滿足(3)和(7)A=1,B=1,x=1滿足(4)和(8)條件組合覆蓋:使得每個判定中的條件的各種可能組合都至少出現(xiàn)一次。

A>1ANDB=0X=X/A

A=2ORX>1X=X+1abcdeTFTF75以上根據(jù)測試數(shù)據(jù)對源程序語句檢測的詳盡程度,簡單討論了幾種邏輯覆蓋標(biāo)準(zhǔn)。在上面的分析過程中常常談到測試數(shù)據(jù)執(zhí)行的程序路徑,顯然,測試數(shù)據(jù)可以檢測的程序路徑的多少,也反映了對程序測試的詳盡程度。從對程序路徑的覆蓋程度分析,能夠提出下述一些主要的邏輯覆蓋標(biāo)準(zhǔn)。766.點覆蓋圖論中點覆蓋的概念定義如下:如果連通圖G的子圖G′是連通的,而且包含G的所有結(jié)點,則稱G′是G的點覆蓋。已經(jīng)講述了從程序流程圖導(dǎo)出流圖的方法。在正常情況下流圖是連通的有向圖。滿足點覆蓋標(biāo)準(zhǔn)要求選取足夠多的測試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過流圖的每個結(jié)點一次,由于流圖的每個結(jié)點與一條或多條語句相對應(yīng),顯然,點覆蓋標(biāo)準(zhǔn)和語句覆蓋標(biāo)準(zhǔn)是相同的。777.邊覆蓋圖論中邊覆蓋的定義是:如果連通圖G的子圖G″是連通的,而且包含G的所有邊,則稱G″是G的邊覆蓋。為了滿足邊覆蓋的測試標(biāo)準(zhǔn),要求選取足夠多測試數(shù)據(jù),使得程序執(zhí)行路徑至少經(jīng)過流圖中每條邊一次。通常邊覆蓋和判定覆蓋是一致的。8.路徑覆蓋路徑覆蓋的含義是,選取足夠多測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個環(huán)至少經(jīng)過一次)。787.6.2控制結(jié)構(gòu)測試(自學(xué))1.基本路徑測試2.條件測試3.循環(huán)測試基本路徑測試

在實際問題中,一個不太復(fù)雜的程序其路徑是一個龐大的數(shù)字。為了解決這一難題,只得把覆蓋的路徑數(shù)壓縮到一定的限度內(nèi),例如,循環(huán)體只執(zhí)行一次?;韭窂綔y試是在程序流程圖的基礎(chǔ)上,通過分析由控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本路徑集合,從而設(shè)計測試用例,保證這些路徑至少通過一次?;韭窂綔y試的步驟為:

基本路徑的導(dǎo)出步驟(1)以詳細設(shè)計或源程序為基礎(chǔ),導(dǎo)出程序流程圖的拓補結(jié)構(gòu)—程序圖。

(2)計算程序圖G的環(huán)路復(fù)雜性V(G)。McCabe定義程序圖的環(huán)路復(fù)雜性為此平面圖中區(qū)域的個數(shù)。區(qū)域個數(shù)為邊和結(jié)點圈定的封閉區(qū)域數(shù)加上圖形外的區(qū)域數(shù)1。例如圖(b)的V(G)=4,也可按另一種方法計算,即V(G)=判定結(jié)點數(shù)+1。(3)確定只包含獨立路徑的基本路徑集。環(huán)路復(fù)雜性可導(dǎo)出程序基本路徑集合中的獨立路徑條數(shù),這是確保程序中每個執(zhí)行語句至少執(zhí)行一次所必需的測試用例數(shù)目的上界。獨立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,在圖(b)所示的圖中,一組獨立的路徑是:

path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-9-10-1-11path4:1-2-3-6-7-9-10-1-11

從例中可知,一條新的路徑必須包含有一條新邊。這4條路徑組成了圖(b)所示的程序圖的一個基本路徑集。只要測試用例確保這些基本路徑的執(zhí)行,就可以使程序中每個可執(zhí)行語句至少執(zhí)行一次,每個條件的取“真”和取“假”分支也能得到測試?;韭窂郊皇俏ㄒ坏?,對于給定的程序圖,可以得到不同的基本路徑集。83黑盒測試著重測試軟件功能。黑盒測試并不能取代白盒測試,它是與白盒測試互補的測試方法,它很可能發(fā)現(xiàn)白盒測試不易發(fā)現(xiàn)的其他類型的錯誤。黑盒測試力圖發(fā)現(xiàn)下述類型的錯誤:①功能不正確或遺漏了功能;②界面錯誤;③數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤;④性能錯誤;⑤初始化和終止錯誤。黑盒測試技術(shù):等價劃分法、邊界值分析法、錯誤推測法、因果圖法等。7.7黑盒測試技術(shù)84

1等價類劃分法(等價分配)

把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個等價的子集(稱為等價類別或等價區(qū)間),使得每個子集中的一個典型值在測試中的作用與這一子集中所有其它值的作用相同.

等價類別或等價區(qū)間是指測試相同目標(biāo)或者暴露相同軟件缺陷的一組測試用例

85如何劃分等價類?有效等價類(合理等價類)無效等價類(不合理等價類)

劃分等價類的標(biāo)準(zhǔn):覆蓋不相交代表性86劃分等價類的規(guī)則

(1)如果輸入條件規(guī)定了取值范圍,可定義一個有效等價類和兩個無效等價類。例輸入值是學(xué)生成績,范圍是0~1000100

有效等價類0≤成績≤100無效等價類成績>100

無效等價類成績<0(2)如果輸入條件代表集合的某個元素,則可定義一個有效等價類和一個無效等價類。(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌斎胫底霾煌幚恚瑒t每個允許的輸入值是一個有效等價類,并有一個無效等價類(所有不允許的輸入值的集合)。例:輸入條件說明學(xué)歷可為:???、本科、碩士、博士四種之一,則分別取這四個值作為四個有效等價類,另外把四種學(xué)歷之外的任何學(xué)歷作為無效等價類(4)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。(5)如已劃分的等價類各元素在程序中的處理方式不同,則應(yīng)將此等價類進一步劃分成更小的等價類。用等價類劃分法設(shè)計測試用例步驟:(1)形成等價類表,每一等價類規(guī)定一個唯一的編號;(2)設(shè)計一測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類,重復(fù)這一步驟,直到所有有效等價類均被測試用例所覆蓋;(3)設(shè)計一新測試用例,使其只覆蓋一個

無效等價類,重復(fù)這一步驟直到所有無效等價類均被覆蓋;89例:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2003年1月至2008年

12月,即系統(tǒng)只能對該段期間內(nèi)的報表進行處理,如日期不在此范圍內(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è)計測試用例

測試數(shù)據(jù)期望結(jié)果覆蓋范圍200306等價類(1)(2)(3)輸入有效對表中編號為1,2,3的3個有效等價類用一個測試用例覆蓋:(1)6位數(shù)字字符(2)年在2003~2008之間(3)月在1~12之間第三步:為每一個無效等價類設(shè)至少設(shè)計一個測試用例

測試數(shù)據(jù)期望結(jié)果覆蓋范圍003MAY等價類(4)輸入無效20035等價類(5)輸入無效2003005等價類(6)輸入無效200105等價類(7)輸入無效200905等價類(8)輸入無效200300等價類(9)輸入無效200313等價類(10)輸入無效不能出現(xiàn)相同的測試用例本例的10個等價類至少需要8個測試用例例:對招干考試系統(tǒng)“輸入學(xué)生成績”子模塊設(shè)計測試錄入準(zhǔn)考證號的測試用例準(zhǔn)考證號數(shù)據(jù)格式定義:共6為數(shù)字組成,其中第一位為專業(yè)代號:1-行政專業(yè),2-法律專業(yè),3-財經(jīng)專業(yè)后5位為考生順序號,編碼范圍為:

行政專業(yè)準(zhǔn)考證號碼為:110001~111215

法律專業(yè)準(zhǔn)考證號碼為:210001~212006

財經(jīng)專業(yè)準(zhǔn)考證號碼為:310001~314015

準(zhǔn)考證號碼的等價類劃分

有效等價類:

(1)110001~111215(2)210001~212006(3)310001~314015

無效等價類:

(4)-

~110000(5)111216~210000(6)212007~31000(7)314016~+

等價類劃分即把輸入空間分解成一系列子域,軟件在一個子域內(nèi)的行為應(yīng)是等價的。

軟件錯誤分為兩類:計算錯誤域錯誤針對計算錯誤的測試方法針對域錯誤的測試方法:測試域邊界劃定的正確性2邊界值分析法邊界值分析法與等價類劃分法區(qū)別(1)邊界值分析不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件。(2)邊界值分析不僅考慮輸入條件,還要考慮輸出空間產(chǎn)生的測試情況被測試子域測試內(nèi)點測試外點

如果在懸崖峭壁邊可以自信地安全行走,平地就不在話下。如果軟件在能力達到極限時能夠運行,那么在正常情況下就不會出什么問題。軟件邊界與懸崖很類似邊界條件類型

如果軟件測試問題包含確定的邊界,那么數(shù)據(jù)類型可能是:數(shù)值字符位置數(shù)量速度地址尺寸……還要考慮數(shù)據(jù)類型的特征:第一個/最后一個最小值/最大值開始/完成空/滿最慢/最快相鄰/最遠超過/在內(nèi)……測試邊界線測試臨近邊界的合法數(shù)據(jù),以及剛超過邊界的非法數(shù)據(jù).越界測試通常簡單地加1或很小的數(shù)

(對于最大值)和減1或很小的數(shù)(對于最小值).

輸入條件報表日期的類型及長度1個數(shù)字字符5個數(shù)字字符7個數(shù)字字符有1個非數(shù)字字符全部是非數(shù)字字符6個數(shù)字字符顯示出錯顯示出錯顯示出錯顯示出錯顯示出錯輸入有效日期范圍月份范圍“報表日期(6位數(shù)字字符)”邊界值分析法測試用例測試用例說明測試數(shù)據(jù)期望結(jié)果選取理由52003520030052003.5MAY---200305月份為1月月份為12月月份<1月份>12200301200312200300200313200301200812200300200813輸入有效輸入有效顯示出錯顯示出錯輸入有效輸入有效顯示出錯顯示出錯在有效范圍邊界上選取數(shù)據(jù)僅有1個合法字符比有效長度少1比有效長度多1只有1個非法字符6個非法字符類型及長度均有效最小日期最大日期剛好小于最小日期剛好大于最大日期最小月份最大月份剛好小于最小月份剛好大于最大月份3錯誤推測法(errorguessing)根據(jù)經(jīng)驗、直覺和預(yù)感來進行測試?yán)纾阂欢ㄒ紤]建立處理下列等價類:缺省值空白空值零值無輸入條件在已經(jīng)找到軟件缺陷的地方再找找

1007.8調(diào)試調(diào)試(也稱為糾錯)作為成功測試的后果出現(xiàn),也就是說,調(diào)試是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程。雖然調(diào)試應(yīng)該而且可以是一個有序過程,但是,目前它在很大程度上仍然是一項技巧。軟件工程師在評估測試結(jié)果時,往往僅面對著軟件錯誤的癥

溫馨提示

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

評論

0/150

提交評論