等價類劃分法把程式的輸入域劃分為若幹部分,然後從每個部分中選取少量具有代表性資料當作測試用例。每一類的代表性資料在測試中的作用等價于這一類中的其他值。也就是說,如果某一類的一個用例發現了錯誤,這一類中的其他用例也可能發現同樣的錯誤;反之,若某一類中第一個用例沒有發現錯誤,則這一類中的其他用例也不會查出錯誤。
使用這一方法設計測試用例,首先必須在分析需求規格說明書的基礎上劃分等價類,列出等價類表。等價類劃分有兩種不同的情況:有效等價類和無效等價類。
在劃分等價類時,有一些規則應該遵循。
如果輸入條件規定了取值範圍或個數,則可确定一個有效等價類和兩個無效等價類。例如,輸入值時選課人數,在0~100之間,那麼有效等價類是:0<=學生人數<=100;無效等價類是:學生人數<0;學生人數>100。
如果輸入條件規定了輸入值的的類型,則可确定一個有效等價類和一個無效等價類。例如,輸入日期類型的資料。那麼有效等價類是日期類型的資料;無效等價類是非日期類型的資料。
如果輸入條件是一組值,且程式對不同的值有不同的處理方式,則每個允許的輸入值對應一個有效等價類,所有不允許的輸入值的集合為一個無效等價類。例如,輸入條件“職稱”的值是初級、中級、進階,那麼有效等價類應該有3個:初級、中級、進階。無效等價類有一個:其他任何職稱。
如果規定了輸入資料必須遵循的規則,可以劃分出一個有效等價類(符合規則)和若幹個無效等價類(從不同角度違反規則),比如密碼要求長度至少為6,且含有數字和字母。
劃分好等價類後,就可以設計測試用例了。設計測試用例的步驟可以歸結為3步:
對每個輸入和外部條件進行等價類劃分,畫出等價類表,并為每個等價類進行編号。
設計一個測試用例,使其盡可能多地覆寫有效等價類,重複這一步,直到所有的等價類被覆寫。
為每一個無效等價類設計一個測試用例。
人們長期的測試工作經驗中得知,大量的錯誤往往發生在輸入和輸出範圍的邊界上,而不是範圍的内部。是以,針對邊界情況設計測試用例,能夠更有效地發現錯誤。
通常情況下,軟體測試所包含的邊界條件有以下幾種類型:數字、字元、位置、品質、大小、速度、方位、尺寸、空間等;對應的邊界值應該在最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最長、空/滿等情況。
用邊界值分析法設計測試用例時應當遵循幾條原則:
如果輸入條件規定了取值範圍,應以該範圍的邊界内及剛剛超範圍的邊界外的值作為測試用例。
如果規定了值的個數,應分别以最大、最小個數和稍小于最小和大于最大個數作為測試用例。
如果輸入是有序的集合,如順序檔案、表格等,應注意選取有序集的第一個和最後一個元素作為測試用例。
如何使用等價類&&邊界值分析
舉個例子
淘寶店鋪老闆想搞活動,假設淘寶服務搞活動接口其中一個參數就是活動時長,後端規定活動的時長最多72個小時,最少24個小時。此時針對建立活動的這個時長參數,我們可以設計如下用例。
首先用等價類劃分法做一下劃分。
然後結合有效等價類1和無效等價類2345分别設計測試用例。