軟件工程軟件測試課件_第1頁
軟件工程軟件測試課件_第2頁
軟件工程軟件測試課件_第3頁
軟件工程軟件測試課件_第4頁
軟件工程軟件測試課件_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件測試第五

章軟件測試第五章5.1軟件測試的基本概念一、軟件測試的目的和重要性 因為開發(fā)工作的前期不可避免地會引入錯誤,測試的目的是為了發(fā)現(xiàn)和改正錯誤,這對于某些涉及人的生命安全或重要的軍事、經(jīng)濟目標的項目顯得尤其重要。1963年美國飛往火星的火箭爆炸,原因是FORTRAN程序:DO5I=1,3誤寫為:DO5I=1.3損失1000萬美元。1967年蘇聯(lián)“聯(lián)盟一號”宇宙飛船返回時因忽略一個小數(shù)點,在進入大氣層時打不開降落傘而燒毀。5.1軟件測試的基本概念一、軟件測試的目的和重要性1963二、軟件測試的特點1、軟件測試的開銷大 按照Boehm的統(tǒng)計,軟件測試的開銷大約占總成本的30%-50%。例如:APPOLLO登月計劃,80%的經(jīng)費用于軟件測試。2、不能進行“窮舉”測試 只有將所有可能的情況都測試到,才有可能檢查出所有的錯誤。但這是不可能的:例:程序P有兩個整型輸入量X、Y,輸出量為Z,在32位機上運行。所有的測試數(shù)據(jù)組(Xi,Yi)的數(shù)目為:2

2=21毫秒執(zhí)行1次,共需5億年。323264PXYZ二、軟件測試的特點1、軟件測試的開銷大2、不能進行“窮舉”測二、軟件測試的特點—結(jié)論3、軟件測試難度大 根據(jù)上述分析,既然不能進行

“窮舉”測試,又要查出盡可能多的錯誤,軟件測試工作的難度大。只有選擇— “高效的測試用例” 什么是“高效的測試用例”? 如何選擇“高效的測試用例”? 這就是本章討論的主要問題!??!二、軟件測試的特點—結(jié)論3、軟件測試難度大“高效的測試用三、軟件測試的基本原則3、充分注意測試中的群集現(xiàn)象。1、盡量不由程序設計者進行測試。2、關(guān)鍵是注重測試用例的選擇。 輸入數(shù)據(jù)的組成(輸入數(shù)據(jù)、預期的輸出結(jié)果) 既有合理輸入數(shù)據(jù),也有不合理的輸入數(shù)據(jù)。 用例既能檢查應完成的任務,也能夠檢查不應該完成的任務。 長期保存測試用例。三、軟件測試的基本原則3、充分注意測試中的群集現(xiàn)象。1、盡量5.2軟件測試方法軟件測試方法分為兩類:靜態(tài)分析、動態(tài)測試一、靜態(tài)分析方法指以人工的、非形式化的方法對程序進行分析和測試。 桌前檢查 代碼會審 步行檢查步行檢查時,還常使用以下分析方法:①

調(diào)用圖 從語義的角度考察程序的控制路線。②數(shù)據(jù)流分析圖 檢查分析變量的定義和引用情況。5.2軟件測試方法軟件測試方法分為兩類:靜態(tài)分析、動態(tài)測試①調(diào)用圖

無論Y為何值,都不能夠調(diào)用子程序。 READYY>0NX:=YX<0YNY調(diào)用子程序ABCDE即執(zhí)行ABC后,是不可能執(zhí)行路徑CDE的。①調(diào)用圖 無論Y為何值,都不能夠調(diào)用子程序。 READ二、動態(tài)測試方法(1)通過選擇適當?shù)臏y試用例,執(zhí)行程序。常用的方法:1、白盒法分析程序的內(nèi)部邏輯結(jié)構(gòu),注意選擇適當?shù)母采w標準,設計測試用例,對主要路徑進行盡可能多的測試。2、黑盒法

不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設計測試用例。二、動態(tài)測試方法(1)通過選擇適當?shù)臏y試用例,執(zhí)行程序。2、白盒法

白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不同覆蓋標準確定的。

語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋弱強白盒法

