第8章-軟件測(cè)試_第1頁(yè)
第8章-軟件測(cè)試_第2頁(yè)
第8章-軟件測(cè)試_第3頁(yè)
第8章-軟件測(cè)試_第4頁(yè)
第8章-軟件測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件測(cè)試第八

章8高等教育出版社高等教育電子音像出版社8.1軟件測(cè)試的基本概念一、軟件測(cè)試的目的和重要性因?yàn)殚_(kāi)發(fā)工作的前期不可避免地會(huì)引入錯(cuò)誤,測(cè)試的目的是為了發(fā)現(xiàn)和改正錯(cuò)誤,這對(duì)于某些涉及人的生命安全或重要的軍事、經(jīng)濟(jì)目標(biāo)的項(xiàng)目顯得尤其重要。1963年美國(guó)飛往火星的火箭爆炸,原因是FORTRAN程序:DO5I=1,3誤寫(xiě)為:DO5I=1.3損失1000萬(wàn)美元。1967年蘇聯(lián)“聯(lián)盟一號(hào)”宇宙飛船返回時(shí)因忽略一個(gè)小數(shù)點(diǎn),在進(jìn)入大氣層時(shí)打不開(kāi)降落傘而燒毀。二、軟件測(cè)試的特點(diǎn)1.軟件測(cè)試的開(kāi)銷大按照Boehm的統(tǒng)計(jì),軟件測(cè)試的開(kāi)銷大約占總成本的30%-50%。例如:阿波羅登月計(jì)劃中,80%的經(jīng)費(fèi)用于軟件測(cè)試。2.不能進(jìn)行“窮舉”測(cè)試

只有將所有可能的情況都測(cè)試到,才有可能檢查出所有的錯(cuò)誤。但這是不可能的:例:程序P有兩個(gè)整型輸入量X、Y,輸出量為Z,在32位機(jī)上運(yùn)行。所有的測(cè)試數(shù)據(jù)組(Xi,Yi)的數(shù)目為:232×232=264

1毫秒執(zhí)行1次,共需5億年。PXYZ3、軟件測(cè)試難度大根據(jù)上述分析,既然不能進(jìn)行

“窮舉”測(cè)試,又要查出盡可能多的錯(cuò)誤,軟件測(cè)試工作的難度大。只有選擇—— “高效的測(cè)試用例”什么是“高效的測(cè)試用例”?如何選擇“高效的測(cè)試用例”?這就是本章討論的主要問(wèn)題!三、軟件測(cè)試的基本原則3.充分注意測(cè)試中的群集現(xiàn)象。1.盡量不由程序設(shè)計(jì)者進(jìn)行測(cè)試。2.關(guān)鍵是注重測(cè)試用例的選擇。輸入數(shù)據(jù)的組成(輸入數(shù)據(jù)、預(yù)期的輸出結(jié)果)既有合理輸入數(shù)據(jù),也有不合理的輸入數(shù)據(jù)。用例既能檢查應(yīng)完成的任務(wù),也能夠檢查不應(yīng)該完成的任務(wù)。長(zhǎng)期保存測(cè)試用例。四、測(cè)試的基本步驟模塊測(cè)試整體測(cè)試功能測(cè)試預(yù)測(cè)試系統(tǒng)測(cè)試驗(yàn)收測(cè)試安裝測(cè)試概要設(shè)計(jì)審查詳細(xì)設(shè)計(jì)審查代碼審查

測(cè)試

(單元測(cè)試)(組裝測(cè)試)(有效性測(cè)試)(確認(rèn)測(cè)試){{8.2軟件測(cè)試方法軟件測(cè)試方法分為兩類:靜態(tài)分析和動(dòng)態(tài)測(cè)試一、靜態(tài)分析方法指以人工的、非形式化的方法對(duì)程序進(jìn)行分析和測(cè)試。桌前檢查 代碼會(huì)審 步行檢查步行檢查時(shí),還常使用以下分析方法:調(diào)用圖從語(yǔ)義的角度考察程序的控制路線。數(shù)據(jù)流分析圖檢查分析變量的定義和引用情況。(1)調(diào)用圖無(wú)論Y為何值,都不能夠調(diào)用子程序。即執(zhí)行ABC后,是不可能執(zhí)行路徑CDE的。READYY>0NX:=YX<0YNY調(diào)用子程序ABCDE(2)數(shù)據(jù)流分析圖節(jié)點(diǎn)--表示單個(gè)語(yǔ)句。有向邊--表示控制結(jié)構(gòu)。

d--定義

r--引用

u--未引用R:duuuuuS:uruuurY:uuddru

R=0.5W=1/SY=A**WY=E*WZ=X+YC=Z*S123456只定義不用未定義引用連續(xù)定義二、動(dòng)態(tài)測(cè)試方法通過(guò)選擇適當(dāng)?shù)臏y(cè)試用例,執(zhí)行程序。常用的方法:白盒法和黑盒法。1.白盒法分析程序的內(nèi)部邏輯結(jié)構(gòu),注意選擇適當(dāng)?shù)母采w標(biāo)準(zhǔn),設(shè)計(jì)測(cè)試用例,對(duì)主要路徑進(jìn)行盡可能多的測(cè)試。2.黑盒法

不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設(shè)計(jì)測(cè)試用例。白盒法

白盒法又稱為邏輯覆蓋法,其測(cè)試用例選擇,是按照不同覆蓋標(biāo)準(zhǔn)確定的。

