第七軟件測試_第1頁
第七軟件測試_第2頁
第七軟件測試_第3頁
第七軟件測試_第4頁
第七軟件測試_第5頁
已閱讀5頁,還剩66頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第七軟件測試第1頁,共71頁,2023年,2月20日,星期一第七章軟件測試對需求分析、設計、編碼的復查并測試,保證軟件的可靠性。主要內容:軟件測試的目的及原則軟件測試方法靜態與動態測試黑盒測試與白盒測試測試用例的設計白盒技術黑盒技術測試過程調試第2頁,共71頁,2023年,2月20日,星期一7.1軟件測試的目的及原則7.1.1軟件測試的目的G.J.Myers提出了軟件測試的目的:(1)軟件測試是為了發現錯誤而執行程序的過程(2)一個好的測試用例能發現至今尚未發現的錯誤(3)一個成功的測試是發現了至今尚未發現的錯誤的測試軟件測試的基本任務:根據開發各階段的文檔資料和程序的內部結構,精心設計一組“高產”的測試用例,利用這些實例執行程序,找出軟件中各種潛在的錯誤好缺陷。第3頁,共71頁,2023年,2月20日,星期一7.1.2軟件測試的原則軟件測試中的原則:(1)測試用例應由輸入數據和預期的輸出數據兩部分組成,便于對照檢查,做到“有的放矢”。(2)測試用例不僅選用合理的數據,還要選擇不合理的輸入數據。能夠較多的發現錯誤,提高程序的可靠性。對于不合理的輸入數據,程序應拒絕接受,并給出相應的提示。(3)除了檢查程序是否做了它應該做的事,還應該檢查程序是否做了它不應該做的事。(4)應制定測試計劃并嚴格執行,排除隨意性。(5)長期保留測試用例,測試用例必須作為文檔保存。以便回歸測試和維護時使用。(6)對于發現錯誤較多的程序,應該更深入的測試。(7)程序員避免測試自己的程序,由別人或機構來測試程序會更客觀,更有效。第4頁,共71頁,2023年,2月20日,星期一7.2測試方法測試方法分類:動態測試靜態測試黑盒測試白盒測試人工檢測計算機輔助靜態分析第5頁,共71頁,2023年,2月20日,星期一7.2.1靜態測試和動態測試1.靜態測試靜態測試:指被測試程序不在機器上運行,而是采用人工檢測和計算機輔助靜態分析的手段對程序進行檢測。人工檢測人工審查程序偏重于編碼質量的檢驗,對軟件審查除了審查編碼以外,還要對各階段的軟件產品進行檢驗。計算機輔助靜態分析計算機輔助靜態分析工具對被測試程序進行特性分析,從程序中提取一些信息,以便于檢查程序邏輯的各種缺陷和可疑的程序構造。如:用錯的局部和全局變量、不匹配的參數、不適當的循環嵌套和分支嵌套、潛在的死循環、不會執行到的代碼、過程的調用層次等等第6頁,共71頁,2023年,2月20日,星期一2.動態測試指通過程序運行發現錯誤。兩種測試方法:黑盒法和白盒法第7頁,共71頁,2023年,2月20日,星期一7.2.2黑盒測試法和白盒測試法1.黑盒法:又稱功能測試或數據驅動測試法把被測試對象看成一個黑盒子,無須考慮程序內部結構和處理過程,只在軟件接口處進行測試。依據需求規格說明書,檢查程序是否滿足功能要求。黑盒法主要發現以下錯誤:(1)是否有不正確或遺漏的功能(2)在接口上,能否正確的接受輸入數據,能否產生正確的輸出信息(3)訪問外部信息是否有錯(4)性能上是否滿足要求等等不能用窮舉法確定測試數據,但必須在所有可能輸入和輸出條件中確定測試數據。第8頁,共71頁,2023年,2月20日,星期一2.白盒法測試程序內部結構和處理過程。以檢查處理過程的細節為基礎,對程序中盡可能多的邏輯路徑進行測試。注:黑盒法和白盒法都不能使測試達到徹底。為此,要精心設計測試用例,用有限的測試發現更多的錯誤。第9頁,共71頁,2023年,2月20日,星期一7.3測試用例設計7.3.1白盒技術測試對象:源程序設計測試用例的基礎:程序內部邏輯結構設計測試用例的設計方法:邏輯覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合路徑組合循環覆蓋語句覆蓋第10頁,共71頁,2023年,2月20日,星期一1.邏輯覆蓋(1)語句覆蓋指設計足夠的測試用例,使被測程序中每個語句至少執行一次。(覆蓋標準)例:語句段語句段(a>1)AND(b=0)(a=2)OR(x>1)15T2T43FF若測試124,選擇數據為:a=2,b=0,x=3,可保證每個語句至少執行。滿足語句覆蓋標準。第11頁,共71頁,2023年,2月20日,星期一從每個語句都能執行來看,似乎全面的檢驗了每個語句,但只測試了邏輯表達式為“真”的條件。若將第一個邏輯表達式中的“AND”誤寫成“OR”仍用上述數據測試,則不能發現這個錯誤。同理將第一個邏輯表達式“X>1”錯寫成“X<1”也不能被發現。語句覆蓋是最弱的覆蓋標準。第12頁,共71頁,2023年,2月20日,星期一(2)判定覆蓋(分支覆蓋)指設計足夠的測試用例,使被測試程序中每個判定表達式至少獲得一次”真”和“假”的值。即使得每個分支都至少通過一次。(判定覆蓋標準)例如上例:只要通過124,135或125,134就達到判定覆蓋標準。以125,134路徑,選擇兩組測試用例:

