在軟件測試中,測試用例的設計是一件很難的事情。你可以拿任何一個公司的兩個不同人員就同一功能點所寫的測試用例來看,肯定會發現有所不同,這是爲什麼呢?一是着眼點不一樣,二是經驗不同,三是思維的問題了。其實你可以看到,有的人寫的用例簡單明瞭,有的人寫的用例卻是複雜冗長,出現這種情況並不奇怪,因爲測試用例本身的設計方法與技巧很多都是從經驗中來的,有些形成了理論,而有些還形成不了能夠指導測試活動的理論。
有很多同學曾經說,這個等價類方法太簡單了,怎麼能作爲一種方法呢?測試用例技術最關鍵的問題是---用最少的用例去發現更多的問題。當我們要測試一個軟件時,你準備花費多長時間去完成呢?從時間成本上來講,越短當然就越好。
我舉個例子:比如說騰訊公司的即時聊天工具QQ:
關於QQ用戶登錄框,你該怎麼去考慮測試用例的設計呢?當然,我們要從兩個方面去考慮:一是QQ帳號,二是QQ密碼。就拿QQ帳號這一個輸入框,你怎麼去考慮進行測試用例的設計?
目前,一個QQ服務器就允許有10萬以上個用戶同時登錄進行即時聊天,有多少個QQ帳號啊?現在一個人還不只一個QQ號呢,呵呵。
如果有很多QQ帳號的話,怎麼進行測試呢?如果只測試幾個,覆蓋率不足;全部都測試一遍,不可能有那麼長時間,而且太多了也不好實施。
所以,QQ帳號的測試就陷入了僵局?我們先分析一下QQ帳號:由6-10位自然數構成。一是位數長度有一定的限制,二是類型是固定的,由0-9自然數構成。要想測試覆蓋全面,又要節省時間,最好的辦法是儘量簡化測試用例的設計。通過對以上QQ帳號的分析,可以看到有效的帳號有它自己的特點:長度與類型要符合要求,這樣只要在騰訊公司的服務器上申請了帳號,就可以進行即時通信了。
那麼,這樣就有一個解決問題的方法了:進行類別的劃分。我們知道軟件的功能測試要進行兩個方面的測試:通過測試和失敗測試。要進行通過測試的話,帳號要符合規範,要進行失敗測試的話,就要破壞帳號的規範。好,這樣的話,QQ帳號的測試我們就可以進行了。
把QQ帳號進行分類:有效的和無效的。
有效的:(1)長度在6-10位之間
(2)類型是0-9自然數
無效的:(1)長度小於6
(2)長度大於10
(3)負數
(4)小數
(5)英文字母
(6)字符
(7)特殊字符
(8)中文
(9)編程語言中的轉義字符
(10)空
這樣就可以看出來,有效的當中只要取1或幾個就可以通過測試了,在無效的當中取1或幾個就可以進行失敗測試了,所以這樣的方法很簡單、高效。
這種方法就是等價類劃分法。也就是說,在這個類別裏你隨機選取1個進行測試,如果功能能實現,那麼你再隨機選這個類別裏其他的數據,功能也能實現;如果功能不能實現,你再隨機選這個類別裏的其他數據,功能也不能實現。也就是說類別裏的數據是等價的。
等價類劃分法是軟件測試經驗的積累,可以提高測試的效率。