語(yǔ)句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋弱強(qiáng)①語(yǔ)句覆蓋:選擇足夠的測(cè)試用例,使得程序中每個(gè)語(yǔ)句至少都能被執(zhí)行一次。②判定覆蓋:執(zhí)行足夠的測(cè)試用例,使得程序中每個(gè)判定至少都獲得一次“真”值和“假”值。③條件覆蓋:執(zhí)行足夠的測(cè)試用例,使得判定中的每個(gè)條件獲得各種可能的結(jié)果。④判定/條件覆蓋:執(zhí)行足夠的測(cè)試用例,使得判定中每個(gè)條件取到各種可能的值,并使每個(gè)判定取到各種可能的結(jié)果。⑤條件組合覆蓋:執(zhí)行足夠的例子,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。白盒法常用的覆蓋標(biāo)準(zhǔn)白盒法步驟:例:用白盒法測(cè)試以下程序段:

IF(A>1)AND(B=0)THENX=X/A;IF(A=2)OR(X>1)THENX=X+1(1)選擇一種合適的邏輯覆蓋標(biāo)準(zhǔn)。(2)按照覆蓋標(biāo)準(zhǔn)列出所有情況。(3)選擇確定測(cè)試用例。(4)驗(yàn)證分析運(yùn)行結(jié)果與預(yù)期結(jié)果。邏輯結(jié)構(gòu)白盒法舉例IF(A>1)AND(B=0)THENX=X/AIF(A=2)OR(X>1)THENX=X+1A>1ANDB=0X=X/AA=2ORX>1X=X+1YNYN邏輯結(jié)構(gòu)對(duì)各種覆蓋標(biāo)準(zhǔn)進(jìn)行的用例選擇。1.語(yǔ)句覆蓋使得程序中每個(gè)語(yǔ)句至少都能被執(zhí)行一次。滿足語(yǔ)句覆蓋的情況:

執(zhí)行路徑:ace選擇用例:[(2,0,4),(2,0,3)]

用例格式:[輸入(A,B,X),輸出(A,B,X)]A>1ANDB=0X=X/AA=2ORX>1X=X+1abcdeYNYN2.判定覆蓋使得程序中每個(gè)判定至少為TRUE或FALSE各一次。覆蓋情況:應(yīng)執(zhí)行路徑ace∧

abd 或:acd

abe選擇用例(其一):⑴[(2,0,4),(2,0,3)]ace[(1,1,1),(1,1,1)]abd⑵[(2,1,1),(2,1,2)]abe[(3,0,3),(3,1,1)]acdA>1ANDB=0X=X/AA=2ORX>1X=X+1abcdeYNYN即執(zhí)行ABC后,是不可能執(zhí)行路徑CDE的。3.條件覆蓋使得判定中的每個(gè)條件獲得各種可能的結(jié)果。應(yīng)滿足以下覆蓋情況:判定一:

A>1,A≤1,B=0,B≠0判定二:A=2,A≠2,X>1,X≤1選擇用例:

[(2,0,4),(2,0,3)][(1,1,1),(1,1,1)]2A≤1A≠20B=04X>11A>1A=21B≠01X≤1注意:[(1,0,3),(1,0,4)] [(2,1,1),(2,1,2)]滿足條件覆蓋,但不滿足判斷覆蓋。A>1ANDB=0X=X/AA=2ORX>1X=X+1abcdeYNYN4.判定/條件覆蓋

同時(shí)滿足判斷覆蓋和條件覆蓋。應(yīng)滿足以下覆蓋情況:

條件:A>1,A≤1,B=0,B≠0 A=2,A≠2,X>1,X≤1應(yīng)執(zhí)行路徑ace∧

abd 或:acd

abe選擇用例:

[(2,0,4),(2,0,3)](ace)[(1,1,1),(1,1,1)](abd)A>1ANDB=0X=X/AA=2ORX>1X=X+1abcdeYNYN5.組合覆蓋使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。A>1X=X/AA=2X=X+1abcdeB=0X>1YNYNYNYN編譯系統(tǒng)下的執(zhí)行情況:部分路徑未被執(zhí)行。滿足以下覆蓋情況:①A>1,B=0②A>1,B≠0③A≤1,B=0

④A≤1,B≠0⑤A=2,X>1

⑥A=2,X≤1

⑦A≠2,X>1

⑧A≠2,X≤1選擇用例:[(2,0,4),(2,0,3)]①⑤[(2,1,1),(2,1,2)]②⑥[(1,0,3),(1,0,4)]③⑦[(1,1,1),(1,1,1)]④⑧等價(jià)分類法邊值分析法錯(cuò)誤推測(cè)法因果圖法黑盒法

不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設(shè)計(jì)測(cè)試用例。1.等價(jià)分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域劃分為有限個(gè)等價(jià)區(qū)段--“等價(jià)類”,從等價(jià)類中選擇出的用例,具有“代表性”。等價(jià)類分為:有效等價(jià)類--對(duì)于程序的規(guī)格說(shuō)明,是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。無(wú)效等價(jià)類--對(duì)于程序的規(guī)格說(shuō)明,是不合理的、沒(méi)有意義的輸入數(shù)據(jù)構(gòu)成的集合。等價(jià)分類法步驟

應(yīng)按照輸入條件(如輸入值的范圍,值的個(gè)數(shù),值的集合,輸入條件必須如何)劃分為有效等價(jià)類和無(wú)效等價(jià)類。例如:每個(gè)學(xué)生可選修1-3門課程可以劃分一個(gè)有效等價(jià)類:選修1-3門課程??梢詣澐謨蓚€(gè)無(wú)效等價(jià)類:未選修課,選修課超過(guò)3門。①劃分“等價(jià)類”

顯然,關(guān)鍵是如何劃分等價(jià)類A為每個(gè)等價(jià)類編號(hào);B使一個(gè)測(cè)試用例盡可能覆蓋多個(gè)有效等價(jià)類C特別要注意:一個(gè)測(cè)試用例只能覆蓋一個(gè)無(wú)效等價(jià)類。②選擇測(cè)試用例2.邊值分析法