a=3,b=0,x=1(125路徑)

a=2,b=1,x=2(134路徑)判定覆蓋比語句覆蓋嚴格;每個分支都執行過了,自然每個語句也都執行了。問題:測試仍不充分,上述數據只覆蓋了全部路徑的一半。如果將第二個判定表達式中的“X>1”錯寫成“X<1”仍查不出該錯誤。第13頁,共71頁,2023年,2月20日,星期一(3)條件覆蓋設計足夠的測試用例,使判定表達式中每個條件的各種可能的值至少出現一次。(條件覆蓋標準)例如:上述程序中有4個條件:a>1,b=0,a=2,x>1要選擇足夠的數據,使判定表達式1出現結果:a>1,b=0a≤2,b≠0并使判定表達式2出現結果:a=2,x>1a≠2,x≤1才能達到覆蓋標準。第14頁,共71頁,2023年,2月20日,星期一為滿足上述要求,設計下列兩組測試用例:a=2,b=0,x=3;滿足a>1,b=0,a=2,x>1,通過路徑124a=1,b=1,x=1;滿足a≤1,b≠0,a≠2,x≤1,通過路徑135它們不斷覆蓋了表達式中所有條件的可能取值,而且覆蓋了所有取”真”和“假”的值的分支。這種情況下,條件覆蓋強于判定覆蓋。但是,滿足“條件覆蓋”不一定滿足“判定覆蓋”假定選擇另外兩組測試用例:a=1,b=0,x=3;滿足a≤1,b=0,a≠2,x>1a=2,b=1,x=1;滿足a>1,b≠0,a=2,x≤1覆蓋了表達式中所有條件結果,滿足條件覆蓋。但不滿足判定覆蓋標準。上面用例只覆蓋了第一個判定表達式取“假”分支和第二個判定表達式取“真”分支,即只測試了路徑134。因此,此用例不滿足判定標準。第15頁,共71頁,2023年,2月20日,星期一(4)判定/條件覆蓋設計足夠的測試用例,使得判定表達式的每一個條件的所有可能取值至少出現一次,并能使每一判定表達式所有可能的結果也至少出現一次。(判定/條件覆蓋)顯然:其覆蓋標準同時滿足判定覆蓋和條件覆蓋的要求標準。判定/條件覆蓋強于判定覆蓋和條件覆蓋。例如:對上述程序設計兩組測試用例滿足判定/條件覆蓋:

a=2,b=0,x=3;(沿路徑124執行)

a=1,b=1,x=1;(沿路徑135執行)從表面上看,判定/條件覆蓋能使各種條件取到所有可能的值,但實際上條件組合中某些條件會抑制其它條件。如:第一個條件表達式中,含有“與”運算,當第一個條件為“假”,則后面的其它條件均不起作用。條件表達式取值為“假”;在含有“與”運算的表達式中,當第一個條件為“真”時,則后面的其它條件也不起作用,表達式取值為“真”。因此,后面其它條件有寫錯的情況就測試不出來。第16頁,共71頁,2023年,2月20日,星期一(5)條件組合覆蓋設計足夠的測試用例,使得每一個判定表達式的條件的各種可能的組合。(條件組合覆蓋標準)上述程序中,有兩個判定表達式共有4個條件,因此有8種組合:

①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下面4組測試用例就可以滿足條件組合覆蓋標準:

第17頁,共71頁,2023年,2月20日,星期一a=2,b=0,x=2,覆蓋條件組合①和⑤,通過路徑124a=2,b=1,x=1,覆蓋條件組合②和

