軟件測試----等價類劃分

    方法定義:將所有可能輸入數據的數據域進行劃分,分成若干子集,再從其中選出少數具有代表性的的是用例測試程序,該方法是一種常用的黑盒測試方法。

等價類劃分可有兩種不同的情況:有效等價類和無效等價類。

  1)有效等價類
        是指對於程序的規格說明來說是合理的、有意義的輸入數據構成的集合。利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能。
  2)無效等價類

        與有效等價類的定義恰巧相反。無效等價類指對程序的規格說明是不合理的或無意義的輸入數據所構成的集合。對於具體的問題,無效等價類至少應有一個,也可能有多個。

▲劃分等價類的標準:
  1)完備測試、避免冗餘;
  2)劃分等價類重要的是:集合的劃分,劃分爲互不相交的一組子集,而子集的並是整個集合;
  3)並是整個集合:完備性;
  4)子集互不相交:保證一種形式的無冗餘性;

  5)同一類中標識(選擇)一個測試用例,同一等價類中,往往處理相同,相同處理映射到"相同的執行路徑"。

實例分析:首先是測試1600年至2100年的任意一天的下一天的日期情況,按照年、月、日的取值劃分。劃分情況如下:

1600<= y <=2100平年 ②1600<= y <=2100閏年 ③y <1600 ④y >2100 ⑤m∈{1,3,5,7,8,10} ⑥m∈{4,6,9,11} ⑦m = 2 ⑧m = 12 ⑨ m <1 ⑩m >12 ⑪1<= d <=27 ⑫d = 28 ⑬d = 29  ⑭d = 30  ⑮d = 31 ⑯d > 31 ⑰d < 1

按照等價類範圍選出某些具有代表性的策劃用例:

①2001.4.22  ②2000.2.29  ③1500.4.13  ④2101.5.10  ⑤2000.3.31 
⑥2100.12.30  ⑦2000.0.30  ⑧2000.13.2  ⑨2001.2.28  ⑩2000.1.32
⑪2000.1.0

然後根據測試用例測試程序將情況按表列出

測試實例
編號
日期(年/月/日) 預期結果 測試結果 備註 覆蓋等價類
Y M D
2001 4 22 2001年4月23日 2001年4月23日 pass   ①⑥⑪
2000 2 29 2000年3月1日 2000年3月1日 pass   ②⑦⑬
1500 4 13 輸入年份超出範圍! 輸入年份超出範圍! pass  
2101 5 10 輸入年份超出範圍! 輸入年份超出範圍! pass  
2000 3 31 2000年4月1日 2000年4月1日 pass   ⑤⑮
2100 12 30 2100年12月31日 2100年12月31日 pass   ⑧⑭
2000 0 30 不存在0月 2000年1月1日 failed 備註一
2000 13 2 輸入數據非法 輸入數據非法 pass  
2001 2 28 2001年3月1日 2001年3月1日 pass  
2000 1 32 不存在1月32日 2000年2月1日 failed 備註二
2000 1 0 輸入數據非法 2000年1月1日 failed 備註三
備註一:        
           
           
           
           
           
           
           
           
           
           
           
備註二:        
           
           
           
           
           
           
           
           
           
備註三:        
           
           
           
           
           
           
           

然後是測試三角形種類程序(感覺這個有錯誤)

等價類劃分: ①a<=0 ②a>200 ③b<=0 ④b>200 ⑤c<=0 ⑥c>200 ⑦0<a、b、c<200 ⑧(a+b)>c||(a+c)>b||(b+c)>a ⑨ (a+b)<c&&(a+c)<b&&(b+c)<a ⑩a=b||b=c||a=c ⑪a!=b&&a!=c&&b!=c ⑫a=b&&a=c&&b=c ⑬a!=b||a!=c||b!=c  ⑭a*a+b*b=c*c||a*a+c*c=b*b||b*b+c*c=a*a ⑮a*a+b*b!=c*c&&a*a+c*c!=b*b&&b*b+c*c!=a*a ⑯a*a+b*b=c*c&&(a=b||b=c||a=c)... ⑰a*a+b*b!=c*c||(a!=b&&b!=c&&a!=c)...
   
   
   
   
   
測試實例: ①4,5,6  ②1,1,2  ③2,2,3  ④2,2,2  ⑤3,4,5 
⑥1,1,1.414214(
2)  ⑦0,2,1  ⑧  ⑨201,100,150  ⑩20,201,190
⑪1,2,0  ⑫190,20,201
   
   
   
   
   
   
測試實例
編號
邊長 預期結果 測試結果 備註 覆蓋等價類  
a b c  
4 5 6 一般三角形 一般三角形 pass   ⑦⑧⑪⑬⑮⑰
1 1 2 非三角形 等腰三角形 failed 備註一  
2 2 3 等腰三角形 等腰三角形 pass    
2 2 2 等邊三角形 等邊三角形 pass    
3 4 5 直角三角形 直角三角形 pass    
1 1 1.414214 等腰直角三角形 等腰三角形 failed 備註二  
0 2 1 輸入數據非法 輸入數據非法 pass    
201 100 150 輸入數據非法 輸入數據非法 pass    
2 0 1 輸入數據非法 輸入數據非法 pass    
20 201 190 輸入數據非法 輸入數據非法 pass    
1 2 0 輸入數據非法 輸入數據非法 pass    
190 20 201 輸入數據非法 輸入數據非法 pass    

備註一:          
           
           
           
           
           
           
           
備註二:        
           
           
           
           
           
           
           
劃分等價類的方法用自己所理解的一句話來總結:即是每個等價類裏面的所有情況只能通過一個方法或者說是算法來得到結果。

這個條件所遇到的類似if else switch得到的結果都是一樣。結果也就是屬於一個類別

以上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章