基本思想:選擇等價(jià)類的邊緣值作為測(cè)試用例,讓每個(gè)等價(jià)類的邊界都得到測(cè)試,選擇測(cè)試用例既考慮輸入又考慮輸出。分析步驟:

A先劃分等價(jià)類。

B選擇測(cè)試用例,測(cè)試等價(jià)類邊界。邊界選擇原則:

A按照輸入值范圍的邊界。

B按照輸入/輸出值個(gè)數(shù)的邊界。

C輸出值域的邊界。

D輸入/輸出有序集的邊界。

A按照輸入值范圍的邊界。例如:輸入值的范圍是-1.0~1.0,則可選擇用例:–1.0、1.0、-1.001、1.001。

B按照輸入/輸出值個(gè)數(shù)的邊界。

例如:輸入文件可有1~255個(gè)記錄,則設(shè)計(jì)用例:文件的記錄數(shù)為0個(gè)、1個(gè)、255個(gè)、256個(gè)。

C輸出值域的邊界。

例如:檢索文獻(xiàn)摘要,最多4篇。設(shè)計(jì)用例:可檢索0篇、1篇、4篇,和5篇(錯(cuò)誤)。

D輸入/輸出有序集(如順序文件、線性表)的邊界。

應(yīng)選擇第一個(gè)元素和最后一個(gè)元素。邊值分析法舉例黑盒法應(yīng)用實(shí)例

對(duì)FORTRAN編譯系統(tǒng)中的DIMENSION語(yǔ)句進(jìn)行測(cè)試。

語(yǔ)句格式為:DIMENSIONad[,ad]…

其中:ad為數(shù)組描述符,形式為n(d[,]…)其中:n-數(shù)組名,字母打頭的字母數(shù)字串,長(zhǎng)度不超過(guò)6個(gè)字符。d為界偶(1-7個(gè)):[ld:]ndld和nd

的值為1~65535,ld默認(rèn)為1。輸入條件合理的等價(jià)類不合理的等價(jià)類數(shù)組描述的個(gè)數(shù)1個(gè)(1)、多于1個(gè)(2)沒(méi)有數(shù)組描述(3)數(shù)組名的字符數(shù)1~6個(gè)(4)0(5),>6(6)數(shù)組名有字母(7)有數(shù)字(8)有其他字符(9)數(shù)組名的第1個(gè)字符為字母是(10)不是(11)維數(shù)1~7(12)0(13),>7(14)上界常數(shù)(15)數(shù)組元素名(16………………共40個(gè)等價(jià)類對(duì)上述語(yǔ)法進(jìn)行分析,劃分等價(jià)類。3.錯(cuò)誤推測(cè)法憑經(jīng)驗(yàn)或直覺(jué)推測(cè)可能的錯(cuò)誤,列出程序中可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,選擇測(cè)試用例。把輸入條件視為“因”,把輸出條件視為“果”,將黑盒看成是從因到果的網(wǎng)絡(luò)圖,采用邏輯圖的形式來(lái)表達(dá)功能說(shuō)明書(shū)中輸入條件的各種組合與輸出的關(guān)系。根據(jù)這種關(guān)系可選擇高效的測(cè)試用例。因果圖是一種形式化語(yǔ)言,是一種組合邏輯網(wǎng)絡(luò)圖。4.因果圖法4.因果圖法

⑴因果圖的基本符號(hào) 0-表示“不出現(xiàn)” 1-表示“出現(xiàn)”

恒等 若a為1,則b為1,否則b為0。

“非”函數(shù) 若a為1,則b為0,否則b為1。

“或”函數(shù)若a或b為1,則d為1,否則d為0。

“與”函數(shù)若a與b同為1,則d為1,否則d為0。abababd∨abd∧4.因果圖法對(duì)“與”、“或”函數(shù)的限制符號(hào)

E約束(異)—排斥 即a、b不能同時(shí)為1。

I約束(或)—包容

a、b、c不能同時(shí)為0。

O約束(唯一)—選一

a、b中僅有一個(gè)為1。

R約束(要求)—需要

a為1時(shí),b必須為1

M約束(強(qiáng)制)—屏蔽若a為1時(shí),則b強(qiáng)制為0。abEabcIabRabOabM⑵因果圖法的步驟

分析規(guī)范,即將問(wèn)題分為若干個(gè)工作的步驟。標(biāo)識(shí)出規(guī)范中的原因與結(jié)果。 原因—輸入條件 結(jié)果—輸出或系統(tǒng)變換將因果圖轉(zhuǎn)換為有限項(xiàng)判斷表。將判斷表的每一列,轉(zhuǎn)換為一個(gè)測(cè)試用例。

分析規(guī)范語(yǔ)義、內(nèi)容,轉(zhuǎn)換為因果圖。

⑶因果圖法應(yīng)用舉例規(guī)范:文件名第一列字符必須為A或B,第二列字符必須為數(shù)字。滿足則修改文件。第一字符不正確發(fā)出信息X12,第二個(gè)字符不正確發(fā)出信息X13。①分析規(guī)范

原因 結(jié)果1—第一列字符為A50—修改文件2—第一列字符為B51—發(fā)信息X123—第二列字符為數(shù)字52—發(fā)信息X13②畫(huà)出因果圖中間結(jié)點(diǎn)是導(dǎo)出結(jié)果的進(jìn)一步原因。

考慮到原因1、2不可能同時(shí)為1,加上E約束。1111∨5150352∧12E發(fā)X12發(fā)X13

修改文件③將因果圖轉(zhuǎn)換為判斷表

12345678條件原因①11110000②11001100③10101010111100動(dòng)作結(jié)果000011101000010101測(cè)試用例A3A8AA?B5B4BNB!C2X6DYPI115150528.3軟件測(cè)試的步驟測(cè)試步驟及策略所有測(cè)試過(guò)程都應(yīng)采用綜合測(cè)試策略;即先作靜態(tài)分析,再作動(dòng)態(tài)測(cè)試。并事先制訂測(cè)試計(jì)劃。測(cè)試過(guò)程通常可分4步進(jìn)行:?jiǎn)卧獪y(cè)試單元測(cè)試單元測(cè)試被測(cè)模塊被測(cè)模塊集成測(cè)試設(shè)計(jì)信息已測(cè)試的模塊確認(rèn)測(cè)試已集成的模塊軟件需求系統(tǒng)測(cè)試已確認(rèn)的軟件可交付的軟件系統(tǒng)其他元素一、模塊測(cè)試(ModuleTesting)1.測(cè)試內(nèi)容模塊模塊接口測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試重要路徑測(cè)試錯(cuò)誤處理測(cè)試邊界條件測(cè)試I/O參數(shù)值的個(gè)數(shù)、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數(shù)據(jù)說(shuō)明是否正確、一致,變量及其初值定義是否正確等。檢查“錯(cuò)誤處理程序”本身的錯(cuò)誤。邊界條件常包括循環(huán)邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結(jié)構(gòu)。也稱單元測(cè)試(unittesting)2.模塊測(cè)試步驟