⑥,通過路徑134a=1,b=0,x=2,覆蓋條件組合③

和⑦,通過路徑134a=1,b=1,x=1,覆蓋條件組合④

和⑧,通過路徑135每個條件不止一次的取得真假值,但沒有覆蓋可能的全部路徑,125漏掉了。顯然:滿足條件組合覆蓋的測試,一定滿足判定覆蓋、條件覆蓋和判定覆蓋/條件覆蓋。第18頁,共71頁,2023年,2月20日,星期一(6)路徑覆蓋設計足夠的測試用例,覆蓋被測試程序中所有可能的路徑。(路徑覆蓋標準)對上例,選擇下列測試用例,覆蓋程序中的所有4條路徑:a=2,b=0,x=2,覆蓋路徑124;覆蓋條件組合①和⑤,a=2,b=1,x=1,覆蓋路徑134;覆蓋條件組合②和

⑥a=1,b=1,x=1,覆蓋路徑135;覆蓋條件組合④

和⑧a=3,b=0,x=1,覆蓋路徑125;覆蓋條件組合①和⑧可以看出,滿足路徑覆蓋卻沒有滿足條件組合覆蓋。六種覆蓋標準的比較:第19頁,共71頁,2023年,2月20日,星期一發現弱錯誤的能力

強語句覆蓋每個語句至少執行一次判定覆蓋每個判定的分支至少執行一次條件覆蓋每個判定的每個條件應取到各種可能的值判定/條件覆蓋同時滿足判定覆蓋和條件覆蓋條件組合覆蓋每個判定中各個條件的每種組合至少出現一次路徑覆蓋程序中每條可能的路徑至少執行一次第20頁,共71頁,2023年,2月20日,星期一語句覆蓋發現錯誤的能力最弱;判定覆蓋包含了語句覆蓋,但它會使一些條件得不到滿足。條件覆蓋對一條件進行單獨檢查,一般情況下,它的檢查能力較判定覆蓋強,但有時達不到判定覆蓋的要求。判定/條件覆蓋包含了判定覆蓋和條件覆蓋的要求。由于軟件實現方式的限制,實際上不一定達到條件覆蓋的標準。條件組合覆蓋發現錯誤的能力較強,凡滿足某覆蓋標準的測試用例,必滿足前4種覆蓋標準。前5種覆蓋把測試集中注意力放到判定或判定的各個條件上,可能會使程序某種路徑上沒有執行到。路徑覆蓋以判定的整體組合條件出發設計測試用例,可能使測試用例達不到條件組合覆蓋的要求。在實際測試中,一般以條件組合覆蓋為主設計測試用例,然后補充部分用例,以達到路徑覆蓋的標準。 例:06年試題40題:設有如下的程序流程圖:第21頁,共71頁,2023年,2月20日,星期一XY測試數據組100測試數據組203測試數據組33-1測試數據組44-2測試數據組541(x<3)or(y>0)Y>1X≥4語句1語句3語句2FFFTTT1324567第22頁,共71頁,2023年,2月20日,星期一根據表中的測試數據組回答下列問題:1.滿足語句覆蓋的最少測試組合是什么?2.滿足判定覆蓋的最少測試組合是什么?3.滿足條件組合覆蓋的最少測試組合是什么?解:1.語句覆蓋標準,每個語句至少執行1次。

6個語句至少執行1次。由1可知:測試組1:x=0,y=0,可測試136路徑,不執行非判定語句測試組2:x=0,y=3,可測試137路徑,執行語句1

測試組3:x=3,y=-1,可測試124路徑,執行語句3

測試組4:x=4,y=-2,可測試125路徑,執行語句2

測試組2,3,4為最少測試組合。

2.判定覆蓋標準:每個判定的每個分支至少執行1次。

6個分支至少執行1次。由1可知:測試組1,2,3,4使得6個分支至少執行1次,且為最后少的測試組;第23頁,共71頁,2023年,2月20日,星期一或者:測試組5:x=4,y=1,可測試136路徑,則滿足要求的另一個最少測試組組合:2,3,4,5.3.條件組合覆蓋標準:每個判定中各個條件的每種組合至少執行1次。程序中有4個判定條件,共有8種組合:①X<3,Y>0②X<3,Y≤0③X≥3,Y>0④X≥3,Y≤0⑤X≥4⑥Y<4⑦Y>1⑧Y≤1