白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次。②判定覆蓋:執(zhí)行足夠的測試用例,使得程序中每個判定至少都獲得一次“真”值和“假”值。③條件覆蓋:執(zhí)行足夠的測試用例,使得判定中的每個條件獲得各種可能的結(jié)果。④判定/條件覆蓋:執(zhí)行足夠的測試用例,使得判定中每個條件取到各種可能的值,并使每個判定取到各種可能的結(jié)果。⑤條件組合覆蓋:執(zhí)行足夠的例子,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。白盒法常用的覆蓋標準①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至少都白盒法步驟:例:用白盒法測試以下程序段:Procedure(VARA,B,X:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;1)選擇邏輯覆蓋標準。2)按照覆蓋標準列出所有情況。3)選擇確定測試用例。4)驗證分析運行結(jié)果與預期結(jié)果。邏輯結(jié)構(gòu)白盒法步驟:例:用白盒法測試以下程序段:1)選擇邏輯覆蓋標準白盒法舉例Procedure(VARA,B,X:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;A>1ANDB=0X:=X/AA=2ORX>1X:=X+1YNYN邏輯結(jié)構(gòu)白盒法舉例Procedure(VARA,B,X:REAL1、語句覆蓋使得程序中每個語句至少都能被執(zhí)行一次。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde滿足語句覆蓋的情況:執(zhí)行路徑:ace選擇用例:[(2,0,4),(2,0,3)]用例格式:[輸入(A,B,X),輸出(A,B,X)]YNYN1、語句覆蓋使得程序中每個語句至少都能被執(zhí)行一次。A>1X:2、判定覆蓋使得程序中每個判定至少為TRUE或FALSE各一次。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde覆蓋情況:應執(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)]acdYYNN2、判定覆蓋使得程序中每個判定至少為TRUE或FALSE各3、條件覆蓋A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde使得判定中的每個條件獲得各種可能的結(jié)果。應滿足以下覆蓋情況:判定一: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)]NNYY2A≤1A≠20B=04X>11A>1A=21B≠01X≤1注意:[(1,0,3),(1,0,4)] [(2,1,1),(2,1,2)]滿足條件覆蓋,但不滿足判斷覆蓋。3、條件覆蓋A>1X:=X/AA=2X:=X+1abcde使4、判定/條件覆蓋 同時滿足判斷覆蓋和條件覆蓋。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde應滿足以下覆蓋情況:條件:A>1,A≤1,B=0,B≠0 A=2,A≠2,X>1,X≤1應執(zhí)行路徑ace∧abd 或:acd∧abe選擇用例:[(2,0,4),(2,0,3)](ace)[(1,1,1),(1,1,1)](abd)YYNN4、判定/條件覆蓋 同時滿足判斷覆蓋和條件覆蓋。A>1X:=5、條件組合覆蓋使得每個判定中條件的各種可能組合都至少出現(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)]④⑧5、條件組合覆蓋使得每個判定中條件的各種可能組合都至少出現(xiàn)一路徑覆蓋:選擇足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次。STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=2ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP共有8條可能的執(zhí)行路徑①三個判定表達式之值依次為假、假、假:輸入:A=1,B=1,C=1;預期輸出:X=1,Y=2,Z=3②三個判定表達式之值依次為假、假、真:輸入:A=2,B=3,C=23;預期輸出:X=1,Y=2,Z=30③三個判定表達式之值依次為假、真、假:輸入:A=3,B=12,C=6;預期輸出:X=1,Y=20,Z=3④三個判定表達式之值依次為假、真、真:輸入:A=4,B=13,C=16;預期輸出:X=1,Y=20,Z=30⑤三個判定表達式之值依次為真、假、假:輸入:A=6,B=7,C=9;預期輸出:X=10,Y=2,Z=3⑥三個判定表達式之值依次為真、假、真:輸入:A=8,B=8,C=18;預期輸出:X=10,Y=2,Z=30⑦三個判定表達式之值依次為真、真、假:輸入:A=10,B=12,C=6;預期輸出:X=10,Y=20,Z=3⑧三個判定表達式之值依次為真、真、真:輸入:A=11,B=14,C=57;預期輸出:X=10,Y=20,Z=30路徑覆蓋:選擇足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)二、動態(tài)測試方法(2)等價分類法邊值分析法錯誤推測法因果圖法(2)黑盒法

不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設計測試用例。二、動態(tài)測試方法(2)等邊錯因(2)黑盒法1、等價分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域劃分為有限個等價區(qū)段—“等價類”,從等價類中選擇出的用例,具有“代表性”。等價類分為:有效等價類—對于程序的規(guī)格說明是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。無效等價類—對于程序的規(guī)格說明,是不合理的,是沒有意義的輸入數(shù)據(jù)構(gòu)成的集合。1、等價分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域等價分類法步驟應按照輸入條件(如輸入值的范圍,值的個數(shù),值的集合,輸入條件必須如何)劃分為有效等價類和無效等價類。例如:每個學生可選修1-3門課程可以劃分一個有效等價類:選修1-3門課程??梢詣澐謨蓚€無效等價類:未選修課,選修課超過3門。又如:標識符的第一個字符必須是字母??梢詣澐譃橐粋€有效等價類:第一個字符是字母??梢詣澐忠粋€無效等價類:第一個字符不是字母。①劃分“等價類”