考慮到被測(cè)模塊與其他模塊的聯(lián)系,因此測(cè)試時(shí)需要使用兩類輔助模塊來(lái)模擬其他模塊。驅(qū)動(dòng)模塊(driver)--模擬主程序功能,用于向被測(cè)模塊傳遞數(shù)據(jù),接收、打印從被測(cè)模塊返回的數(shù)據(jù)。樁模塊(stub)--又稱為假模塊,用于模擬那些由被測(cè)模塊所調(diào)用的下屬模塊功能。一般驅(qū)動(dòng)模塊比樁模塊容易設(shè)計(jì)。但都是額外開(kāi)銷。測(cè)試方法以白盒法為主。被測(cè)模塊驅(qū)動(dòng)模塊樁模塊樁模塊樁模塊二、組裝測(cè)試(IntegrationTesting)1.組裝測(cè)試的任務(wù)①確定模塊組裝方案,將經(jīng)過(guò)測(cè)試的模塊組裝為一個(gè)完整的系統(tǒng)。組裝方案分為漸增式及非漸增式。②測(cè)試方法以黑盒法為主,按照組裝方案進(jìn)行測(cè)試。也稱為聯(lián)合測(cè)試或集成測(cè)試,重點(diǎn)測(cè)試模塊的接口部分,需設(shè)計(jì)測(cè)試過(guò)程使用的驅(qū)動(dòng)模塊或樁模塊。問(wèn)題:漸增式與非漸增式各有何優(yōu)、缺點(diǎn)?為什么通常采用漸增式?2.漸增式組裝測(cè)試漸增式是先進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng),每連接一個(gè)模塊進(jìn)行一次測(cè)試。兩種方案:設(shè)計(jì)驅(qū)動(dòng)模塊或樁模塊,對(duì)每一個(gè)新組裝的子系統(tǒng)進(jìn)行測(cè)試,對(duì)發(fā)現(xiàn)問(wèn)題較多的子系統(tǒng)或模塊應(yīng)該用白盒法作回歸測(cè)試。自頂而下增值自底而上增值自頂而下增值M1M4M3M2M6M5程序模塊示意圖S5M1S1S1S1S2S2S2S3S3S3第一步,測(cè)試主控模塊M1設(shè)計(jì)樁模塊S1、S2、S3,模擬被M1調(diào)用的M2、M3、M4。M2M3M4第二步,依次用M2、M3、M4替代樁模塊S1、S2、S3,每替代一次進(jìn)行一次測(cè)試。S4S4S4S5S5第三步,對(duì)由主控模塊M1和模塊M2、M3、M4構(gòu)成的子系統(tǒng)進(jìn)行測(cè)試,設(shè)計(jì)樁模塊S4、S5。M5M6第四步,依次用模塊M5和M6替代樁模塊S4、S5,并同時(shí)進(jìn)行新的測(cè)試。組裝測(cè)試完畢。自底而上增值M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把已測(cè)試的子系統(tǒng)按程序結(jié)構(gòu)連接起來(lái)完成程序整體的組裝測(cè)試。D4D4D4D5D5D5M1M4M3M2M6M5程序模塊示意圖第一步,對(duì)最底層的模塊M3、M5、M6進(jìn)行測(cè)試,設(shè)計(jì)驅(qū)動(dòng)模塊D1、D2、D3來(lái)模擬調(diào)用。第三步,設(shè)計(jì)驅(qū)動(dòng)模塊D4、D5和D6模擬調(diào)用,分別對(duì)新子系統(tǒng)進(jìn)行測(cè)試。第二步,用實(shí)際模塊M2、M1和M4替換驅(qū)動(dòng)模塊D1、D2、D3。D6深度優(yōu)先與寬度優(yōu)先無(wú)論是自頂而下增值還是自底而上增值,還可選擇深度優(yōu)先或者寬度優(yōu)先增值。

舉例:按自頂而下增值法,寫(xiě)出下圖中分別按照深度優(yōu)先或者寬度優(yōu)先增值的模塊組裝次序。ABCDHGJEFIKLMN問(wèn)題(1)自頂而下增值與自底而上增值各有何優(yōu)、缺點(diǎn)?(2)為什么在實(shí)際的組裝測(cè)試中,都應(yīng)該采用混合增值的方法?(3)請(qǐng)自己設(shè)計(jì)2~3個(gè)混合增值的測(cè)試方法。確定集成過(guò)程的原則