測試組4覆蓋條件組合⑤④測試組2覆蓋條件組合①⑦測試組1覆蓋條件組合②⑥測試組5,4,3覆蓋條件組合③⑧滿足條件組合覆蓋的最少測試組合:1,2,3,4,5第24頁,共71頁,2023年,2月20日,星期一2.循環覆蓋以上討論了程序內部有判定存在的邏輯結構的測試用例設計技術。下面討論循環結構測試用例技術。不可能覆蓋含有循環結構的所有路徑。一般用限制循環次數來測試循環結構。第25頁,共71頁,2023年,2月20日,星期一設計原則:(1)單循環設計以下情況的測試用例跳過循環只執行循環一次執行循環m次,其中m>n(n是循環的最大次數)執行循環n-1次,n次,n+1次(2)嵌套循環置外循環處于最小循環計數值,對于內層進行單循環測試由內向外,進行下一層的循環測試第26頁,共71頁,2023年,2月20日,星期一3.基本路徑測試根據程序的控制流圖路徑設計測試用例采用的工具:程序控制圖(程序圖)基本思路:壓縮覆蓋的路徑數步驟:(1)以詳細設計或源程序為基礎,導出控制流程圖的拓撲結構-程序圖,程序圖由程序流程圖(或PDL,N-S,PAD等)轉換而來。轉換要點:一個或多個順序語句可轉換為程序圖中一個結點。一個處理序列和一個判斷框可轉換為程序圖中一個結點。程序控制流向轉換成程序圖的邊;一條邊必須終止一個結點;在選擇結構中的匯集處,即使無語句也應該有一個匯集結點。若判斷框中的邏輯表達式是復合條件,應分解一系列只有單個條件的嵌套判斷結點。第27頁,共71頁,2023年,2月20日,星期一12,34,587691011abcd163725489●10

●11程序流程圖圖中的圓圈稱為結點,代表流程圖中每個處理符號(矩形、菱形框);箭頭稱為邊或路徑。程序圖第28頁,共71頁,2023年,2月20日,星期一(2)計算程序圖G的環路復雜性V(G)采用三種方法之一計算:按McCabe定義的區域的個數+1(圖形外區域數)計算.區域:邊和結點圈定的封閉區域。如:a,b,c區域,d為圖形外區域∴V(G)=3+1=4V(G)=判定點數+1三個判定點:1;(2,3);6。∴V(G)=3+1=4V(G)=邊數-結點數+2邊數:11;結點數:9,∴V(G)=11-9+2=4第29頁,共71頁,2023年,2月20日,星期一(3)確定只包含獨立路徑的基本路徑集環路的復雜性V(G)就是獨立路徑的條數,是構成基本路徑集的獨立路徑的上界,也是確保程序中每個執行語句至少執行一次所需的測試用例數目的上界。獨立路徑:程序圖中一條獨立路徑是至少包含有一條在其它獨立路徑中未有過的邊的路徑。即一條獨立路徑必須含有一條新邊程序圖中一組獨立路徑(共4條)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在獨立路徑集中每條獨立路徑上設計測試用例,可以確定程序中每個可執行語句至少執行一次。注:基本獨立路徑集不是唯一的。第30頁,共71頁,2023年,2月20日,星期一(4)設計測試用例,確?;惊毩⒙窂郊忻織l路徑的執行。例:下列程序流程圖,最多輸入50個值(以-1為輸入結束標志),計算其中有效的學生分數的個數,總分和平均分數。i=1,n1=n2,sum=0Score[i]<>-1ANDn2<50Score[i]>0ANDscore[i]<100n2=n2+1n1=n1+1,sum=sum+score[i]Ave=sum/n1Ave=-1i=i+1n1>0開始FFTTFT175和642和389101112程序流程圖123456789101112程序圖R1R2R3R4R5R6第31頁,共71頁,2023年,2月20日,星期一步驟:①導出程序圖②計算V(G)供有R1-R6共有6個區域,V(G)=6③確定基本獨立路徑集有6條獨立路徑Path1:1-2-9-10-12Path2:1-2-9-11-12Path3:1-2-3-9-10-12Path4:1-2-3-4-5-8-2…..Path5:1-2-3-4-5-6-8-2…..Path6:1-2-3-4-5-6-7-8-2…..第32頁,共71頁,2023年,2月20日,星期一④為每條獨立路徑各設計一組測試用例,迫壓程序沿著這些路徑至少執行一次路徑1(1-2-9-10-12)的測試用例:score[k]=有效分數值,當k<i;score[i]=-1,2≤i≤50;期望結果:根據輸入的有效分數算出正確的分數個數n1,總分sum和平均分數Ave路徑2(1-2-9-11-12)測試用例:score[i]=-1;期望結果:Ave=-1,其它量保持初值路徑3(1-2-3-9-10-12)測試用例:輸入多余50個有效分數,即試圖處理51個分數,要求前51個為有效分數期望結果n1=50,且算出正確的總分和平均分第33頁,共71頁,2023年,2月20日,星期一路徑4(1-2-3-4-5-8-2)測試用例:score[i]=有效分數,當i<50;score[k]=0,k<i;期望結果:根據輸入的有效分數,算出正確的分數個數n1,總分sum和平均分數Ave路徑5(1-2-3-4-5-6-8-2)測試用例:score[i]=有效分數,當i<50;score[k]>100,k<i;期望結果:根據輸入的有效分數,算出正確的分數個數n1,總分sum和平均分數Ave路徑6(1-2-3-4-5-6-7-8-2)測試用例:score[i]=有效分數值,當i<50;期望結果:根據輸入的有效分數,算出正確的分數個數n1,總分sum,平均分數Ave第34頁,共71頁,2023年,2月20日,星期一例:08年10月試題40題:下面是一段偽碼程序(代碼前的數字只作標號用,不參與程序執行):

