如何有效減少測(cè)試用例數(shù)目
在測(cè)試過(guò)程中,測(cè)試人員經(jīng)常需要將測(cè)試對(duì)象的各種輸入?yún)?shù)進(jìn)行組合之后進(jìn)行測(cè)試。有時(shí)候,將各種輸入?yún)?shù)進(jìn)行組合,得到的測(cè)試用例數(shù)目將是非常龐大的。由于測(cè)試時(shí)間和成本的限制,無(wú)法對(duì)測(cè)試對(duì)象輸入值的所有組合進(jìn)行測(cè)試。下面是某個(gè)網(wǎng)站測(cè)試的要求:
某網(wǎng)站需要支持
1、不同的瀏覽器:IE5.0、IE5.5、IE6.0、Netscape6.0、Netscape6.1、Netscape7.0、Mozilla1.1和Opera7;
2、不同的插件:RealPlayer、MediaPlayer或者沒(méi)有任何插件None;
3、不同的客戶(hù)端操作系統(tǒng):Windows95、Windows98、WindowsME、、WindowsNT、Windows2000和WindowsXP;
4、不同的Web服務(wù)器軟件:IIS、Apache和WebLogic;
5、不同的服務(wù)器端操作系統(tǒng):WindowsNT、Windows2000和Linux。
這種情況下,需要針對(duì)不同的組合進(jìn)行測(cè)試:
1、8種瀏覽器
2、3種插件
3、6種客戶(hù)端操作系統(tǒng)
4、3種Web服務(wù)器軟件
5、3種服務(wù)器端操作系統(tǒng)
如果考慮所有參數(shù)不同取值的組合,那么需要設(shè)計(jì)和執(zhí)行的測(cè)試用例的數(shù)目是1296(8 x 3 x 6 x 3 x 3 = 1296)。
在軟件測(cè)試過(guò)程中,這種類(lèi)型的組合是非常普遍的。每種情形都可能有龐大的組合需要進(jìn)行測(cè)試,假如不對(duì)它們進(jìn)行測(cè)試,可能會(huì)存在較大的風(fēng)險(xiǎn);而如果對(duì)所有組合進(jìn)行測(cè)試,測(cè)試時(shí)間和資源又不允許。測(cè)試人員在面對(duì)這種情況的時(shí)候,可以采用以下幾種常用的策略:
嘗試測(cè)試所有輸入的組合,延期項(xiàng)目,導(dǎo)致的后果可能是失去產(chǎn)品的市場(chǎng)。
選擇一些容易設(shè)計(jì)和執(zhí)行的測(cè)試用例,而忽略其是否能夠提供產(chǎn)品質(zhì)量的信息。
羅列所有的組合,并隨機(jī)選擇其中的子集進(jìn)行測(cè)試。
采取特殊的測(cè)試技術(shù),選擇能發(fā)現(xiàn)大部分缺陷的子集進(jìn)行測(cè)試。
如果采用***一個(gè)策略,那么使用結(jié)對(duì)測(cè)試技術(shù)是一個(gè)很好的選擇。采用結(jié)對(duì)測(cè)試的技術(shù),測(cè)試并不針對(duì)輸入值的所有組合進(jìn)行測(cè)試,而只是針對(duì)所有輸入值的兩兩組合。結(jié)對(duì)測(cè)試技術(shù)可以顯著地減少測(cè)試用例的數(shù)目,同時(shí)保證較高的測(cè)試質(zhì)量。下面是應(yīng)用結(jié)對(duì)測(cè)試技術(shù)減少測(cè)試用例數(shù)目的例子:
假如軟件系統(tǒng)有四個(gè)不同的輸入?yún)?shù),每個(gè)參數(shù)有3個(gè)不同的輸入值,得到的完全組合數(shù)目是34即81。假如采用結(jié)對(duì)測(cè)試的技術(shù),只需要9個(gè)測(cè)試用例即可覆蓋所有參數(shù)的兩兩組合。
假如軟件系統(tǒng)有13個(gè)不同的輸入?yún)?shù),每個(gè)參數(shù)有3個(gè)不同的輸入值,得到的完全組合數(shù)目是313即1594323。假如采用結(jié)對(duì)測(cè)試的技術(shù),只需要15個(gè)測(cè)試用例即可覆蓋所有參數(shù)的兩兩組合。
假如軟件系統(tǒng)有20個(gè)不同的輸入?yún)?shù),每個(gè)參數(shù)有10個(gè)不同的輸入值,得到的完全組合數(shù)目是1020。假如采用結(jié)對(duì)測(cè)試的技術(shù),只需要180個(gè)測(cè)試用例即可覆蓋所有參數(shù)的兩兩組合。
結(jié)對(duì)測(cè)試技術(shù)能夠發(fā)現(xiàn)所有的單模式失效(Single-mode Fault)和雙模式失效(Double-mode Fault)。但是,結(jié)對(duì)測(cè)試并不一定適合于發(fā)現(xiàn)測(cè)試對(duì)象中的多模式失效(Multimode Fault)。
單模式失效:失效是由單個(gè)參數(shù)引起的,只要針對(duì)所有獨(dú)立參數(shù)進(jìn)行測(cè)試,就能夠發(fā)現(xiàn)該失效。
雙模式缺陷:失效是由兩個(gè)參數(shù)共同引起的,必須針對(duì)所有參數(shù)的兩兩組合進(jìn)行測(cè)試,才能夠確保發(fā)現(xiàn)此類(lèi)缺陷。
多模式缺陷:失效是由三個(gè)或三個(gè)以上參數(shù)共同引起的,采用結(jié)對(duì)測(cè)試技術(shù)也可能發(fā)現(xiàn)多模式缺陷,但是不能保證測(cè)試的充分性。
下面的幾個(gè)數(shù)據(jù)可以說(shuō)明結(jié)對(duì)測(cè)試技術(shù)的有效性:
1、根據(jù)AT&T在對(duì)其基于局域網(wǎng)的郵件系統(tǒng)進(jìn)行的測(cè)試中,應(yīng)用結(jié)對(duì)測(cè)試技術(shù)得到的1000條測(cè)試用例比其原有的1500條測(cè)試用例多發(fā)現(xiàn)了20%的缺陷,而測(cè)試工作量卻減少了50%。
2、National Institute of Standards and Technology在一項(xiàng)對(duì)醫(yī)療設(shè)備測(cè)試所進(jìn)行的15年追蹤中發(fā)現(xiàn),有98%的軟件缺陷可以通過(guò)結(jié)對(duì)測(cè)試技術(shù)發(fā)現(xiàn)。
3、根據(jù)對(duì)Mozilla網(wǎng)頁(yè)瀏覽器的缺陷分析顯示,76%的缺陷可以通過(guò)結(jié)對(duì)測(cè)試技術(shù)發(fā)現(xiàn)。
4、具體的結(jié)對(duì)測(cè)試,可以通過(guò)不同的測(cè)試技術(shù)來(lái)得到,包括正交矩陣(Orthogonal Arrays)的方法、James Bach提供的Allpairs方法,也可以通過(guò)分類(lèi)樹(shù)方法。表1得到的測(cè)試用例是通過(guò)Allpairs方法實(shí)現(xiàn)的,詳細(xì)的內(nèi)容以及其他測(cè)試技術(shù)的實(shí)現(xiàn)方法,可以參考《軟件測(cè)試設(shè)計(jì)》原著。
圖1 使用Allpairs得到的測(cè)試數(shù)據(jù)
假如測(cè)試數(shù)據(jù)列表中的某個(gè)參數(shù)的取值以~開(kāi)頭,那么說(shuō)明該參數(shù)取值已經(jīng)有兩兩組合了。以~開(kāi)頭的參數(shù)取值,可以用該參數(shù)的任何其他取值來(lái)代替,而不會(huì)影響其兩兩組合的覆蓋率。因此,可以將以~開(kāi)頭的參數(shù)取值,用更關(guān)鍵的或者經(jīng)常使用的參數(shù)值來(lái)代替。同時(shí),使用Allpairs得到的測(cè)試數(shù)據(jù)中,還羅列了所有的兩兩組合,并且統(tǒng)計(jì)了每個(gè)兩兩組合出現(xiàn)的次數(shù),以及每個(gè)測(cè)試用例所包含的兩兩組合數(shù)。
從上面的結(jié)果可以看到:通過(guò)采用合適的測(cè)試技術(shù),測(cè)試用例數(shù)目原來(lái)需要1296個(gè),而目前只需要48個(gè)進(jìn)行覆蓋,測(cè)試用例數(shù)目減少了96%。前面已經(jīng)提到了,結(jié)對(duì)測(cè)試可以發(fā)現(xiàn)所有的單失效模式和雙失效模式的缺陷,而實(shí)踐過(guò)程中,大部分的失效是單失效模式和雙失效模式,多失效模式占的比例很少。
因此,通過(guò)采用合適的結(jié)對(duì)測(cè)試,可以大大降低測(cè)試用例數(shù)目,減少測(cè)試工作量,同時(shí)可以實(shí)現(xiàn)較好的測(cè)試覆蓋率,保證測(cè)試質(zhì)量。
【編輯推薦】