自頂而下增值優(yōu)點(diǎn):能夠盡早發(fā)現(xiàn)系統(tǒng)主控方面的問(wèn)題。缺點(diǎn):無(wú)法驗(yàn)證樁模塊是否完全模擬了下屬模塊的功能。

自底而上增值優(yōu)點(diǎn):驅(qū)動(dòng)模塊較容易編寫(xiě)樁模塊,能夠盡早查出底層涉及較復(fù)雜的算法和實(shí)際的I/O模塊中的錯(cuò)誤。缺點(diǎn):最后才能發(fā)現(xiàn)系統(tǒng)主控方面的問(wèn)題。集成過(guò)程的原則①盡早測(cè)試關(guān)鍵模塊。②盡早測(cè)試包含I/O的模塊。3.混合增值常見(jiàn)的混合增值方案:衍變的自頂而下先自底而上集成子系統(tǒng),再自頂而下集成總系統(tǒng)。自底而上—自頂而下增值對(duì)含有讀操作的子系統(tǒng)采用自底而上。對(duì)含有寫(xiě)操作的子系統(tǒng)采用自頂而下?;貧w測(cè)試在回歸測(cè)試中自底而上,對(duì)其余部分(尤其是對(duì)修改過(guò)的子系統(tǒng))采用自頂而下。三、確認(rèn)測(cè)試(validationtesting)1.任務(wù)又稱為有效性測(cè)試或功能測(cè)試。其任務(wù)是驗(yàn)證系統(tǒng)的功能、性能等特性是否符合需求規(guī)格說(shuō)明。選擇測(cè)試人員選擇測(cè)試用例實(shí)際運(yùn)行測(cè)試軟件計(jì)劃用戶文檔開(kāi)發(fā)文檔源程序文本支持環(huán)境有效性測(cè)試軟件配置審查管理機(jī)構(gòu)裁決專家鑒定會(huì)交用戶運(yùn)行維護(hù)測(cè)試報(bào)告軟件配置2.確認(rèn)測(cè)試步驟(1)有效性測(cè)試制定測(cè)試計(jì)劃,運(yùn)用黑盒法,驗(yàn)證軟件特性是否與需求符合。(2)軟件配置復(fù)查

軟件配置——指軟件工程過(guò)程中所產(chǎn)生的所有信息項(xiàng):文檔、報(bào)告、程序、表格、數(shù)據(jù)。隨著軟件工程過(guò)程的進(jìn)展軟件配置項(xiàng)(SCIsoftwareConfigurationItem)快速增加和變化。應(yīng)復(fù)查SCI是否齊全。 (3)測(cè)試和測(cè)試

測(cè)試是在開(kāi)發(fā)機(jī)構(gòu)的監(jiān)督下,由個(gè)別用戶在確認(rèn)測(cè)試階段后期對(duì)軟件進(jìn)行測(cè)試,目的是評(píng)價(jià)軟件的FLURPS(功能、局域化、可使用性、可靠性、性能和支持),注重界面和特色。

測(cè)試由支持軟件預(yù)發(fā)行的客戶對(duì)FLURPS進(jìn)行測(cè)試,主要目的是測(cè)試系統(tǒng)的可支持性。

FunctionTesting功能測(cè)試

LocalAreaTesting局域化測(cè)試

UsabilityTesting可使用性測(cè)試

RegressionTesting回歸測(cè)試

PerformanceTesting性能測(cè)試

SupportabilityTesting可支持性測(cè)試四、系統(tǒng)測(cè)試(systemtesting)將經(jīng)過(guò)確認(rèn)測(cè)試的軟件,與計(jì)算機(jī)硬件、外設(shè)、支持軟件等一起,在實(shí)際運(yùn)行環(huán)境下測(cè)試。五、驗(yàn)收測(cè)試(acceptancetesting)驗(yàn)收測(cè)試是以用戶為主的測(cè)試。軟件工程課程設(shè)計(jì)的驗(yàn)收測(cè)試安排在第18周進(jìn)行。1.步驟(1)由課題組根據(jù)測(cè)試用例,自己演示系統(tǒng)所有功能。(2)由教師進(jìn)行測(cè)試。軟件工程課程設(shè)計(jì)驗(yàn)收表文檔文檔數(shù)量文檔質(zhì)量文檔與系統(tǒng)一致性創(chuàng)新性總體(5分)(5分)(3分)(2分)(15分)系統(tǒng)運(yùn)行系統(tǒng)運(yùn)行功能、性能系統(tǒng)結(jié)構(gòu)總體設(shè)計(jì)合理性用戶界面操作簡(jiǎn)便、幫助信息有無(wú)創(chuàng)新系統(tǒng)特色總體(10分)(4分)(4分)(2分)(20分)其他個(gè)人工作量驗(yàn)收操作獨(dú)立分析解決問(wèn)題能力團(tuán)結(jié)協(xié)作精神愛(ài)護(hù)公物遵守紀(jì)律總體(2分)(2分)(0.5分)(0.5分)(5分)8.3.6綜合測(cè)試策略

軟件測(cè)試是保證軟件可靠性的主要手段,也是軟件開(kāi)發(fā)過(guò)程中最艱巨、最繁雜的任務(wù)。軟件測(cè)試方案是測(cè)試階段的關(guān)鍵技術(shù)問(wèn)題,基本目標(biāo)是選擇最少量的高效測(cè)試用例,從而盡可能多地發(fā)現(xiàn)軟件中的問(wèn)題。因此,無(wú)論哪一個(gè)測(cè)試階段,都應(yīng)該采用綜合測(cè)試策略,才能夠?qū)崿F(xiàn)測(cè)試的目標(biāo)。

