測試設計技術:等價劃分(Equivalence Partitioning)之介紹與應用
在介紹等價分類的測試技術內容之前,我們先來了解一下甚麼是測試設計技術。我們做測試最重要目的是「儘早發現盡量多的缺陷」,因為窮盡測試是不可能的。用盡量少的測試案例,發現盡量多的缺陷就是運用測試設計技術的主要目的,但我們該如何能達成呢? 答案便是利用測試設計技術來達到此目的。
測試設計技術類型可劃分如下圖
就軟體測試工程師/QA而言,若熟知軟體knowhow,一般在人工檢查時會被要求審查需求規格書,有的更資深的QA甚至會檢查規格設計文件;但就普遍的情況來說,一般測試人員多執行動態測試,也就是在系統運行的狀況下做測試。
根據ISO29110-4,動態測試的測試設計技術類型如下圖
動態測試用的測試設計技術類型:
圖片來源: https://softwaretestingstandard.org/part4.php
由上圖可見,當受測軟體具有明確的需求規格書時,就可使用「以規格為基礎的技術」類別下的技術來設計測試案例,當然要使用幾種,如何做搭配,仍要視測試項目的類型、以及測試人力、客戶需求、時程或成本來衡量。
我們首先要介紹的是等價類劃分,因為它是「以規格為基礎的技術」類別中最普遍被使用也簡單易懂的測試技術。先舉個例子給讀者,如果有一個網頁,當中的元件各有其規格規範(如下藍字)你會怎麼測?
相信現在你已經有一些想法了,但是光頻直覺與經驗會不會遺漏掉必要的測試呢?因此我們才需要利用科學化的測試技術。
等價類劃分技術將每個元件所有可能的輸入劃分成若干部分,然後從每一部分中選取一個具有代表性的數據,做為測試案例的輸入數據。就每一個部分而言,其當中任何一個輸入數據對於揭露程序中的錯誤都是等效的(這是此技術之精隨)。等價類劃分技術能幫助測試人員顯著的减少測試案例的数量,並又有足夠的測試覆蓋率。
等價類劃分一般可被整理成四個原則:
原則1. 如果輸入條件規定了數值範圍,則可以創建一個有效等價類和兩個無效等價類
原則2. 假如輸入數據是一組值(有n個),軟體/系統對於每一個輸入值會採分別處理的方式,在此種情況下可確認有n個有效等價類和一個無效等價類
Logistic Class欄位是一個有三個項目的下拉式選單:
原則3. 假如輸入數據是一組值(有n個),軟體/系統對於每一個輸入值會採一樣的處理方式,在此種情況下可確認有一個有效等價類和一個無效等價類。
一個訂票系統的身分選單包含了嬰兒、小孩、成人、老人、與身心障礙者。
系統針對小孩、成人、老人的處理方式(例:票價)其實是一樣的
但對於嬰兒與身心障礙者的處理方式各自又不同
原則4. 在規定了輸入數據必須遵守「某種規則」的情況下,可確認有一個有效等價類
(完完全全合乎規格)和若干個無效等價類(可從不同的角度違反規則)
假設樂樂福系統的登入帳號名稱必須以英文字母做開頭且帳號長度為8個digit
然測試對象通常有不只一個要輸入的元件,如何對這些元件等價類進行 組合,來保證等價類的覆蓋率,是我們測試案例設計首先需要考慮的。因此:
有效等價類的代表值須搭配其他有效等價類的代表值來進行組合,因此 組合數量是每個元件等價類數目的乘積。這些為正向測試案例。
無效等價類的代表值只能和其他有效等價類的代表值(任意)進行組合。 因此每個無效等價類將產生一個無效測試案例,組合數量是每個無效等 價類數目之和。這些為負向測試案例。
讀者現在可以再想想你會怎麼設計這個頁面的測試案例了嗎?跟你第一次想的應該不一樣吧?
由上表可導出等價類組合的數量為
- 正向測試組合:
即有效等價類的組合數量,即每個元件等價類數量的乘積。
->1*1*3=3個
- 負向測試組合:
即無效等價類的組合數量,即每個無效等價類數量的和。
->2+2+1=5個
因此可利用此技術將「完全組合」縮減成「8」種組合
接下來我們可以開始撰寫真正的測試案例(包含正向與反向)了
首先可以手繪一個等價分類技術所產出的值之表格:
接著在把它帶入測試案例的參數值中
註:通常我們測試案例都會建置在測試管理平台,若您是用excel維護時,亦可以複製成八列方便測試期間的紀錄。
相信讀者皆已了解等價類劃分技術能幫助測試人員顯著的减少測試案例的数量(由完全組合縮減成特定數量的組合),並又有足夠的測試覆蓋率,不單單只是憑測試人員的直覺或經驗去給予測試參數值。恭喜你,你已經踏入了科學化的設計測試案例的第一步。
還沒追蹤我們的朋友們,記得訂閱電子報或追蹤我們的粉絲專頁唷!那我們下次再見囉!
我要留言