START1:INPUT(A,B,C,D)2:IF(A>0)AND(B>0)THEN3:X=A+BELSE4:X=A-B5:END6:IF(C>A)OR(D<B)THEN7:Y=C-DELSE8:Y=C+D9:END10:PRINT(X,Y)STOP根據以上的描述(1)畫出對應的流程圖和程序圖。(2)計算程序圖的環形復雜度。STARTINPUT(A,B,C,D)(A>0)AND(B>0)(C>A)OR(D<B)PRINT(X,Y)X=A+BX=A-BY=C+DY=C-DSTOPFTTF第35頁,共71頁,2023年,2月20日,星期一STARTINPUT(A,B,C,D)(A>0)AND(B>0)(C>A)OR(D<B)PRINT(X,Y)X=A+BX=A-BY=C+DY=C-DSTOPFTTF12435678910111212,35467,89101112V(G)=5注:有的參考答案是錯誤的。第36頁,共71頁,2023年,2月20日,星期一例:08年1月試題40題:下面是一段偽碼程序(代碼前的數字只作標號用,不參與程序執行):1:START2:IFL1THEN3:S14:DOWHILEL25:S26:IFL3THEN7:S3ELSE8:S49:ENDIF10:ENDDOELSE11:S512:ENDIF13:STOP根據以上的描述(1)畫出對應的PAD圖。(2)計算程序圖的環形復雜性。第37頁,共71頁,2023年,2月20日,星期一STARTSTOPL1S1S2S3S4S5DOWHILEL2L3TTFFSTARTL1STARTL2L3S1S2S3S4S5L1L2L3S1S2S3S4FFTTTFS5V(G)=4第38頁,共71頁,2023年,2月20日,星期一7.3.2黑盒技術黑盒測試或稱功能測試(又稱接口測試)依據:需求分析說明和概要設計中有關程序功能或輸入、輸出之間的關系。黑盒測試的類型:等價類劃分測試邊界值分析測試錯誤推測因果圖測試實際應用中,需要綜合這幾類方法進行測試。黑盒測試的關鍵:從輸入集合中選擇極有可能發現錯誤的那些輸入。第39頁,共71頁,2023年,2月20日,星期一1.等價類劃分思想:將輸入數據按有效的(合理)和無效的(不合理)劃分成若干個等價類,選擇其中代表值作為測試該類的測試用例。等價類劃分測試用例的步驟:(1)劃分等價類按程序功能的說明找出一個輸入條件,然后為每個輸入條件劃分為兩個或多個等價類,列于下表中:輸入條件合理等價類不合理等價類劃分等價類是比較復雜的,需要設計者的經驗第40頁,共71頁,2023年,2月20日,星期一幾種經驗如下:①如果某個輸入條件規定了取值范圍或值的個數,則可以確定一個合理的等價類和兩個不合理的等價類(輸入值或個數小于這個范圍的最小值或者大于這個范圍的最大值)。例如:輸入學生的成績,范圍:0-100,確定一個合理的等價類為:1≤成績≤100;兩個不合理的等價類為:成績<0和成績>100②如果規定了輸入數據的一組值,而且對不同的的輸入值有不同的處理,則每一個允許輸入值是一個合理的等價類,另外還有一個不合理的等價類(任何一個不允許的輸入值)例如:有輸入條件說明教師的職稱可以是助教、講師、副教授、教授四種職稱之一。則這四個值作為四個合理的等價類;四個職稱以外的為合理的等價類。③如果規定了輸入數據必須遵循的規則,可將符合規則的作為一個合理的等價類;若干違反規則的劃分為不合理的等價類。④如果已劃分的等價類中各元素在程序中的處理方式不同,則應該將此等價類進一步劃分為更小的等價類。劃分經驗已適合輸出數據的劃分等價類。第41頁,共71頁,2023年,2月20日,星期一(2)確定測試用例步驟:①為每一個等價類編號;②設計一個測試用例,盡可能的覆蓋尚未覆蓋過的合理等價類;重復這步,直到所有合理等價類被測試用例覆蓋。③對不合理等價類,設計測試用例同②步。例1:一報表處理系統,要求用戶輸入處理報表的日期。假定日期限制在1990年1月至1999年12月,即系統只能對這段時間的報表進行處理。如果用戶輸入日期不在此日期范圍內,則顯示輸入錯誤信息。輸入日期為6位數,取4位為年,后兩位代表月。現用等價類劃分法設計測試用例,測試程序的“日期檢查功能”。第42頁,共71頁,2023年,2月20日,星期一劃分等價類并編號輸入條件合理等價類不合理等價類報表日期1、6位數數字2、有非數字字符3、少于6位數數字4、多于6位數數字年份范圍5、在1990—1999之間6、小于19907、大于1999月份范圍8、在1—12月之間9、等于010、大于12為合理等價類設計測試用例表中編號為1、5、8對應的三個合理等價類,用一個測試用例覆蓋。