一般都應(yīng)該先進(jìn)行靜態(tài)測(cè)試,再考慮動(dòng)態(tài)測(cè)試。

驗(yàn)收測(cè)試(AcceptanceTesting),是以用戶為主的測(cè)試,測(cè)試過(guò)程、方法和測(cè)試內(nèi)容與系統(tǒng)測(cè)試基本相同。有時(shí)也將驗(yàn)收測(cè)試與系統(tǒng)測(cè)試合二為一,此時(shí),參加測(cè)試的人員最好包括:有經(jīng)驗(yàn)的系統(tǒng)測(cè)試專家,用戶代表,軟件開(kāi)發(fā)人員及QA(質(zhì)量保證)人員也應(yīng)參加。8.4面向?qū)ο蟮臏y(cè)試

而面向?qū)ο蟮臏y(cè)試貫穿軟件開(kāi)發(fā)的全過(guò)程,是與開(kāi)發(fā)過(guò)程密切相關(guān)而又分離出來(lái)的過(guò)程。

面向?qū)ο蟮臏y(cè)試,既要使用許多傳統(tǒng)的成熟的軟件測(cè)試方法和技術(shù),也有其不同的特點(diǎn);主要反映在測(cè)試對(duì)象和內(nèi)容的不同。

傳統(tǒng)的觀點(diǎn)認(rèn)為測(cè)試要在編碼之后才進(jìn)行,主要測(cè)試的對(duì)象是程序代碼。8.4.1面向?qū)ο鬁y(cè)試的特點(diǎn)1.強(qiáng)調(diào)需求或設(shè)計(jì)的測(cè)試,通常以兩種方式進(jìn)行:

在沒(méi)有代碼的情況下進(jìn)行測(cè)試;在有代碼的情況下進(jìn)行測(cè)試。2.在傳統(tǒng)測(cè)試方法的基礎(chǔ)上,根據(jù)面向?qū)ο蟮闹饕匦裕枰淖儨y(cè)試策略和方法。例如:封裝性對(duì)數(shù)據(jù)的隱蔽,減少了對(duì)數(shù)據(jù)非法操作,可簡(jiǎn)化該類測(cè)試。繼承性提高了代碼復(fù)用性,但錯(cuò)誤也會(huì)以同樣方式被復(fù)用。多態(tài)性提供強(qiáng)大的處理能力,但也增加測(cè)試的復(fù)雜性。8.4.2面向?qū)ο鬁y(cè)試類型分析與設(shè)計(jì)模型測(cè)試類測(cè)試交互測(cè)試系統(tǒng)(子系統(tǒng))測(cè)試驗(yàn)收和發(fā)布測(cè)試

采用正式技術(shù)評(píng)審的方法,檢查分析與設(shè)計(jì)模型的正確性、完整性和一致性。模型測(cè)試方法包括:

用例場(chǎng)景測(cè)試;

系統(tǒng)原型走查;

需求模型一致性檢查;

分析模型的檢查和走查。8.4.2面向?qū)ο鬁y(cè)試類型分析與設(shè)計(jì)模型測(cè)試類測(cè)試交互測(cè)試系統(tǒng)(子系統(tǒng))測(cè)試驗(yàn)收和發(fā)布測(cè)試

類測(cè)試即傳統(tǒng)測(cè)試中的單元測(cè)試,即驗(yàn)證類的實(shí)現(xiàn)與類的規(guī)約是否一致的活動(dòng)。完整的類測(cè)試包括:類屬性的測(cè)試

類操作的測(cè)試

可能狀態(tài)下的對(duì)象測(cè)試

注意:不能“孤立”進(jìn)行測(cè)試,操作測(cè)試應(yīng)該包括其可能被調(diào)用的各種情況。8.4.2面向?qū)ο鬁y(cè)試類型分析與設(shè)計(jì)模型測(cè)試類測(cè)試交互測(cè)試系統(tǒng)(子系統(tǒng))測(cè)試驗(yàn)收和發(fā)布測(cè)試交互測(cè)試用于代替?zhèn)鹘y(tǒng)測(cè)試方法中的集成測(cè)試。將類進(jìn)行聯(lián)合測(cè)試,以確定它們能否在一起共同工作。交互測(cè)試的方法有:

用例或基于場(chǎng)景的測(cè)試

線程測(cè)試

對(duì)象的測(cè)試8.4.2面向?qū)ο鬁y(cè)試類型分析與設(shè)計(jì)模型測(cè)試類測(cè)試交互測(cè)試系統(tǒng)(子系統(tǒng))測(cè)試驗(yàn)收和發(fā)布測(cè)試

測(cè)試系統(tǒng)或獨(dú)立子系統(tǒng),確保系統(tǒng)無(wú)明顯故障,并滿足用戶需求。系統(tǒng)測(cè)試包括:

功能測(cè)試

壓力測(cè)試

安全測(cè)試

兼容性測(cè)試

安裝測(cè)試

恢復(fù)測(cè)試8.4.2面向?qū)ο鬁y(cè)試類型分析與設(shè)計(jì)模型測(cè)試類測(cè)試交互測(cè)試系統(tǒng)(子系統(tǒng))測(cè)試驗(yàn)收和發(fā)布測(cè)試

驗(yàn)收測(cè)試:交付用戶前的系統(tǒng)測(cè)試。發(fā)布測(cè)試:為了確保系統(tǒng)安裝軟件包能夠正常交付使用。8.4.3分析模型測(cè)試2.需求測(cè)試可以較早地發(fā)現(xiàn)需求中問(wèn)題如:不合理的項(xiàng)目、錯(cuò)誤地理解了用戶需求的項(xiàng)目等問(wèn)題,避免對(duì)于成本和資源的消耗。1.需求的質(zhì)量影響并決定了設(shè)計(jì)的質(zhì)量在軟件開(kāi)發(fā)過(guò)程模型中,需求、設(shè)計(jì)和編碼總是有一定的時(shí)序特性。而且,需求模型、設(shè)計(jì)模型和實(shí)現(xiàn)代碼之間還具備解釋特性。一、分析模型測(cè)試的重要性3.減少需求的模糊性

