《軟件工程軟件測試》由會員分享,可在線閱讀,更多相關《軟件工程軟件測試(50頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,軟件測試,第 五,章,5.1,軟件測試的基本概念,一、軟件測試的目的和重要性,因為開發(fā)工作的前期不可避免地會引入錯誤,測試的,目的是為了發(fā)現(xiàn)和改正錯誤,,這對于某些涉及人的生命安全或重要的軍事、經(jīng)濟目標的項目顯得尤其重要。,1963年美國飛往火星的火箭爆炸,原因是,FORTRAN,程序:,DO 5 I=1,3,誤寫為:,DO 5 I=1.3,損失1000萬美元。,1967,年蘇聯(lián),“,聯(lián)盟一號,”,宇宙飛船返回時因忽略一個小數(shù)點,在進入大氣層時打不開降落傘而燒毀。,二、軟件測試的,特點,1、軟件測試的開銷大,按照,Boehm,的統(tǒng)計,軟件測試的開銷大約占總成本的30%-50%。例如:,APP
2、OLLO,登月計劃,80%的經(jīng)費用于軟件測試。,2、不能進行,“,窮舉,”,測試,只有將所有可能的情況都測試到,才有可能檢查出所有的錯誤。但這是不可能的:,例:程序,P,有兩個整型輸入量,X、Y,,輸出量為,Z,,在32位機上運行。所有的測試數(shù)據(jù)組(,X,i,,Y,i,),的數(shù)目為:2,2 =2 1毫秒執(zhí)行1次,共需5億年。,32,32,64,P,X,Y,Z,二、軟件測試的,特點 結論,3、軟件測試難度大,根據(jù)上述分析,既然不能進行,“,窮舉,”,測試,又要查出盡可能多的錯誤,軟件測試工作的難度大。只有選擇,“,高效的測試用例,”,什么是,“,高效的測試用例,”,?,如何選擇,“,高效的測試用
3、例,”,?,這就是本章討論的主要問題!,三、軟件測試的基本原則,3、充分注意測試中的群集現(xiàn)象。,1、盡量不由程序設計者進行測試。,2、關鍵是注重測試用例的選擇。,輸入數(shù)據(jù)的組成(輸入數(shù)據(jù)、預期的輸出結果),既有合理輸入數(shù)據(jù),也有不合理的輸入數(shù)據(jù)。,用例既能檢查應完成的任務,也能夠檢查不應該完成的任務。,長期保存測試用例。,5.2,軟件測試方法,軟件測試方法分為兩類:靜態(tài)分析、動態(tài)測試,一、靜態(tài)分析方法,指以人工的、非形式化的方法對程序進行分析和測試。,桌前檢查代碼會審步行檢查,步行檢查時,還常使用以下分析方法:,調(diào)用圖,從語義的角度考察程序的控制路線。,數(shù)據(jù)流分析圖,檢查分析變量的定義和引用情
4、況。,調(diào)用圖,無論,Y,為何值,都不能夠調(diào)用子程序,。,READY,Y0,N,X:=Y,X1)AND(B=0),THEN X:=X/A;,IF(A=2)OR (X1),THEN X:=X+1,END;,1)選擇邏輯覆蓋標準。,2)按照覆蓋標準列出所有情況。,3)選擇確定測試用例。,4)驗證分析運行結果與預期結果。,邏輯結構,白盒法舉例,Procedure(VAR A,B,X:REAL);,BEGIN,IF(A1)AND(B=0),THEN X:=X/A;,IF(A=2)OR (X1),THEN X:=X+1,END;,A1,AND,B=0,X:=X/A,A=2,OR,X1,X:=X+1,Y,N
5、,Y,N,邏輯結構,1、語句覆蓋,使得程序中每個語句至少都能被執(zhí)行一次。,A1,AND,B=0,X:=X/A,A=2,OR,X1,X:=X+1,a,b,c,d,e,滿足語句覆蓋的情況:,執(zhí)行路徑:ace,選擇用例:,(2,0,4),(2,0,3),用例格式:,輸入(A,B,X),輸出(A,B,X),Y,N,Y,N,2、判定覆蓋,使得程序中每個判定至少為,TRUE,或,FALSE,各一次。,A1,AND,B=0,X:=X/A,A=2,OR,X1,X:=X+1,a,b,c,d,e,覆蓋情況:,應執(zhí)行路徑,ace,abd,或:,acd,abe,選擇用例(其一):,(2,0,4),(2,0,3)ace
6、,(1,1,1),(1,1,1)abd,(2,1,1),(2,1,2)abe,(3,0,3),(3,1,1)acd,Y,Y,N,N,3、條件覆蓋,A1,AND,B=0,X:=X/A,A=2,OR,X1,X:=X+1,a,b,c,d,e,使得判定中的每個條件獲得各種可能的結果。,應滿足以下覆蓋情況:,判定一:A1,A,1,B=0,B,0,判定二:A=2,A,2,X1,X1,選擇用例:,(2,0,4),(2,0,3),(1,1,1),(1,1,1),N,N,Y,Y,2,A,1,A,2,0,B=0,4,X1,1,A1,A=2,1,B,0,1,X1,注意,:(1,0,3),(1,0,4),(2,1,1
7、),(2,1,2),滿足條件覆蓋,但不滿足判斷覆蓋。,4、判定/條件覆蓋,同時滿足判斷覆蓋和條件覆蓋。,A1,AND,B=0,X:=X/A,A=2,OR,X1,X:=X+1,a,b,c,d,e,應滿足以下覆蓋情況:,條件:A1,A,1,B=0,B,0,A=2,A,2,X1,X1,應執(zhí)行路徑,ace,abd,或:,acd,abe,選擇用例:,(2,0,4),(2,0,3)(ace),(1,1,1),(1,1,1)(abd),Y,Y,N,N,5、條件組合覆蓋,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。,A1,X:=X/A,A=2,X:=X+1,a,b,c,d,e,B=0,X1,Y,N,Y,N
8、,Y,N,Y,N,編譯系統(tǒng)下的執(zhí)行情況:,部分路徑未被執(zhí)行。,滿足以下覆蓋情況:,A1,B=0 ,A1,B,0,A,1,B=0,A,1,B0,A=2,X1,A=2,X1,A,2,X1,A,2,X1,選擇用例:,(2,0,4),(2,0,3),(2,1,1),(2,1,2),(1,0,3),(1,0,4),(1,1,1),(1,1,1),路徑覆蓋:選擇足夠多的測試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次。,START,INPUT,(,A,B,C,),IF A5,THEN X=10,ELSE X=1,END IF,IF B10,THEN Y=20,ELSE Y=2,END IF,IF C15,TH
9、EN Z=30,ELSE Z=3,END IF,PRINT(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,,,
10、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,二、動態(tài)測試方法,(2),等,價,分,類,法,邊,值
11、,分,析,法,錯,誤,推,測,法,因,果,圖,法,(2)黑盒法,不考慮程序的內(nèi)部結構與特性,只根據(jù)程序功能或程序的外部特性設計測試用例。,1、等價分類法,基本思想:,根據(jù)程序的,I/O,特性,將程序的定義域劃分為有限個等價區(qū)段,“,等價類,”,,從等價類中選擇出的用例,具有,“,代表性,”,。,等價類分為:,有效等價類,對于程序的規(guī)格說明是合理的、有意義的輸入數(shù)據(jù)構成的集合。,無效等價類,對于程序的規(guī)格說明,是不合理的,是沒有意義的輸入數(shù)據(jù)構成的集合。,等價分類法步驟,應,按照輸入條件,(如輸入值的范圍,值的個數(shù),值的集合,輸入條件必須如何)劃分為有效等價類和無效等價類。,例如:每個學生可選修
12、1-3門課程,可以劃分一個有效等價類:選修1-3門課程。,可以劃分兩個無效等價類:未選修課,選修課超過3門。,又如:標識符的第一個字符必須是字母。,可以劃分為一個有效等價類:第一個字符是字母。,可以劃分一個無效等價類:第一個字符不是字母。,劃分“等價類”,顯然,關鍵是,如何劃分等價類,A、,為每個等價類編號;,B、,使一個測試用例盡可能覆蓋多個有效等價類,C、,特別要注意的是:一個測試用例只能覆蓋一個無效等價類。,選擇測試用例,等價分類法步驟,如何劃分等價類?,有效等價類,(,合理等價類,),無效等價類,(,不合理等價類,),(1),如果,輸入,條件規(guī)定了取值,范圍,,可定義,一個有,效等價類
13、和兩個無效等價類。,例,輸入,值是學生成績,范圍是,0,100,0 100,有效等價類,0,成績,100,無效等價類,成績,100,無效等價類,成績,0,(2),如果,輸入,條件代表,集合,的某個元素,,則可,定義,一個有效等價類和一個無效等價類。,(,3),如規(guī)定了輸入數(shù)據(jù)的一組值,且程序對不同輸入值做不同處理,則每個允許的輸入值是一個有效等價類,并有一個無效等價類,(,所有不允許的輸入值的集合,),。,例:輸入條件說明學歷可為,:,???、本科、碩士、博士四種之一,則分別取這四個值作為四個有效等價類,另外把四種學歷之外的任何學歷作為無效等價類,(4),如果規(guī)定了,輸入,數(shù)據(jù),必須遵,循,的規(guī)
14、則,可,確定,一個有效等價類,(,符合規(guī)則,),和若干個無效等價類,(,從不同角度違反規(guī)則,),。,(5),如已劃分的等價類各元素在程序中的處理方式不同,則應將此等價類進一步劃分成更小的等價類。,用等價類劃分法設計測試用例步驟:,(1),形成,等價類表,,每一等價類規(guī)定一個唯一的,編號,;,(2),設計一,測試用例,,,使其盡可能多地覆蓋尚未,覆蓋,的,有效等價類,,,重復這一步驟,直到所有有效等價類均被測試用例所覆蓋;,(3),設計一新,測試用例,,,使其只,覆蓋,一個,無效等價類,,,重復這一步驟直到所有無效等價類均被覆蓋;,例,:,某報表處理系統(tǒng)要求用戶輸入處理報表的日期,日期限制在,2
15、003,年,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),“報表日期”輸入條件的等價類表,
16、小于,1,(9),大于,12,(10),第二步:,為有效等價類設計,測試用例,測試數(shù)據(jù) 期望結果,覆蓋,范圍,200306,等價類,(1)(2)(3),輸入,有效,對表中,編號為,1,2,3,的,3,個有效等價類用,一,個測試用例,覆蓋,:,(1),6,位數(shù)字,字符,(2),年在,2003,2008,之間,(3),月在,1,12,之間,第,三,步:,為每一個無效等價類設至少,設計一個,測試用例,測試數(shù)據(jù) 期望結果,覆蓋,范圍,003,MAY,等價類,(4),輸入無,效,20035,等價類,(5),輸入無,效,2003005,等價類,(6),輸入無,效,2001,05,等價類,(7),輸入無,效,2009,05,等價類,(8),輸入無,效,2003,00,等價類,(9),輸入無,效,2003,13,等價類,(10),輸入無,效,不能出現(xiàn)相同,的測試用例,本例的,10,個等價類至,少需要,8,個測試用例,2、邊值分析法,基本思想:,選擇等價類的邊緣值作為測試用例,讓每個等價類的邊界都得到測試,選擇測試用例既考慮,輸入,亦考慮,輸出,。,分析步驟:,A、,先劃分等價類。,B、,選擇測試用例,