顯然,關(guān)鍵是如何劃分等價類A、為每個等價類編號;B、使一個測試用例盡可能覆蓋多個有效等價類C、特別要注意的是:一個測試用例只能覆蓋一個無效等價類。②選擇測試用例等價分類法步驟等價分類法步驟應按照輸入條件(如輸入值的范圍,值的個如何劃分等價類?有效等價類(合理等價類)無效等價類(不合理等價類)(1)如果輸入條件規(guī)定了取值范圍,可定義一個有效等價類和兩個無效等價類。例

輸入值是學生成績,范圍是0~1000100有效等價類0≤成績≤100無效等價類成績>100無效等價類成績<0(2)如果輸入條件代表集合的某個元素,則可定義一個有效等價類和一個無效等價類。如何劃分等價類?(1)如果輸入條件規(guī)定了取值范圍,可定義一個(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌斎胫底霾煌幚?,則每個允許的輸入值是一個有效等價類,并有一個無效等價類(所有不允許的輸入值的集合)。例:輸入條件說明學歷可為:???、本科、碩士、博士四種之一,則分別取這四個值作為四個有效等價類,另外把四種學歷之外的任何學歷作為無效等價類(4)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。(5)如已劃分的等價類各元素在程序中的處理方式不同,則應將此等價類進一步劃分成更小的等價類。用等價類劃分法設計測試用例步驟:(1)形成等價類表,每一等價類規(guī)定一個唯一的編號;(2)設計一測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類,重復這一步驟,直到所有有效等價類均被測試用例所覆蓋;(3)設計一新測試用例,使其只覆蓋一個無效等價類,重復這一步驟直到所有無效等價類均被覆蓋;(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌斎胫底霾煌幚砝?某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2003年1月至2008年12月,即系統(tǒng)只能對該段期間內(nèi)的報表進行處理,如日期不在此范圍內(nèi),則顯示輸入錯誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(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)例:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在20第二步:為有效等價類設計測試用例

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

測試數(shù)據(jù)期望結(jié)果覆蓋范圍003MAY等價類(4)輸入無效20035等價類(5)輸入無效2003005等價類(6)輸入無效200105等價類(7)輸入無效200905等價類(8)輸入無效200300等價類(9)輸入無效200313等價類(10)輸入無效不能出現(xiàn)相同的測試用例本例的10個等價類至少需要8個測試用例第三步:為每一個無效等價類設至少測試數(shù)據(jù)2、邊值分析法

基本思想:選擇等價類的邊緣值作為測試用例,讓每個等價類的邊界都得到測試,選擇測試用例既考慮輸入亦考慮輸出。

分析步驟:

A、先劃分等價類。

B、選擇測試用例,測試等價類邊界。邊界選擇原則:

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

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

C、輸出值域的邊界。

D、輸入/輸出有序集的邊界。2、邊值分析法基本思想:選擇等價類的邊緣值作為測試用例,A、按照輸入值范圍的邊界。例如:輸入值的范圍是-1.0至1.0,則可選擇用例–1.0、1.0、-1.001、1.001。

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

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

C、輸出值域的邊界。

例如:檢索文獻摘要,最多4篇。設計用例:可檢索0篇、1篇、4篇,和5篇(錯誤)。

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

應選擇第一個元素和最后一個元素。邊值分析法舉例A、按照輸入值范圍的邊界。邊值分析法舉例3、錯誤推測法 憑經(jīng)驗或直覺推測可能的錯誤,列出程序中可能有的錯誤和容易發(fā)生錯誤的特殊情況,選擇測試用例。 把輸入條件視為“因”,把輸出條件視為“果”,將黑盒看成是從因到果的網(wǎng)絡圖,采用邏輯圖的形式來表達功能說明書中輸入條件的各種組合與輸出的關(guān)系。根據(jù)這種關(guān)系可選擇高效的測試用例。因果圖是一種形式化語言,是一種組合邏輯網(wǎng)絡圖。4、因果圖法3、錯誤推測法 憑經(jīng)驗或直覺推測可能的錯誤,列出程序中可5.3軟件測試的步驟測試步驟及策略

所有測試過程都應采用綜合測試策略;即先作靜態(tài)分析,再作動態(tài)測試。并事先制訂測試計劃。測試過程通??煞?步進行:單元測試單元測試單元測試被測模塊被測模塊集成測試設計信息已測試的模塊確認測試已集成的模塊軟件需求系統(tǒng)測試已確認的軟件可交付的軟件系統(tǒng)其他元素5.3軟件測試的步驟測試步驟及策略單元單元單元被測模塊被測一、模塊測試(ModuleTesting)1、測試內(nèi)容模塊模塊接口測試局部數(shù)據(jù)結(jié)構(gòu)測試重要路徑測試錯誤處理測試邊界條件測試I/O參數(shù)值的個數(shù)、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數(shù)據(jù)說明是否正確、一致,變量及其初值定義是否正確等。檢查“錯誤處理程序”本身的錯誤。邊界條件常包括循環(huán)邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結(jié)構(gòu)。也稱單元測試(unittesting)一、模塊測試(ModuleTesting)1、測試內(nèi)容模塊2、模塊測試步驟 考慮到被測模塊與其它模塊的聯(lián)系,因此測試時需要使用兩類輔助模塊來模擬其他模塊。

驅(qū)動模塊(driver)—模擬主程序功能,用于向被測模塊傳遞數(shù)據(jù),接收、打印從被測模塊返回的數(shù)據(jù)。

樁模塊(stub)—又稱為假模塊,用于模擬那些由被測模塊所調(diào)用的下屬模塊功能。 一般,驅(qū)動模塊比樁模塊容易設計。但都是額外開銷。測試方法以白盒法為主。被測模塊驅(qū)動模塊樁模塊樁模塊樁模塊2、模塊測試步驟 考慮到被測模塊與其它模塊的聯(lián)系,因此測試時二、組裝測試(IntegrationTesting)1、組裝測試的任務①確定模塊組裝方案,將經(jīng)過測試的模塊組裝為一個完整的系統(tǒng)。組裝方案分為漸增式及非漸增式。②測試方法以黑盒法為主,按照組裝方案進行測試。 也稱為聯(lián)合測試或集成測試,重點測試模塊的接口部分,需設計測試過程使用的驅(qū)動模塊或樁模塊。問題:漸增式與非漸增式各有何優(yōu)、缺點?為什么通常采用漸增式?二、組裝測試(IntegrationTesting)1、組2、漸增式組裝測試 漸增式是先進行模塊測試,然后將這些模塊逐步組裝成較大的系統(tǒng),每連接一個模塊進行一次測試。兩種方案:設計驅(qū)動模塊或樁模塊,對每一個新組裝的子系統(tǒng)進行測試,對發(fā)現(xiàn)問題較多的子系統(tǒng)或模塊應該用白盒法作回歸測試。自頂而下增值自底而上增值2、漸增式組裝測試 漸增式是先進行模塊測試,然后將這些模塊逐自頂而下增值M1M4M3M2M6M5程序模塊示意圖S5M1S1S1S1S2S2S2S3S3S3第一步,測試主控模塊M1設計樁模塊S1、S2、S3,模擬被M1調(diào)用的M2、M3、M4。M2M3M4第二步,依次用M2、M3、M4替代樁模塊S1、S2、S3,每替代一次進行一次測試。S4S4S4S5S5第三步,對由主控模塊M1和模塊M2、M3、M4構(gòu)成的子系統(tǒng)進行測試,設計樁模塊S4、S5。M5M6第四步,依次用模塊M5和M6替代樁模塊S4、S5,并同時進行新的測試。組裝測試完畢。自頂而下增值M1M4M3M2M6M5程序模塊示意圖S5M1S自底而上增值M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把已測試的子系統(tǒng)按程序結(jié)構(gòu)連接起來完成程序整體的組裝測試。D4D4D4D5D5D5M1M4M3M2M6M5程序模塊示意圖第一步,對最底層的模塊M3、M5、M6進行測試,設計驅(qū)動模塊D1、D2、D3來模擬調(diào)用。第三步,設計驅(qū)動模塊D4、D5和D6模擬調(diào)用,分別對新子系統(tǒng)進行測試。第二步,用實際模塊M2、M1和M4替換驅(qū)動模塊D1、D2、D3。D6自底而上增值M3M6M5D1D2D3D1D1D2D2D3D3深度優(yōu)先與寬度優(yōu)先 無論是自頂而下增值還是自底而上增值,還可選擇深度優(yōu)先或者寬度優(yōu)先增值。舉例:按自頂而下增值法,寫出下圖中分別按照深度優(yōu)先或者寬度優(yōu)先增值的模塊組裝次序。ABCDHGJEFIKLMN深度優(yōu)先與寬度優(yōu)先 無論是自頂而下增值還是自底而上增值,還可問題(1)自頂而下增值與自底而上增值各有何優(yōu)、缺點?(2)為什么在實際的組裝測試中,都應該采用混合增值的方法?(3)請自己設計2-3個混合增值的測試方法。問題確定集成過程的原則自頂而下增值優(yōu)點:能夠盡早發(fā)現(xiàn)系統(tǒng)主控方面的問題。缺點:無法驗證樁模塊是否完全模擬了下屬模塊的功能。自底而上增值優(yōu)點:驅(qū)動模塊較容易編寫樁模塊,能夠盡早查出底層涉及較復雜的算法和實際的I/O模塊中的錯誤。缺點:最后才能發(fā)現(xiàn)系統(tǒng)主控方面的問題。集成過程的原則①盡早測試關(guān)鍵模塊。②盡早測試包含I/O的模塊。確定集成過程的原則自頂而下增值集成過程的原則3、混合增值常見的混合增值方案:衍變的自頂而下先自底而上集成子系統(tǒng),再自頂而下集成總系統(tǒng)。自底而上—自頂而下增值對含有讀操作的子系統(tǒng)采用自底而上。對含有寫操作的子系統(tǒng)采用自頂而下。回歸測試在回歸測試中自底而上,對其余部分(尤其是對修改過的子系統(tǒng))采用自頂而下。3、混合增值常見的混合增值方案:自底而上—自頂而下增值回歸三、確認測試(validationtesting)

1、任務

又稱為有效性測試或功能測試。其任務是驗證系統(tǒng)的功能、性能等特性是否符合需求規(guī)格說明。選擇測試人員選擇測試用例實際運行測試軟件計劃用戶文檔開發(fā)文檔源程序文本支持環(huán)境有效性測試軟件配置審查管理機構(gòu)裁決專家鑒定會交用戶運行維護測試報告軟件配置三、確認測試(validationtesting) 1、任2、確認測試步驟(1)有效性測試 制定測試計劃,運用黑盒法,驗證軟件特性是否與需求符合。(2)軟件配置復查軟件配置—指軟件工程過程中所產(chǎn)生的所有信息項:文檔、報告、程序、表格、數(shù)據(jù)。隨著軟件工程過程的進展軟件配置項(SCIsoftwareConfigurationItem)快速增加和變化。應復查SCI是否齊全。 2、確認測試步驟(1)有效性測試(2)軟件配置復查(3)測試和測試 測試α測試是指軟件開發(fā)公司組織內(nèi)部人員模擬各類用戶行對即將面市軟件產(chǎn)品(稱為α版本)進行測試,試圖發(fā)現(xiàn)錯誤并修正。α測試的關(guān)鍵在于盡可能逼真地模擬實際運行環(huán)境和用對軟件產(chǎn)品的操作并盡最大努力涵蓋所有可能的用戶操作方式。

測試

經(jīng)過α測試調(diào)整的軟件產(chǎn)品稱為β版本。緊隨其后的β測試是指軟件開發(fā)公司組織各方面的典型用戶在日常工作中實際使用β版本,并要求用戶報告異常情況、提出批評意見。然后軟件開發(fā)公司再對β版本進行改錯和完善。(3)測試和測試 測試α測試是指軟件開發(fā)公司組織內(nèi)四、系統(tǒng)測試(systemtesting)系統(tǒng)測試(SystemTesting)階段產(chǎn)出

1.計劃——《系統(tǒng)測試計劃》

2.設計——《系統(tǒng)方案》(系統(tǒng)測試項和系統(tǒng)測試子項)

3.實現(xiàn)——《系統(tǒng)測試用例》

4.執(zhí)行——《測試報告》概念:將已經(jīng)集成好的軟件系統(tǒng),與其他系統(tǒng)元素結(jié)合在一起,在實際運行環(huán)境下,進行一系列的測試活動。目的:驗證系統(tǒng)對需求的符合程度;對象:軟硬件集成一起的系統(tǒng),并盡可能地在實際運行環(huán)境與條件;常用類型:

1、功能測試——(針對軟件質(zhì)量中)“功能性”目的:根據(jù)產(chǎn)品的需求規(guī)格說明書和測試列表,驗證產(chǎn)品的功能實現(xiàn)是否符合需求規(guī)格;關(guān)注點:●功能是否遺漏●功能實現(xiàn)是否滿足用戶需求和系統(tǒng)設計的隱性需求●輸入能否正確接受,輸出結(jié)果是否正確測試方法:等價類、邊界值、判定表、因果圖、正交、狀態(tài)遷移、流程分析……

2、性能測試——“效率”目的:測試軟件集成系統(tǒng)中運行的性能,度量系統(tǒng)相對于目標的差距;四、系統(tǒng)測試(systemtesting)系統(tǒng)測試(Sy3、壓力測試(streeTesting)——“效率、可靠性”目的:驗證系統(tǒng)在其資源超負荷的情況下的表現(xiàn)(自我保護能力、可靠性),發(fā)現(xiàn)性能瓶頸、優(yōu)化系統(tǒng);4、容量測試(VolumeTesting)——“效率”目的:驗證系統(tǒng)在不同配置、不同場景下能正確處理的最大業(yè)務量;對象:面向數(shù)據(jù)的;4、容量測試

5、負載測試

6、安全性測試

7、圖形用戶界面(GUI)測試

8、可用性測試

9、安全性測試

10、配置測試

11、兼容性測試

12、異常測試

13、備份測試

14、健壯性測試

15、文檔測試

16、在線幫助測試

17、網(wǎng)絡測試

18、穩(wěn)定性測試3、壓力測試(streeTesting)——“效率、可靠性3、軟件測試文檔模塊測試報告至少選擇一個典型模塊進行測試。A、綜合測試策略(靜態(tài)分析、白盒法為主,輔以黑盒法)B、測試情況(根據(jù)覆蓋標準列出)C、測試用例(保留)D、查錯記錄(數(shù)量、位置)、分析結(jié)果。組裝測試報告A、組裝次序、測試方法(以黑盒法為主)B、測試情況C、測試用例(保留)D、查錯記錄(數(shù)量、位置)、分析結(jié)果。功能測試與系統(tǒng)測試與上類似。3、軟件測試文檔模塊測試報告5.4軟件糾錯技術(shù) 軟件測試的目的是發(fā)現(xiàn)錯誤,在發(fā)現(xiàn)錯誤后,則應按照一定的技術(shù)去糾正它。糾錯的關(guān)鍵是“錯誤定位”。一、糾錯的原則1、注意錯誤的“群集現(xiàn)象”。2、不能只修改錯誤的征兆、表現(xiàn)。還應該修改錯誤的本質(zhì)。3、注意在修改一個錯誤的同時,又引入新的錯誤。5.4軟件糾錯技術(shù) 軟件測試的目的是發(fā)現(xiàn)錯誤,在發(fā)現(xiàn)錯誤二、糾錯的技術(shù)1、硬性糾錯 又稱為蠻干法,是使用較多,效率較低的方法。主存信息轉(zhuǎn)儲法關(guān)鍵部分設置打印語句使用自動糾錯工具2、回溯法排錯 適用于小程序。發(fā)現(xiàn)錯誤時,人工沿控制流追蹤源代碼程序。二、糾錯的技術(shù)1、硬性糾錯主存信息轉(zhuǎn)儲法2、回溯法排錯3、歸納法從測試結(jié)果發(fā)現(xiàn)的錯誤入手,分析它們之間的聯(lián)系查找錯誤。是一種從特殊推斷一般的系統(tǒng)化思考方法。收集有關(guān)數(shù)據(jù)組織數(shù)據(jù)研究數(shù)據(jù)間的關(guān)系提出假設證明假設糾正錯誤能能不能不能列出所有已知的測試用例和程序執(zhí)行結(jié)果常用的構(gòu)造線索的技術(shù)是“分類法”分析線索之間的關(guān)系,找出矛盾,設計出錯原因的假設歸納排錯法步驟將假設與原始線索或數(shù)據(jù)進行比較,能否解釋現(xiàn)象,證明假設。yesnoWhatWhenwhereHow3、歸納法從測試結(jié)果發(fā)現(xiàn)的錯誤入手,分析它們之間的收集組織4、演繹法排錯

演繹法是一種從一般原理出發(fā),經(jīng)過排除和精化的過程,推導出結(jié)論的方法。列舉可能的原因排除不適當?shù)脑驅(qū)ΡA舻募僭O繼續(xù)推斷證明假設糾正錯誤收集更多的數(shù)據(jù)沒有剩余不能能有剩余演繹法排錯的步驟4、演繹法排錯演繹法是一種從一般原理出發(fā),經(jīng)過排除和軟件測試第五

章軟件測試第五章5.1軟件測試的基本概念一、軟件測試的目的和重要性 因為開發(fā)工作的前期不可避免地會引入錯誤,測試的目的是為了發(fā)現(xiàn)和改正錯誤,這對于某些涉及人的生命安全或重要的軍事、經(jīng)濟目標的項目顯得尤其重要。1963年美國飛往火星的火箭爆炸,原因是FORTRAN程序:DO5I=1,3誤寫為:DO5I=1.3損失1000萬美元。1967年蘇聯(lián)“聯(lián)盟一號”宇宙飛船返回時因忽略一個小數(shù)點,在進入大氣層時打不開降落傘而燒毀。5.1軟件測試的基本概念一、軟件測試的目的和重要性1963二、軟件測試的特點1、軟件測試的開銷大 按照Boehm的統(tǒng)計,軟件測試的開銷大約占總成本的30%-50%。例如:APPOLLO登月計劃,80%的經(jīng)費用于軟件測試。2、不能進行“窮舉”測試 只有將所有可能的情況都測試到,才有可能檢查出所有的錯誤。但這是不可能的:例:程序P有兩個整型輸入量X、Y,輸出量為Z,在32位機上運行。所有的測試數(shù)據(jù)組(Xi,Yi)的數(shù)目為:2

2=21毫秒執(zhí)行1次,共需5億年。323264PXYZ二、軟件測試的特點1、軟件測試的開銷大2、不能進行“窮舉”測二、軟件測試的特點—結(jié)論3、軟件測試難度大 根據(jù)上述分析,既然不能進行

“窮舉”測試,又要查出盡可能多的錯誤,軟件測試工作的難度大。只有選擇— “高效的測試用例” 什么是“高效的測試用例”? 如何選擇“高效的測試用例”? 這就是本章討論的主要問題?。。《?、軟件測試的特點—結(jié)論3、軟件測試難度大“高效的測試用三、軟件測試的基本原則3、充分注意測試中的群集現(xiàn)象。1、盡量不由程序設計者進行測試。2、關(guān)鍵是注重測試用例的選擇。 輸入數(shù)據(jù)的組成(輸入數(shù)據(jù)、預期的輸出結(jié)果) 既有合理輸入數(shù)據(jù),也有不合理的輸入數(shù)據(jù)。 用例既能檢查應完成的任務,也能夠檢查不應該完成的任務。 長期保存測試用例。三、軟件測試的基本原則3、充分注意測試中的群集現(xiàn)象。1、盡量5.2軟件測試方法軟件測試方法分為兩類:靜態(tài)分析、動態(tài)測試一、靜態(tài)分析方法指以人工的、非形式化的方法對程序進行分析和測試。 桌前檢查 代碼會審 步行檢查步行檢查時,還常使用以下分析方法:①

調(diào)用圖 從語義的角度考察程序的控制路線。②數(shù)據(jù)流分析圖 檢查分析變量的定義和引用情況。5.2軟件測試方法軟件測試方法分為兩類:靜態(tài)分析、動態(tài)測試①調(diào)用圖

無論Y為何值,都不能夠調(diào)用子程序。 READYY>0NX:=YX<0YNY調(diào)用子程序ABCDE即執(zhí)行ABC后,是不可能執(zhí)行路徑CDE的。①調(diào)用圖 無論Y為何值,都不能夠調(diào)用子程序。 READ二、動態(tài)測試方法(1)通過選擇適當?shù)臏y試用例,執(zhí)行程序。常用的方法:1、白盒法分析程序的內(nèi)部邏輯結(jié)構(gòu),注意選擇適當?shù)母采w標準,設計測試用例,對主要路徑進行盡可能多的測試。2、黑盒法

不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設計測試用例。二、動態(tài)測試方法(1)通過選擇適當?shù)臏y試用例,執(zhí)行程序。2、白盒法