用戶需求是用戶對(duì)待實(shí)現(xiàn)的系統(tǒng)的要求,通常以一種非正規(guī)的形式給出,具有一定的模糊性。這種模糊性帶入設(shè)計(jì)甚至代碼中,將可能引發(fā)幾倍甚至幾十倍的錯(cuò)誤,這必將極大地消耗系統(tǒng)的資源和成本。

測(cè)試實(shí)際上也是一個(gè)項(xiàng)目。測(cè)試也有需求、設(shè)計(jì)和實(shí)現(xiàn),并且測(cè)試本身也會(huì)有測(cè)試(測(cè)試中的測(cè)試)。測(cè)試作為項(xiàng)目開(kāi)發(fā)活動(dòng)中的一部分,在時(shí)間上應(yīng)該有明確的要求,測(cè)試計(jì)劃對(duì)于測(cè)試來(lái)說(shuō)也是至關(guān)重要的。

UML分析模型的每個(gè)模式,從嚴(yán)格意義上說(shuō)都應(yīng)該經(jīng)過(guò)測(cè)試。實(shí)際上,通常對(duì)用例模型、類對(duì)象模型以及用例中典型場(chǎng)景進(jìn)行測(cè)試。二、測(cè)試過(guò)程通常測(cè)試步驟如下:測(cè)試用例模型測(cè)試某些用例中的典型場(chǎng)景

類及對(duì)象模型某些類測(cè)試其狀態(tài)模型

單個(gè)用例測(cè)試采取典型應(yīng)用場(chǎng)景的測(cè)試方法,用例模型的測(cè)試相當(dāng)于系統(tǒng)測(cè)試,測(cè)試的主要目標(biāo)是用例模型對(duì)于用戶需求的可跟蹤性。以系統(tǒng)的用戶為主要的出發(fā)點(diǎn)設(shè)計(jì)測(cè)試用例,通過(guò)模擬某個(gè)系統(tǒng)用戶的行為來(lái)測(cè)試整個(gè)系統(tǒng),對(duì)于該用戶的服務(wù)提供情況,從而檢查系統(tǒng)功能的完整性,用戶需求可跟蹤性等情況。用例模型的測(cè)試從系統(tǒng)用戶的角度測(cè)試系統(tǒng)的服務(wù),并不關(guān)心每個(gè)測(cè)試用例所實(shí)現(xiàn)的功能如何,所以應(yīng)該是黑盒測(cè)試。三、用例模型的測(cè)試

下面以一個(gè)訂貨中心系統(tǒng)的用例模型為例說(shuō)明測(cè)試用例的設(shè)計(jì)。

識(shí)別5個(gè)主要的系統(tǒng)角色(用戶):

管理者(Manager)、發(fā)貨人員(Shipper)

收款人員(Tollcollector)、商務(wù)客戶(Customer)

信用卡(Creditcard)

從各個(gè)角色出發(fā),通過(guò)下邊的問(wèn)題識(shí)別用例:

角色要求系統(tǒng)提供的功能有哪些?系統(tǒng)在提供這些功能的時(shí)候該角色需要做什么?角色需要?jiǎng)?chuàng)建、閱讀、銷毀或存儲(chǔ)系統(tǒng)的哪些信息?系統(tǒng)中的哪些事件需要通知該角色?以管理者為例:(1)管理者要求系統(tǒng)為他提供什么功能?管理者需要做哪些工作?

答:管理者要求系統(tǒng)提供:

a.接受顧客訂貨請(qǐng)求并創(chuàng)建訂單;

b.計(jì)算訂單的價(jià)格;

c.根據(jù)訂單信息選擇倉(cāng)庫(kù),并將訂單發(fā)送給倉(cāng)庫(kù);

d.查詢訂單貨物發(fā)送情況;

e.查詢客戶訂單付款情況;

f.評(píng)價(jià)商務(wù)結(jié)果;

g.顧客退貨處理;

h.把倉(cāng)庫(kù)返回的訂單發(fā)送到收費(fèi)處;

i.商品價(jià)格更新。管理者需要做:生成訂單;查詢訂單時(shí)輸入訂單號(hào)。(2)管理者需要閱讀創(chuàng)建、銷毀、更新或者存儲(chǔ)系統(tǒng)哪些信息?答:信息包括:訂單、職員(倉(cāng)庫(kù)人員、收費(fèi)人員等)信息、顧客信息、物品條目及價(jià)格信息、倉(cāng)庫(kù)信息和稅務(wù)信息。(3)系統(tǒng)中的事件一定要告訴管理者嗎?答:是。這些事件包括:倉(cāng)庫(kù)有關(guān)物品短缺以致無(wú)法滿足某訂單;訂單數(shù)據(jù)出現(xiàn)錯(cuò)誤;顧客超過(guò)期限未付款??梢?jiàn),管理者要使用系統(tǒng)的10十個(gè)功能,因此至少可以設(shè)計(jì)出10個(gè)測(cè)試用例。