測試數據期望結果覆蓋范圍

199905輸入有效1、5、8第43頁,共71頁,2023年,2月20日,星期一為每一個不合理等價類至少設計一個測試用例測試數據期望結果覆蓋范圍

99MAY輸入無效219995輸入無效31999005輸入無效4198912輸入無效6200001輸入無效7199800輸入無效9199813輸入無效10不能出相同的測試用例,否則相當于一個用例覆蓋了一個以上不合理等價類,使程序測試不完整。缺點:沒有注意選擇高效的,能發現更多錯誤的測試用例。第44頁,共71頁,2023年,2月20日,星期一例:某“調整工資”處理模塊接受一個“職稱”的變量。根據職稱的不同(助教,講師,副教授,教授)使用不同的處理,其中若是助教還必須輸入工齡,只有工齡超過2年才能調工資,請用等價類劃分設計測試用例。解:根據題意,等價類劃分為:輸入數據合理等價類不合理等價類職稱①教授②副教授③講師④4種職稱之外的任意一種職稱兼工齡⑤助教兼工齡大于2年⑥助教兼工齡等于2年⑦助教兼工齡小于2年設計測試用例:第45頁,共71頁,2023年,2月20日,星期一輸入數據預期結果覆蓋范圍教授輸入有效,進行調工資處理①

副教授輸入有效,進行調工資處理②

講師

輸入有效,進行調工資處理③

助教3輸入有效,進行調工資處理⑤助教2輸入有效,不調工資⑥助教1輸入有效,不調工資⑦

工程師輸入無效④第46頁,共71頁,2023年,2月20日,星期一例:07下半年考試41題:函數Find(array,L,R,Value)但是功能是在一個整數數組array中搜索第一個值為Value的整數,搜索的范圍在數組下標L到R范圍內。如果搜到這個數,則函數值為一個等于該數的型標,否則函數值為-1,假設數組非空,數組長度可由一內置函數得知,數組第一個元素下標為1.請根據題意采用等價分類法設計測試用例。解:(1)根據題意將數據劃分如下的等價類第47頁,共71頁,2023年,2月20日,星期一查找數據合理等價類不合理等價類

L①L>=1且L<=R且L<=array長度②L<1③L>R④R>array長度

R

value⑤R>=1且L<=R且R<=array長度⑨數值,值可搜索到⑩數值,值搜索不到⑥R<1⑦R<L⑧R>array長度⑾非數值用例:第48頁,共71頁,2023年,2月20日,星期一先設計一個數組:a1={10,6,6,9,5,8,11}(1)為每一個合理的等價類設計測試用例,對于表中編號為①⑤⑨⑩對應的等價類,可用以下兩個測試用例覆蓋:輸入:array=a1,L=1,R=7,value=6

預期輸出結果:2

輸入:array=a1,L=1,R=7,value=7

預期輸出結果:-1

(2)為每一個不合理的等價類設計測試用例:測試數據期望結果覆蓋范圍

array=a1,L=6,R=4,value=9array=a1,L=0,R=0,value=9array=a1,L=8,R=9,value=6array=a1,L=1,R=4,value=“abc1”

