文/黃志亮 錢錕
研究表明,軟件需求錯(cuò)誤、有問(wèn)題的系統(tǒng)測(cè)試覆蓋是導(dǎo)致在軟件開(kāi)發(fā)項(xiàng)目過(guò)程中大量返工、重新設(shè)計(jì)和編碼的主要原因。在已發(fā)現(xiàn)的軟件缺陷中,超過(guò)50%缺陷的根源是由于錯(cuò)誤或不恰當(dāng)?shù)能浖到y(tǒng)需求造成的。隨著現(xiàn)在系統(tǒng)日益龐大復(fù)雜,系統(tǒng)功能場(chǎng)景和邏輯分支越來(lái)越多,實(shí)現(xiàn)完全的測(cè)試覆蓋率是個(gè)巨大挑戰(zhàn)?;谛枨蟮能浖y(cè)試主要是對(duì)需求進(jìn)行驗(yàn)證和評(píng)定,并確認(rèn)軟件實(shí)現(xiàn)是否滿足需求的定義,它是軟件測(cè)試的本質(zhì)。Bender-RBT是一種基于需求的功能測(cè)試用例設(shè)計(jì)系統(tǒng)工具,它通過(guò)評(píng)價(jià)系統(tǒng)需求,發(fā)現(xiàn)其中的錯(cuò)誤和邏輯矛盾,使系統(tǒng)需求得到驗(yàn)證和明確化,并以需求作為基礎(chǔ)實(shí)現(xiàn)設(shè)計(jì)最少的測(cè)試用例達(dá)到全面的功能覆蓋率。
需求是系統(tǒng)服務(wù)以及約束的陳述。完整、正確和穩(wěn)定的軟件需求是軟件開(kāi)發(fā)的基礎(chǔ),同時(shí)也是軟件驗(yàn)證和確認(rèn)的基準(zhǔn)。然而在實(shí)際軟件開(kāi)發(fā)過(guò)程中可能受到需求分析工作不完善、對(duì)系統(tǒng)缺乏完整準(zhǔn)確認(rèn)識(shí)、軟件開(kāi)發(fā)窗口壓縮、需求未完全固化等因素影響,難以在項(xiàng)目開(kāi)始階段就獲得完整、正確和穩(wěn)定的需求。對(duì)開(kāi)發(fā)開(kāi)創(chuàng)性、全新的系統(tǒng)而言,很多時(shí)候只有隨著項(xiàng)目的進(jìn)行需求才會(huì)越來(lái)越清晰?;谛枨蟮臏y(cè)試是一種最根本的軟件測(cè)試,主要是對(duì)需求進(jìn)行驗(yàn)證和評(píng)定,并確認(rèn)軟件實(shí)現(xiàn)是否滿足需求的定義,并應(yīng)遵循兩個(gè)關(guān)鍵準(zhǔn)則:
(1)驗(yàn)證軟件需求是否正確、完整、無(wú)二義性,并且邏輯一致;
(2)要從“黑盒”的角度,設(shè)計(jì)出充分并且必要的測(cè)試集對(duì)系統(tǒng)需求進(jìn)行測(cè)試覆蓋,以保證設(shè)計(jì)和代碼都能完全符合要求。
圖1:因果邏輯關(guān)系圖
圖2:測(cè)試用例集
軟件測(cè)試的目的是希望以最小的代價(jià),盡可能地找出軟件中潛在的各種錯(cuò)誤和缺陷,以提高軟件的可靠性和質(zhì)量。Bender-RBT是一種基于需求的功能測(cè)試用例設(shè)計(jì)系統(tǒng)工具,它可以通過(guò)徹底評(píng)價(jià)系統(tǒng)需求,發(fā)現(xiàn)其中的錯(cuò)誤和邏輯矛盾,使系統(tǒng)需求明確化。Bender-RBT將需求作為基礎(chǔ),實(shí)現(xiàn)設(shè)計(jì)最少的測(cè)試用例達(dá)到全面的功能覆蓋率。
完整、正確的需求是保證系統(tǒng)開(kāi)發(fā)和測(cè)試準(zhǔn)確性的前提基礎(chǔ)。Bender-RBT通過(guò)分析和復(fù)查系統(tǒng)的需求,發(fā)現(xiàn)其中邏輯上的矛盾和錯(cuò)誤。Bender-RBT使用因果作圖法分析需求的每個(gè)方面,并用邏輯圖表方式來(lái)說(shuō)明系統(tǒng)各個(gè)輸入之間以及輸入同各輸出之間的結(jié)點(diǎn)關(guān)系、約束和其可觀測(cè)性;通過(guò)評(píng)價(jià)記錄下來(lái)的信息,從而鑒別出在關(guān)系、邏輯錯(cuò)誤和功能缺失等方面的問(wèn)題,并以邏輯圖表和功能說(shuō)明書(shū)等形式提供詳細(xì)的分析結(jié)果。這種用因果邏輯關(guān)系圖直接去表現(xiàn)需求的形式有助于需求和測(cè)試用例的復(fù)查和理解,從而盡早地發(fā)現(xiàn)和糾正需求的錯(cuò)誤,以確保需求是正確、完整、可理解和可測(cè)試的。
現(xiàn)在系統(tǒng)日益龐大復(fù)雜,隨之系統(tǒng)功能場(chǎng)景和邏輯分支也越來(lái)越多,獲得滿意的測(cè)試覆蓋率愈加困難,實(shí)現(xiàn)完全的測(cè)試覆蓋率將會(huì)是個(gè)巨大挑戰(zhàn)。通常在許多測(cè)試中一般使用的都是GUT FEEL(直覺(jué))方法或基于組合數(shù)學(xué)的方法。GUT FEEL測(cè)試十分依賴于測(cè)試工程師的水平和經(jīng)驗(yàn),如果僅按照個(gè)人的經(jīng)驗(yàn)和感覺(jué)來(lái)設(shè)計(jì)測(cè)試用例,很難保證100%覆蓋系統(tǒng)的所有功能,研究報(bào)告表明一般來(lái)講只能覆蓋30-40%?;诮M合數(shù)學(xué)的測(cè)試使用的是大量輸入的組合,隨著應(yīng)用系統(tǒng)輸入增多,使用該方法設(shè)計(jì)的測(cè)試用例數(shù)量會(huì)劇增,一個(gè)有27個(gè)輸入的應(yīng)用系統(tǒng)窮舉測(cè)試需要設(shè)計(jì)上億個(gè)測(cè)試用例,要做到完全的覆蓋幾乎不可能。
Bender-RBT是基于需求的測(cè)試用例設(shè)計(jì)工具,包含有正交組合對(duì)法(Orthogonal Pairs)和因果圖法(Cause Efffect)兩種完全獨(dú)立的測(cè)試用例設(shè)計(jì)引擎。在因果圖測(cè)試用例設(shè)計(jì)引擎中,Bender-RBT使用一種數(shù)學(xué)上很嚴(yán)謹(jǐn)?shù)拿舾新窂竭壿嬎惴▉?lái)確定為保證完全的功能覆蓋率所需的最少測(cè)試用例,最大的減少測(cè)試設(shè)計(jì)和建立的時(shí)間,從整體上降低了測(cè)試的工作量,在這方面Bender-RBT比其他的測(cè)試技術(shù)效率提高至少4倍。
某金融應(yīng)用系統(tǒng)中關(guān)于給顧客免費(fèi)設(shè)置信用賬戶透支保護(hù)的要求如表1所示。
表1:免費(fèi)設(shè)置信用賬戶透支保護(hù)的具體要求
圖3:覆蓋率矩陣
根據(jù)表1提供的需求,利用Bender-RBT中因果圖法建立“免費(fèi)設(shè)置信用賬戶透支保護(hù)”的因果邏輯關(guān)系如圖1所示。本示例中企業(yè)客戶和優(yōu)質(zhì)個(gè)人客戶存在互斥,信用賬戶透支保護(hù)狀態(tài)、透支次數(shù)依賴于存在信用賬戶這一前提條件,在建立因果邏輯關(guān)系圖時(shí),通過(guò)節(jié)點(diǎn)加入現(xiàn)實(shí)情況下的約束關(guān)系和前提條件減少無(wú)效的測(cè)試用例。由當(dāng)前因果邏輯關(guān)系圖生成的測(cè)試用例集如圖2所示,包含系統(tǒng)狀態(tài)變化個(gè)數(shù)(Vars)、創(chuàng)建的測(cè)試用例個(gè)數(shù)(Tests)等基本信息,同時(shí)經(jīng)分析和復(fù)查需求也驗(yàn)證了需求正確無(wú)誤。在Bender-RBT報(bào)告中可獲得覆蓋率矩陣和定義矩陣等重要信息,覆蓋率矩陣顯示每個(gè)測(cè)試所覆蓋的功能,并可以顯示是否每次測(cè)試都至少執(zhí)行了一個(gè)未覆蓋的功能;定義矩陣顯示每個(gè)測(cè)試用例中的輸入和輸出條件。覆蓋率矩陣如圖3所示,顯示了每個(gè)系統(tǒng)狀態(tài)變化由對(duì)應(yīng)哪些測(cè)試用例所覆蓋以及每個(gè)測(cè)試用例所覆蓋的系統(tǒng)狀態(tài)變化的信息,其中“#”表示只有唯一對(duì)應(yīng)的測(cè)試用例覆蓋該狀態(tài)變化,而“X”表示有一個(gè)以上的測(cè)試用例可覆蓋該狀態(tài)變化。定義矩陣如圖4所示,標(biāo)識(shí)了每個(gè)測(cè)試用例輸入輸出節(jié)點(diǎn)的真假狀態(tài)。理論上覆蓋系統(tǒng)全部的狀態(tài)變化最多需要26個(gè)測(cè)試用例,若按照傳統(tǒng)直覺(jué)方法并依賴測(cè)試者水平和經(jīng)驗(yàn)的不同進(jìn)行測(cè)試設(shè)計(jì)需至少9個(gè)測(cè)試用例,而使用Bender-RBT僅需7個(gè)測(cè)試用例即可覆蓋系統(tǒng)全部的狀態(tài)變化。
圖4:定義矩陣
基于需求的測(cè)試是一種最根本的軟件測(cè)試。完整正確的需求是軟件測(cè)試的前提,對(duì)系統(tǒng)需求的測(cè)試覆蓋需要設(shè)計(jì)充分且必要的測(cè)試集。Bender-RBT是一種基于需求的功能測(cè)試用例設(shè)計(jì)系統(tǒng)工具,通過(guò)分析和復(fù)查系統(tǒng)需求驗(yàn)證其正確性,并以需求因果邏輯關(guān)系圖作為基礎(chǔ)實(shí)現(xiàn)設(shè)計(jì)最少的測(cè)試用例達(dá)到完全的功能覆蓋率,尤其對(duì)存在較多輸入輸出的系統(tǒng)測(cè)試更能體現(xiàn)其特點(diǎn)及優(yōu)勢(shì),更好地保證系統(tǒng)測(cè)試的質(zhì)量和進(jìn)度,提高軟件的可靠性和質(zhì)量。