以第三條功能“根據(jù)訂單信息選擇倉(cāng)庫(kù),并將訂單發(fā)送給該倉(cāng)庫(kù)”為例,說(shuō)明用例的選擇。假設(shè)訂貨中心共有三個(gè)倉(cāng)庫(kù),管理者要決定應(yīng)該選擇哪個(gè)倉(cāng)庫(kù)處理訂單。倉(cāng)庫(kù)名稱倉(cāng)庫(kù)位置存貨品名及數(shù)量訂單處理客戶信譽(yù)度A東城G1(200),G5(100),G6(1000),G10(70),G11(90)85B西城G1(1000),G2(100),G5(550),G8(150),G10(980)95C北城G1(220),G4(300),G5(350),G7(400),G10(700)80訂單主要信息:訂單號(hào)、送貨地點(diǎn)、貨物名稱及數(shù)量等。管理者考慮將訂單分配到某倉(cāng)庫(kù)的因素:

(1)首先倉(cāng)庫(kù)必須能夠滿足訂單上的貨物要求;

(2)選擇地理位置與發(fā)貨點(diǎn)較近的倉(cāng)庫(kù)發(fā)貨;

(3)信譽(yù)滿意度越高的客戶就越應(yīng)該以較高的服務(wù)質(zhì)量來(lái)回報(bào)。結(jié)合考慮上面三個(gè)因素,以最少的成本取得最好的收益,三個(gè)訂單信息如下:訂單號(hào)送貨地點(diǎn)貨物名稱及數(shù)量客戶信譽(yù)訂單1北城某集團(tuán)公司G1(200),G5(100),G10(40)95訂單2東城某街道

G5(10),G6(5)80訂單3北城某街道

G4(10)85倉(cāng)庫(kù)名稱倉(cāng)庫(kù)位置存貨品名及數(shù)量訂單處理客戶信譽(yù)度A東城G1(200),G5(100),G6(1000),G10(70),G11(90)85B西城G1(1000),G2(100),G5(550),G8(150),G10(980)95C北城G1(220),G4(300),G5(350),G7(400),G10(700)80訂單號(hào)送貨地點(diǎn)貨物名稱及數(shù)量客戶信譽(yù)訂單1北城某集團(tuán)公司G1(200),G5(100),G10(40)95訂單2東城某街道

G5(10),G6(5)80訂單3北城某街道

G4(10)85測(cè)試用例1:輸入:訂單1預(yù)期結(jié)果:選擇倉(cāng)庫(kù)B來(lái)處理訂單(三個(gè)均可,大宗訂單,客戶信譽(yù)度高)。測(cè)試用例2:輸入:訂單2

預(yù)期結(jié)果:選擇倉(cāng)庫(kù)A來(lái)處理訂單(個(gè)人訂單,客戶信譽(yù)一般)。測(cè)試用例3:輸入:訂單3

預(yù)期結(jié)果:選擇倉(cāng)庫(kù)C來(lái)處理訂單。

以上測(cè)試未涉及某個(gè)具體用例,體現(xiàn)了用例模型測(cè)試和用例測(cè)試的區(qū)別。8.4.4類的測(cè)試

類測(cè)試即傳統(tǒng)測(cè)試中的單元測(cè)試,即驗(yàn)證類的實(shí)現(xiàn)與類的規(guī)約是否一致的活動(dòng)。

類測(cè)試包括:類屬性的測(cè)試、類操作的測(cè)試等。

例2Date類是一個(gè)描述日期的類,其屬性為三個(gè)成員變量:年、月、日,在Date類中,操作decrease()是使Date類的對(duì)象改變?yōu)楫?dāng)前日期的前一天。printDate()是打印日期信息。而Date類的三個(gè)成員變量所屬的類是calendarUnit類的子類。在calendarUnit類中,也有操作decrease(),并通過(guò)繼承關(guān)系在Day、Month、Yers三個(gè)類中重寫(xiě)。設(shè)計(jì)測(cè)試用例,對(duì)Date類的操作decrease()進(jìn)行測(cè)試。8.4.4類的測(cè)試datedd:Daymm:Monthyy:YersDate(pDay:integer,pMonth:integer,pYers:integer)decrease(argname)printDate()calendarUnitcurrentVal:IntegerCalenderUnit(pVal:Integer)SetValue(pVal:Integer)decrease()DayMonthYers注意:操作測(cè)試應(yīng)該考慮其可能被調(diào)用的各種情況。圖8.16calendarUnit類的繼承關(guān)系calendarUnitcurrentVal:IntegerCalenderUnit(pVal:Integer)SetValue(pVal:Integer)decrease():BooleanDaymm:MonthDay(pDay:integer,pMonth:Month)setDay(pDay:integer,pMonth:Month)getDay():integerdecrease():BooleanYersYear(pYear:Integer)getYear():Intgerdecrease():BooleanisLeap():BooleanMonthyy:Yearsizeindex:integer[]={31,28,31,30,31,30,3131,30,31,30,31}Month(pMonth::integer,pYear:Year)get(Month():integergetMonthSize():Integerdecrease():Boolean例如:對(duì)date類中的decrease方法進(jìn)行測(cè)試,在設(shè)計(jì)測(cè)試用例時(shí),采用等價(jià)分類法。劃分等價(jià)類時(shí)要考慮邊界及閏年等情況。有效等價(jià)類:D1=|一個(gè)月的第一天與最后一天之間|D2=|一個(gè)月的第一天|D3=|1月1日|M1=|前一個(gè)月是30天|M2=|前一個(gè)月是31天|M3=|前一個(gè)月是2月|Y1=|非閏年|Y2=|閏年|Y3=|2005年|無(wú)效等價(jià)類:D4=|<本月的第一天|D4=|>本月的最后一天|M4=|<1|M5=|>12|Y=|<0|用例ID月日年預(yù)期結(jié)果171919981998年7月18日291920042004年9月18日331920002000年3月18日47119981998年6月30日59120042004年8月31日63119981998年2月28日73120042004年2月29日81119981997年12月31日91120042003年12月31日101120001999年12月31日11701998無(wú)效輸入12732200

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論