白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不同覆蓋標準確定的。

語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋弱強白盒法

白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次。②判定覆蓋:執(zhí)行足夠的測試用例,使得程序中每個判定至少都獲得一次“真”值和“假”值。③條件覆蓋:執(zhí)行足夠的測試用例,使得判定中的每個條件獲得各種可能的結(jié)果。④判定/條件覆蓋:執(zhí)行足夠的測試用例,使得判定中每個條件取到各種可能的值,并使每個判定取到各種可能的結(jié)果。⑤條件組合覆蓋:執(zhí)行足夠的例子,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。白盒法常用的覆蓋標準①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至少都白盒法步驟:例:用白盒法測試以下程序段:Procedure(VARA,B,X:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;1)選擇邏輯覆蓋標準。2)按照覆蓋標準列出所有情況。3)選擇確定測試用例。4)驗證分析運行結(jié)果與預期結(jié)果。邏輯結(jié)構(gòu)白盒法步驟:例:用白盒法測試以下程序段:1)選擇邏輯覆蓋標準白盒法舉例Procedure(VARA,B,X:REAL);BEGINIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;A>1ANDB=0X:=X/AA=2ORX>1X:=X+1YNYN邏輯結(jié)構(gòu)白盒法舉例Procedure(VARA,B,X:REAL1、語句覆蓋使得程序中每個語句至少都能被執(zhí)行一次。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde滿足語句覆蓋的情況:執(zhí)行路徑:ace選擇用例:[(2,0,4),(2,0,3)]用例格式:[輸入(A,B,X),輸出(A,B,X)]YNYN1、語句覆蓋使得程序中每個語句至少都能被執(zhí)行一次。A>1X:2、判定覆蓋使得程序中每個判定至少為TRUE或FALSE各一次。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde覆蓋情況:應執(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)]acdYYNN2、判定覆蓋使得程序中每個判定至少為TRUE或FALSE各3、條件覆蓋A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde使得判定中的每個條件獲得各種可能的結(jié)果。應滿足以下覆蓋情況:判定一: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)]NNYY2A≤1A≠20B=04X>11A>1A=21B≠01X≤1注意:[(1,0,3),(1,0,4)] [(2,1,1),(2,1,2)]滿足條件覆蓋,但不滿足判斷覆蓋。3、條件覆蓋A>1X:=X/AA=2X:=X+1abcde使4、判定/條件覆蓋 同時滿足判斷覆蓋和條件覆蓋。A>1ANDB=0X:=X/AA=2ORX>1X:=X+1abcde應滿足以下覆蓋情況:條件:A>1,A≤1,B=0,B≠0 A=2,A≠2,X>1,X≤1應執(zhí)行路徑ace∧abd 或:acd∧abe選擇用例:[(2,0,4),(2,0,3)](ace)[(1,1,1),(1,1,1)](abd)YYNN4、判定/條件覆蓋 同時滿足判斷覆蓋和條件覆蓋。A>1X:=5、條件組合覆蓋使得每個判定中條件的各種可能組合都至少出現(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)]④⑧5、條件組合覆蓋使得每個判定中條件的各種可能組合都至少出現(xiàn)一路徑覆蓋:選擇足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次。STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=2ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP共有8條可能的執(zhí)行路徑①三個判定表達式之值依次為假、假、假:輸入:A=1,B=1,C=1;預期輸出:X=1,Y=2,Z=3②三個判定表達式之值依次為假、假、真:輸入:A=2,B=3,C=23;預期輸出:X=1,Y=2,Z=30③三個判定表達式之值依次為假、真、假:輸入:A=3,B=12,C=6;預期輸出:X=1,Y=20,Z=3④三個判定表達式之值依次為假、真、真:輸入:A=4,B=13,C=16;預期輸出:X=1,Y=20,Z=30⑤三個判定表達式之值依次為真、假、假:輸入:A=6,B=7,C=9;預期輸出:X=10,Y=2,Z=3⑥三個判定表達式之值依次為真、假、真:輸入:A=8,B=8,C=18;預期輸出:X=10,Y=2,Z=30⑦三個判定表達式之值依次為真、真、假:輸入:A=10,B=12,C=6;預期輸出:X=10,Y=20,Z=3⑧三個判定表達式之值依次為真、真、真:輸入:A=11,B=14,C=57;預期輸出:X=10,Y=20,Z=30路徑覆蓋:選擇足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)二、動態(tài)測試方法(2)等價分類法邊值分析法錯誤推測法因果圖法(2)黑盒法

