測試用例設計方法來源: 日期:[2021-04-28]
所謂的測試用例設計就是將軟件測試的行為活動,做一個科學畫的組織歸納。軟件測試是有組織性、步驟性和計劃性的,而設計軟件測試用例的目的,就是為了能將軟件測試的行為轉換為可管理的模式。軟件測試是軟件質量管理中最實際的行動,同時也是耗時最多的一項。基于時間因素的考慮,軟件測試行為必須能夠加以量化,才能進一步讓管理階層掌握所需要的測試過程,而測試用例就是講測試行為具體量化的方法之一。
簡單的說,測試用例就是設計一個情況,必須能夠正常運行并且達到程序所設計的執行結果。如果程序在這種情況下不能正常運行,而且這種問題會重復發生,那就便是軟件程序人員已經測出軟件有缺陷,這時間就必須將這個問題標示出來,并且輸入到問題跟蹤系統內,通知軟件開發人員。軟件開發人員接獲通知后,將這個問題修改完成于下一個測試版本內,軟件測試工程師取得新的測試版本后,必須利用同一個用例來測試這個問題,確保該問題已修改完成。
因為我們不可能進行窮舉測試,為了節省時間和資源、提高測試效率,必須要從數量極大的可用測試數據中精心挑選出具有代表性或特殊性的測試數據來進行測試。
使用測試用例的好處主要體現在以下幾個方面。
①在開始實施測試之前設計好測試用例,可以避免盲目測試并提高測試效率。
②測試用例的使用令軟件測試的實施重點突出、目的明確。
③在軟件版本更新后只需修正少部分的測試用例便可展開測試工作,降低工作強度,縮短項目周期。
④功能模塊的通用化和復用化使軟件易于開發,而測試用例的通用化和復用化則會使軟件測試易于開展,并隨著測試用例的不斷精化其效率也不斷攀升。
具體的黑盒測試用例設計方法包括等價類劃分法、因果圖法、邊界值分析法、判定表驅動法、正交試驗設計法、功能圖法等。應該說,這些方法是比較實用的,但采用什么方法,在使用時自然要針對開發項目的特點對方法加以適當的選擇。下面介紹3種常用的方法。
1.等價類劃分
等價類劃分是一種典型的黑盒測試方法。等價類是指某個輸入域的集合。它表示對揭露程序中的錯誤來說,集合中的每個輸入條件是等效的。因此我們只要在一個集合中選取一個測試數據即可。等價類劃分的辦法是把程序的輸入域劃分成若干等價類,然后從每個部分中選取少數代表性數據當作測試用例。這樣就可使用少數測試用例檢驗程序在一大類情況下的反映。
在考慮等價類時,應該注意區別以下兩種不同的情況:
有效等價類:有效等價類指的是對程序的規范是有意義的、合理的輸入數據所構成的集合。在具體問題中,有效等價類可以是一個,也可以是多個。
無效等價類:無效等價類指對程序的規范是不合理的或無意義的輸入數據所構成的集合。對于具體的問題,無效等價類至少應有一個,也可能有多個。確定等價類有以下幾條原則:
如果輸入條件規定了取值范圍或值的個數,則可確定一個有效等價類和兩個無效等價類。例如,程序的規范中提到的輸入條包括“...項數可以從1到999...”,則可取有效等價類為“1到項數<999”,無效等價類為“項數<1,,及“項數>999”。
輸入條件規定了輸入值的集合,或是規定了“必須如何”的條件,則可確定一個有效等價類和一個無效等價類。如某程序涉及標識符,其輸入條件規定“標識符應以字母開頭..”則“以字母開頭者”作為有效等價類,“以非字母開頭”作為無效等價類。
如果我們確知,已劃分的等價類中各元素在程序中的處理方式是不同的,則應將此等價類進一步劃分成更小等價類。
輸入條件有效等價類無效等價類。
根據已列出的等價類表,按以下步驟確定測試用例:
①為每個等價類規定一個唯一的編號﹔
②設計一個測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類。重復這一步,最后使得所有有效等價類均被測試用例所覆蓋﹔
③設計一個新的測試用例,使其只覆蓋一個無效等價類。重復這一步,使所有無效等價類均被覆蓋。這里強調每次只覆蓋一個無效等價類。這是因為一個測試用例中如果含有多個缺陷,有可能在測試中只發現其中的一個,另一些被忽視。
等價類劃分法能夠全面、系統地考慮黑盒測試的測試用例設計問題,但是沒有注意選用一些“高效的”、“有針對性的”測試用例。后面介紹的邊值分析法可以彌補這一缺點。
2.因果圖
等價類劃分法并沒有考慮到輸入情況的各種組合。這樣雖然各個輸入條件單獨可能出錯的情況已經看到了,但多個輸入情況組合起來可能出錯的情況卻被忽略。采用因果圖方法能幫助我們按一定步驟選擇一組高效的測試用例,同時,還能為我們指出程序規范的描述中存在什么問題。
利用因果圖導出測試用例需要經過以下幾個步驟:分析程序規范的描述中哪些是原因,哪些是結果。原因常常是輸入條件或是輸入條件的等價類。結果是輸出條件。
分析程序規范的描述中語義的內容,并將其表示成連接各個原因與各個結果的“因果圖”。
由于語法或環境的限制,有些原因和結果的組合情況是不可能出現的。為表明這些特定的情況,在因果圖上使用持殊的符號標明約束條件。把因果圖轉換成判定表。把判定表的每一列寫成一個測試用例。
3.邊值分析法
邊值分析法是列出單元功能、輸入、狀態及控制的合法邊界值和非法邊界值,
設計測試用例,包含全部邊界值的方法。典型的包括IF語句中的判別值,定義域、值域邊界,末受控狀態等。邊值分析法是以邊界情況的處理作為主要目標專門設計測試用例的方法。另外,邊值分析不僅考查輸入的邊值,也要考慮輸出的邊值。這是從人們的經驗得出的一種有效方法。人們發現許多軟件錯誤只是在下標、數據結構和標量值的邊界值及其上、下出現,運行這個區域的測試用例發現錯誤的概率很高。用邊值分析法設計測試用例時,有以下幾條原則:如果輸入條件規定了取值范圍,或是規定了值的個數,則應以該范圍的邊界內及剛剛超出范圍的邊界外的值,或是分別對最大、最小及稍小于最小、稍大于最大個數作為測試用例。如有規范“某文件可包含1至255”個記錄.“,則測試用例可選1和255及0和256等。針對規范的每個輸出條件使用原則,如果程序規范中提到的輸入或輸出域是個有序的集合(如順序文件、表格等)就應注意選取有序集的第一個和最后一個元素作為測試用例。分析規范,盡可能找出可能的邊界條件。一個典型的邊值分析例子是三角形分類程序。選取a, b, c構成三角形三邊,“任意兩邊之和大于第三邊”為邊界條件。邊值分析相等價類劃分側重不同,對等價類劃分是-一個補充。 如上述三角形問題,選取a=3, b=4, c=5,a=2, b=4, c=7則覆蓋有效和無效等價類。如果能在等價類劃分中注入邊值分析的思想。在每個等價類中不只選取一個覆蓋用例,而是進而選取該等價類的邊界值等價類劃分法將更有效,最后可以用邊值分析法再補充--些測試用例。