-1-1-1-1③,⑦②,⑥④,⑧

(11)第49頁,共71頁,2023年,2月20日,星期一2.邊界值分析指輸入等價類和輸出等價類邊界上數據值的測試。測試邊界值可以發現更多的被疏忽的錯誤。邊界值分析法往往與等價類劃分法結合起來設計測試用例。即在等價類劃分的基礎上,采用邊界值分析法,選擇有效的邊界值設計測試用例。在邊界值選擇正好等于、大于2和小于的邊界值。邊界值分析的一些設計原則:如果輸入條件規定了值的范圍,可選擇正好等于邊界值的數據作為合理等價類的測試用例;同時也應選擇超過邊界值的數據作為不合理的測試用例。如:輸入值的范圍是[1,100],可選0,1,100,101等值作為測試用例。如果輸入條件指出了數據的輸入個數;則按最大個數,最小個數,比最小個數少1,比最大個數大1等值設計測試用例。如:一個文件有1—255個記錄,可選1,255,0,256個記錄作為設計測試用例。第50頁,共71頁,2023年,2月20日,星期一對每個輸出條件分別按(1),(2)確定輸出值的邊界值。如果輸入輸出域是個有序集合(如順序文件,線性表,鏈表等),選擇集合中第一個元素和最后一個元素作為測試用例。例:上例1,用邊界值分析法設計測試用例程序中判斷輸入日期是否有效,假設用下列語句:

IF(reportData<=MaxData)AND(reportData>=MinData)

THEN產生指定的日期報表

ELSE顯示錯誤信息

ENDIF若將“<=”誤寫成“<”,則上例1中所有的測試用例都不能發現這個錯誤。采用邊界值分析法的測試用例如下表:第51頁,共71頁,2023年,2月20日,星期一輸入等價類測試用例說明測試數據期望結果選擇理由報表日期1個數字字符5個數字字符7個數字字符有一個非數字字符全部是非數字字符6個數字字符

51999519990051999.5Mary..199905顯示出錯........顯示有效僅有一個合法字符比有效長度少1比有效長度多1只有1個非法字符