不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設計測試用例。二、動態(tài)測試方法(2)等邊錯因(2)黑盒法1、等價分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域劃分為有限個等價區(qū)段—“等價類”,從等價類中選擇出的用例,具有“代表性”。等價類分為:有效等價類—對于程序的規(guī)格說明是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。無效等價類—對于程序的規(guī)格說明,是不合理的,是沒有意義的輸入數(shù)據(jù)構(gòu)成的集合。1、等價分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域等價分類法步驟應按照輸入條件(如輸入值的范圍,值的個數(shù),值的集合,輸入條件必須如何)劃分為有效等價類和無效等價類。例如:每個學生可選修1-3門課程可以劃分一個有效等價類:選修1-3門課程??梢詣澐謨蓚€無效等價類:未選修課,選修課超過3門。又如:標識符的第一個字符必須是字母??梢詣澐譃橐粋€有效等價類:第一個字符是字母??梢詣澐忠粋€無效等價類:第一個字符不是字母。①劃分“等價類”

顯然,關(guān)鍵是如何劃分等價類A、為每個等價類編號;B、使一個測試用例盡可能覆蓋多個有效等價類C、特別要注意的是:一個測試用例只能覆蓋一個無效等價類。②選擇測試用例等價分類法步驟等價分類法步驟應按照輸入條件(如輸入值的范圍,值的個如何劃分等價類?有效等價類(合理等價類)無效等價類(不合理等價類)(1)如果輸入條件規(guī)定了取值范圍,可定義一個有效等價類和兩個無效等價類。例

輸入值是學生成績,范圍是0~1000100有效等價類0≤成績≤100無效等價類成績>100無效等價類成績<0(2)如果輸入條件代表集合的某個元素,則可定義一個有效等價類和一個無效等價類。如何劃分等價類?(1)如果輸入條件規(guī)定了取值范圍,可定義一個(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌斎胫底霾煌幚?,則每個允許的輸入值是一個有效等價類,并有一個無效等價類(所有不允許的輸入值的集合)。例:輸入條件說明學歷可為:???、本科、碩士、博士四種之一,則分別取這四個值作為四個有效等價類,另外把四種學歷之外的任何學歷作為無效等價類(4)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,可確定一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。(5)如已劃分的等價類各元素在程序中的處理方式不同,則應將此等價類進一步劃分成更小的等價類。用等價類劃分法設計測試用例步驟:(1)形成等價類表,每一等價類規(guī)定一個唯一的編號;(2)設計一測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類,重復這一步驟,直到所有有效等價類均被測試用例所覆蓋;(3)設計一新測試用例,使其只覆蓋一個無效等價類,重復這一步驟直到所有無效等價類均被覆蓋;(3)如規(guī)定了輸入數(shù)據(jù)的一組值,且程序?qū)Σ煌斎胫底霾煌幚砝?某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在2003年1月至2008年12月,即系統(tǒng)只能對該段期間內(nèi)的報表進行處理,如日期不在此范圍內(nèi),則顯示輸入錯誤信息。系統(tǒng)日期規(guī)定由年、月的6位數(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)例:某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在20第二步:為有效等價類設計測試用例

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

測試數(shù)據(jù)期望結(jié)果覆蓋范圍003MAY等價類(4)輸入無效20035等價類(5)輸入無效2003005等價類(6)輸入無效200105等價類(7)輸入無效200905等價類(8)輸入無效200300等價類(9)輸入無效200313等價類(10)輸入無效不能出現(xiàn)相同的測試用例本例的10個等價類至少需要8個測試用例第三步:為每一個無效等價類設至少測試數(shù)據(jù)2、邊值分析法

基本思想:選擇等價類的邊緣值作為測試用例,讓每個等價類的邊界都得到測試,選擇測試用例既考慮輸入亦考慮輸出。

分析步驟:

A、先劃分等價類。

B、選擇測試用例,測試等價類邊界。邊界選擇原則:

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

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

C、輸出值域的邊界。

D、輸入/輸出有序集的邊界。2、邊值分析法基本思想:選擇等價類的邊緣值作為測試用例,A、按照輸入值范圍的邊界。例如:輸入值的范圍是-1.0至1.0,則可選擇用例–1.0、1.0、-1.001、1.001。

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

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

C、輸出值域的邊界。

例如:檢索文獻摘要,最多4篇。設計用例:可檢索0篇、1篇、4篇,和5篇(錯誤)。

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

應選擇第一個元素和最后一個元素。邊值分析法舉例A、按照輸入值范圍的邊界。邊值分析法舉例3、錯誤推測法 憑經(jīng)驗或直覺推測可能的錯誤,列出程序中可能有的錯誤和容易發(fā)生錯誤的特殊情況,選擇測試用例。 把輸入條件視為“因”,把輸出條件視為“果”,將黑盒看成是從因到果的網(wǎng)絡圖,采用邏輯圖的形式來表達功能說明書中輸入條件的各種組合與輸出的關(guān)系。根據(jù)這種關(guān)系可選擇高效的測試用例。因果圖是一種形式化語言,是一種組合邏輯網(wǎng)絡圖。4、因果圖法3、錯誤推測法 憑經(jīng)驗或直覺推測可能的錯誤,列出程序中可5.3軟件測試的步驟測試步驟及策略

所有測試過程都應采用綜合測試策略;即先作靜態(tài)分析,再作動態(tài)測試。并事先制訂測試計劃。測試過程通??煞?步進行:單元測試單元測試單元測試被測模塊被測模塊集成測試設計信息已測試的模塊確認測試已集成的模塊軟件需求系統(tǒng)測試已確認的軟件可交付的軟件系統(tǒng)其他元素5.3軟件測試的步驟測試步驟及策略單元單元單元被測模塊被測一、模塊測試(ModuleTesting)1、測試內(nèi)容模塊模塊接口測試局部數(shù)據(jù)結(jié)構(gòu)測試重要路徑測試錯誤處理測試邊界條件測試I/O參數(shù)值的個數(shù)、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數(shù)據(jù)說明是否正確、一致,變量及其初值定義是否正確等。檢查“錯誤處理程序”本身的錯誤。邊界條件常包括循環(huán)邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結(jié)構(gòu)。也稱單元測試(unittesting)一、模塊測試(ModuleTesting)1、測試內(nèi)容模塊2、模塊測試步驟 考慮到被測模塊與其它模塊的聯(lián)系,因此測試時需要使用兩類輔助模塊來模擬其他模塊。

驅(qū)動模塊(driver)—模擬主程序功能,用于向被測模塊傳遞數(shù)據(jù),接收、打印從被測模塊返回的數(shù)據(jù)。

樁模塊(stub)—又稱為假模塊,用于模擬那些由被測模塊所調(diào)用的下屬模塊功能。 一般,驅(qū)動模塊比樁模塊容易設計。但都是額外開銷。測試方法以白盒法為主。被測模塊驅(qū)動模塊樁模塊樁模塊樁模塊2、模塊測試步驟 考慮到被測模塊與其它模塊的聯(lián)系,因此測試時二、組裝測試(IntegrationTesting)1、組裝測試的任務①確定模塊組裝方案,將經(jīng)過測試的模塊組裝為一個完整的系統(tǒng)。組裝方案分為漸增式及非漸增式。②測試方法以黑盒法為主,按照組裝方案進行測試。 也稱為聯(lián)合測試或集成測試,重點測試模塊的接口部分,需設計測試過程使用的驅(qū)動模塊或樁模塊。問題:漸增式與非漸增式各有何優(yōu)、缺點?為什么通常采用漸增式?二、組裝測試(IntegrationTesting)1、組2、漸增式組裝測試 漸增式是先進行模塊測試,然后將這些模塊逐步組裝成較大的系統(tǒng),每連接一個模塊進行一次測試。兩種方案:設計驅(qū)動模塊或樁模塊,對每一個新組裝的子系統(tǒng)進行測試,對發(fā)現(xiàn)問題較多的子系統(tǒng)或模塊應該用白盒法作回歸測試。自頂而下增值自底而上增值2、漸增式組裝測試 漸增式是先進行模塊測試,然后將這些模塊逐自頂而下增值M1M4M3M2M6M5程序模塊示意圖S5M1S1S1S1S2S2S2S3S3S3第一步,測試主控模塊M1設計樁模塊S1、S2、S3,模擬被M1調(diào)用的M2、M3、M4。M2M3M4第二步,依次用M2、M3、M4替代樁模塊S1、S2、S3,每替代一次進行一次測試。S4S4S4S5S5第三步,對由主控模塊M1和模塊M2、M3、M4構(gòu)成的子系統(tǒng)進行測試,設計樁模塊S4、S5。M5M6第四步,依次用模塊M5和M6替代樁模塊S4、S5,并同時進行新的測試。組裝測試完畢。自頂而下增值M1M4M3M2M6M5程序模塊示意圖S5M1S自底而上增值M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把已測試的子系統(tǒng)按程序結(jié)構(gòu)連接起來完成程序整體的組裝測試。D4D4D4D5D5D5M1M4M3M2M6M5程序模塊示意圖第一步,對最底層的模塊M3、M5、M6進行測試,設計驅(qū)動模塊D1、D2、D3來模擬調(diào)用。第三步,設計驅(qū)動模塊D4、D5和D6模擬調(diào)用,分別對新子系統(tǒng)進行測試。第二步,用實際模塊M2、M1和M4替換驅(qū)動模塊D1、D2、D3。D6自底而上增值M3M6M5D1D2D3D1D1D2D2D3D3深度優(yōu)先與寬度優(yōu)先 無論是自頂而下增值還是自底而上增值,還可選擇深度優(yōu)先或者寬度優(yōu)先增值。舉例:按自頂而下增值法,寫出下圖中分別按照深度優(yōu)先或者寬度優(yōu)先增值的模塊組裝次序。ABCDHGJEFIKLMN深度優(yōu)先與寬度優(yōu)先 無論是自頂而下增值還是自底而上增值,還可問題(1)自頂而下增值與自底而上增值各有何優(yōu)、缺點?(2)為什么在實際的組裝測試中,都應該采用混合增值的方法?(3)請自己設計2-3個混合增值的測試方法。問題確定集成過程的原則自頂而下增值優(yōu)點:能夠盡早發(fā)現(xiàn)系統(tǒng)主控方面的問題。缺點:無法驗證樁模塊是否完全模擬了下屬模塊的功能。自底而上增值優(yōu)點:驅(qū)動模塊較容易編寫樁模塊,能夠盡早查出底層涉及較復雜的算法和實際的I/O模塊中的錯誤。缺點:最后才能發(fā)現(xiàn)系統(tǒng)主控方面的問題。集成過程的原則①盡早測試關(guān)鍵模塊。②盡早測試包含I/O的模塊。確定集成過程的原則自頂而下增值集成過程的原則3、混合增值常見的混合增值方案:衍變的自頂而下先自底而上集成子系統(tǒng),再自頂而下集成總系統(tǒng)。自底而上—自頂而下增值對含有讀操作的子系統(tǒng)采用自底而上。對含有寫操作的子系統(tǒng)采用自頂而下?;貧w測試在回歸測試中自底而上,對其余部分(尤其是對修改過的子系統(tǒng))采用自頂而下。3、混合增值常見的混合增值方案:自底而上—自頂而下增值回歸三、確認測試(validationtesting)

1、任務

又稱為有效性測試或功能測試。其任務

溫馨提示

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

評論

0/150

提交評論