黑盒測試等價類劃分法

測試用例設計白皮書--等價類劃分方法
Author: Vince      來源:http://blog.csdn.net/vincetest 


一.方法簡介

1.定義
  是把所有可能的輸入數據,即程序的輸入域劃分成若干部分(子集),然後從每一個子集中選取少數具有代表性的數據作爲測試用例。該方法是一種重要的,常用的黑盒測試用例設計方法。
    
2.劃分等價類:
  等價類是指某個輸入域的子集合。在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的,併合理地假定:測試某等價類的代表值就等於對這一類其它值的測試,因此,可以把全部輸入數據合理劃分爲若干等價類,在每一個等價類中取一個數據作爲測試的輸入條件就可以用少量代表性的測試數據取得較好的測試結果。等價類劃分可有兩種不同的情況:有效等價類和無效等價類。
  1)有效等價類
    是指對於程序的規格說明來說是合理的、有意義的輸入數據構成的集合。利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能。
  2)無效等價類
    與有效等價類的定義恰巧相反。無效等價類指對程序的規格說明是不合理的或無意義的輸入數據所構成的集合。對於具體的問題,無效等價類至少應有一個,也可能有多個。
  設計測試用例時,要同時考慮這兩種等價類。因爲軟件不僅要能接收合理的數據,也要能經受意外的考驗,這樣的測試才能確保軟件具有更高的可靠性。
   
3.劃分等價類的標準:
  1)完備測試、避免冗餘;
  2)劃分等價類重要的是:集合的劃分,劃分爲互不相交的一組子集,而子集的並是整個集合;
  3)並是整個集合:完備性;
  4)子集互不相交:保證一種形式的無冗餘性;
  5)同一類中標識(選擇)一個測試用例,同一等價類中,往往處理相同,相同處理映射到"相同的執行路徑"。

4.劃分等價類的方法
  1)在輸入條件規定了取值範圍或值的個數的情況下,則可以確立一個有效等價類和兩個無效等價類。如:輸入值是學生成績,範圍是0~100;


  2)在輸入條件規定了輸入值的集合或者規定了"必須如何"的條件的情況下,可確立一個有效等價類和一個無效等價類;
  3)在輸入條件是一個布爾量的情況下,可確定一個有效等價類和一個無效等價類。
  4)在規定了輸入數據的一組值(假定n個),並且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。
    例:輸入條件說明學歷可爲:專科、本科、碩士、博士四種之一,則分別取這四種這四個值作爲四個有效等價類,另外把四種學歷之外的任何學歷作爲無效等價類。
  5)在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則);
  6)在確知已劃分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步的劃分爲更小的等價類。
  
5.設計測試用例
  在確立了等價類後,可建立等價類表,列出所有劃分出的等價類輸入條件:有效等價類、無效等價類,然後從劃分出的等價類中按以下三個原則設計測試用例:
  1)爲每一個等價類規定一個唯一的編號;
  2)設計一個新的測試用例,使其儘可能多地覆蓋尚未被覆蓋地有效等價類,重複這一步,直到所有的有效等價類都被覆蓋爲止;
  3)設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重複這一步,直到所有的無效等價類都被覆蓋爲止。
  
二.實戰演習
1.某程序規定:"輸入三個整數 a 、 b 、 c 分別作爲三邊的邊長構成三角形。通過程序判定所構成的三角形的類型,當此三角形爲一般三角形、等腰三角形及等邊三角形時,分別作計算 … "。用等價類劃分方法爲該程序進行測試用例設計。(三角形問題的複雜之處在於輸入與輸出之間的關係比較複雜。)
  分析題目中給出和隱含的對輸入條件的要求: 
  (1)整數    (2)三個數    (3)非零數   (4)正數   
  (5)兩邊之和大於第三邊     (6)等腰     (7)等邊 
   如果 a 、 b 、 c 滿足條件( 1 ) ~ ( 4 ),則輸出下列四種情況之一:
   1)如果不滿足條件(5),則程序輸出爲 " 非三角形 " 。
   2)如果三條邊相等即滿足條件(7),則程序輸出爲 " 等邊三角形 " 。
   3)如果只有兩條邊相等、即滿足條件(6),則程序輸出爲 " 等腰三角形 " 。
   4)如果三條邊都不相等,則程序輸出爲 " 一般三角形 " 。 
   列出等價類表並編號


   覆蓋有效等價類的測試用例:
    a      b      c              覆蓋等價類號碼
    3      4      5             (1)--(7)
    4      4      5             (1)--(7),(8)
    4      5      5             (1)--(7),(9)    
    5      4      5             (1)--(7),(10)
    4      4      4             (1)--(7),(11)
   覆蓋無效等價類的測試用例:


發佈了34 篇原創文章 · 獲贊 47 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章