6個非法字符類型及長度有效日期范圍在有效邊界上選取數據199901199912199000199913輸入有效..顯示出錯..最小日期最大日期剛好小于最小日期剛好大于最大日期月份范圍月份為1月月份為12月月份<1月份為>12199801199812199800199813輸入有效..輸入無效..最小月份最大月份剛好小于最小月份剛好大于最大月份14個測試用例,使測試更徹底第52頁,共71頁,2023年,2月20日,星期一3.錯誤推測指在測試程序時,人們可以根據經驗或直覺推測程序中可能存在的各種錯誤,從而有針對性編寫檢查這些錯誤的測試用例。錯誤推測沒有確定的步驟,憑經驗進行?;舅悸罚毫谐龀绦蛑锌赡馨l生錯誤的情況,根據這些情況選取測試用例。4.因果圖等價類劃分和邊界分析法都只是獨立的考慮各個輸入數據的測試功能,而沒有考慮,多個輸入數據組合引起的錯誤。因果圖能有效地檢測輸入條件的各種組合可能引起的錯誤。基本原理:通過畫因果圖,把自然語言描述的功能說明轉換為判定表,最后為判定表的每一列設計一個測試用例。第53頁,共71頁,2023年,2月20日,星期一5.綜合策略在實例中,聯合使用各種測試方法,形成綜合策略。通常先用黑盒法設計基本的測試用例,再用白盒法補充一些必要地測試用例。具體做法:在任何情況下都應使用邊界分析法設計用例時,應該包括輸入數據的邊界情況又包括輸出邊界情況。必要時用等價類劃分法補充一些測試用例。再用錯誤推測法補充測試用例。檢查上述測試用例的覆蓋程度,如未滿足所要求的覆蓋標準,再增加用例。如果規格說明中含有輸入條件的組合情況,則開始就使用因果圖法。第54頁,共71頁,2023年,2月20日,星期一7.4測試過程7.4.1軟件測試過程信息軟件測試時,需要三類信息:軟件配置:需要規格說明書,設計說明書,源程序等。測試配置:測試方案,測試用例,測試驅動程序等。測試工具:計算機輔助測試的有關工具。7.4.2軟件測試步驟與各開發階段的關系軟件產品在交付使用之前,一般經過4步測試:單元測試,集成測試,確認測試和系統測試第55頁,共71頁,2023年,2月20日,星期一單元測試:對源程序中每一個程序單元進行測試,檢查各個模塊是否正確的實現規定的功能,從而發現模塊在編碼中或算法中的錯誤。該階段涉及編碼和詳細設計文檔。集成測試:將已進行單元測試的模塊組裝起來進行的集成測試,以檢查與設計相關的軟件體系結構的有關問題。確認測試:主要檢查已實現的軟件是否滿足需求規格說明書中確定的各種要求。系統測試:把已確認的軟件與其它系統元素(如:硬件.支持軟件.數據.人工等)結合在一起進行測試。模塊單元測試可交付軟件模塊模塊單元測試單元測試集成測試確認測試系統測試設計信息軟件需求其它系統元素已集成的軟件確認的軟件已測模塊第56頁,共71頁,2023年,2月20日,星期一測試與軟件各開發階段的關系:集成測試:確認測試:單元測試需求分析概要設計詳細設計編碼確認修改通過通過修改修改修改第57頁,共71頁,2023年,2月20日,星期一7.4.3單元測試1.單元測試的內容包括:模塊接口,局部數據結構,重要執行的路徑,錯誤處理,邊界條件(1)模塊接口:檢查參數的個數,屬性相互對應關系是否一致。(2)局部數據結構:數據說明不正確或不一致,初始化或缺省值錯誤,變量名未定義,數據類型不相容等。(3)重要執行的路徑:路徑包括:計算路徑,控制流向中的路徑。計算路徑的查錯:運算符優先級次序不正確;運算方法有問題;數據精度不夠等控制流向中的錯誤:判斷表達式條件不正確,值的精度造成相對比較出錯,死循環,循環變量修改出錯等第58頁,共71頁,2023年,2月20日,星期一(4)錯誤處理:檢查程序對出錯處理的能力。不能正確處理外部數據輸入錯誤。沒有出錯處理的提示詳細等。(5)邊界條件:輸入/輸出數據的等價類邊界,選擇和循環條件的邊界,復雜數據結構的邊界等。2.測試方法由于模塊不是獨立的程序,它可以被其它模塊所調用或它調用其它模塊。本身不能單獨運行,因此,為被測模塊設計驅動(driver)模塊和樁(stub)模塊。驅動模塊的作用:用來模擬被測模塊的上級調用模塊,接受被測模塊的輸出。樁模塊:用來代替被測模塊所調用的模塊,返回被測模塊所需的信息。在于被測模塊有聯系的模塊尚未測試或沒有編寫完成,驅動模塊和樁模塊有必要設計。驅動模塊樁模塊1樁模塊2B測試用例測試結果被測模塊MABCDE模擬D模擬E模擬M第59頁,共71頁,2023年,2月20日,星期一7.4.4集成測試又稱:組裝測試或聯合測試對已進行單元測試后,組裝或整個系統的測試。(1)集成測試的原因單個模塊能正常工作,組裝后不一定能正常工作,原因是:單元產生使用的驅動模塊和樁模塊,與它們所代替的模塊不完全等效,因此單元測試有不徹底、不嚴格的情況。各個模塊組裝后,穿越模塊接口的數據可能會丟失。一個模塊的功能可能會對另一個模塊的功能產生不利影響。各個模塊的功能組合后可能達不到預期要求的主功能,單模塊可以接受的誤差,組裝后可能累積和放大到不能接受的程度全局數據可能會出現問題第60頁,共71頁,2023年,2月20日,星期一(2)集成測試的方法分成:非漸增式的測試漸增式的測試非漸增式的測試:對每一個模塊單元測試后,將其組裝一起的測試。漸增式的測試:將未測試的模塊組裝到已測試的模塊上后的集成測試,每加入一個新模塊,就集成測試一次,直至模塊組裝完成。兩種測試的方法的區別:非漸增式的測試,把單元測試和集成測試分成兩個階段,先單元測試,后集成測試;漸增式的測試,把單元測試和集成測試合在一起,同時完成。非漸增式的測試需要更多的工作量,因為需要設計驅動模塊和樁模塊;漸增式的測試工作量比較少,因為它可以利用已測試模塊作為驅動模塊和樁模塊。第61頁,共71頁,2023年,2月20日,星期一漸增式可以較早地發現接口錯誤,非漸增式最后組裝時才發現。漸增式有利于排錯,發生錯誤往往與加入模塊有關。非漸增式發現接口錯誤推遲到最后,很難判斷是那一部分接口出錯。漸增式較徹底,已測試模塊和新的模塊再測試。漸增式占用時間較多非漸增式開始可并行測試所有模塊,能充分利用人工,對大型軟

溫馨提示

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

評論

0/150

提交評論