楊悅
摘要:軟件測試的類型通常分為白盒測試和黑盒測試,其中基于等價(jià)類的劃分法與基于判定表的測試法都是較為典型和實(shí)用的黑盒測試技術(shù)方法。在實(shí)際工作中,為了使測試用例的覆蓋更加全面,測試目的更加明確,通常不僅僅局限于某一種測試手段。針對等價(jià)類和判定表這兩種方法各自的特點(diǎn),可以將兩者有機(jī)結(jié)合,通過對輸入條件進(jìn)行等價(jià)類劃分,對輸出行為進(jìn)行判定表列舉,用綜合的手段進(jìn)行軟件測試工作,從而達(dá)到使測試用例的設(shè)計(jì)覆蓋全面、條理清晰的目的。
關(guān)鍵詞:等價(jià)類;判定表;軟件測試
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)05-1194-03
The Application of The Software Testing Method Combining Equivalence Partition with Decision Table
YANG Yue
(The Software Testing Center of Shanghai Academy of Spaceflight Technology, Shanghai 201109, China)
Abstract: The types of software testing are usually sorted as white box testing and black box testing.The testing methods based on equiva? lence partition and decision table are both typical and practical black box testing skills.In practical working,to make the coverage of testing more comprehensive and to make the purpose of testing more specific,the usual thought is to use not only one certain way to do the test. According to the individual characteristics of these two methods,it is feasible to combine these two methods together,by partitioning the equivalence of input conditions and listing the dicision table of output activities of the testing program module.This combining method can make the designing of testing cases more comprehensive and distinct.
Key words: equivalence partition; decision table; software testing
1概述
軟件測試的類型一般來說,可以劃分為白盒測試類型和黑盒測試類型。黑盒測試針對的主要是軟件功能的正確性和完整性。黑盒測試的理念,是將程序內(nèi)部的邏輯結(jié)構(gòu)看成一個黑盒子,單純依據(jù)給定的軟件需求規(guī)格說明中約定的功能要求,設(shè)計(jì)測試輸入數(shù)據(jù),觀察測試輸出結(jié)果,通過結(jié)果的正確性來驗(yàn)證軟件的正確性。黑盒測試的方法比較多,其中較為典型的是等價(jià)類劃分法和判定表驅(qū)動法,實(shí)際工作中可以將兩種方法有機(jī)結(jié)合進(jìn)行軟件測試。
2等價(jià)類劃分法
等價(jià)類劃分法的一般定義,是依據(jù)程序的實(shí)際情況,把測試輸入劃分成具有代表性的幾種分類,類與類之間彼此不相交;然后從每個分類中選取部分?jǐn)?shù)據(jù)作為測試用例的輸入。這其中選取的輸入數(shù)據(jù)在測試中的作用等價(jià)于該類中的其他數(shù)據(jù),因此對每一個特定的類來說,不需要將該類中所有的輸入都作為測試輸入,僅選取本類中具有代表性的輸入即可覆蓋某一方面的驗(yàn)證,大大減少了測試用例的數(shù)量,提高了測試效率。
進(jìn)行等價(jià)類劃分時須將對應(yīng)輸入分為有效等價(jià)類和無效等價(jià)類。有效等價(jià)類是指符合程序需求規(guī)格說明描述,合理可行且有意義的輸入數(shù)據(jù)所構(gòu)成的集合。通過有效等價(jià)類的輸入,可以測試程序是否實(shí)現(xiàn)了需求規(guī)格說明中所要求實(shí)現(xiàn)的功能項(xiàng)。無效等價(jià)類是有效等價(jià)類的補(bǔ)集,與有效等價(jià)類正好相反,通過無效等價(jià)類的輸入,可以測試程序的功能實(shí)現(xiàn)是否會出現(xiàn)意外情況。兩種等價(jià)類必須同時被考慮,以確保軟件的可靠性。
根據(jù)通用的定義,可以根據(jù)以下原則進(jìn)行等價(jià)類劃分:
1)如果輸入條件規(guī)定了輸入值的強(qiáng)制集合,則可確定一個有效等價(jià)類和一個無效等價(jià)類;
2)如果輸入條件規(guī)定了取值范圍,或者規(guī)定了所取值的個數(shù),則可確定一個有效等價(jià)類和兩個無效等價(jià)類;
3)如果規(guī)定了一組輸入數(shù)據(jù)的數(shù)量為n,且程序需對每個輸入值分別處理,則可確定n個有效等價(jià)類和一個無效等價(jià)類;
4)如果輸入條件為布爾值,則可確定一個有效等價(jià)類和一個無效等價(jià)類。
5)如果輸入數(shù)據(jù)有必須遵守的規(guī)則,則可確定一個遵守規(guī)則的有效等價(jià)類和若干個從不同角度違反規(guī)則無效等價(jià)類;
6)已知的大等價(jià)類可以根據(jù)實(shí)際情況進(jìn)一步劃分為更小的等價(jià)類。
等價(jià)類一經(jīng)確定,可以構(gòu)造等價(jià)類劃分表,具體格式如下表1。然后為每一個等價(jià)類規(guī)定一個唯一的編號,并設(shè)計(jì)測試用例來覆蓋所有的等價(jià)類。用例設(shè)計(jì)原則為:1個用例應(yīng)覆蓋盡可能多的有效等價(jià)類,直到所有有效等價(jià)類都被覆蓋為止;1個用例僅覆蓋一個尚未被覆蓋的等價(jià)類,直到所有無效等價(jià)類都被覆蓋為止。
表1等價(jià)類表
3判定表驅(qū)動法
判定表也叫決策表,在所有的功能性測試方法中,基于判定表的測試方法是最嚴(yán)格的,因?yàn)榕卸ū砭哂羞壿媷?yán)格性。從20世紀(jì)60年代初開始,判定表就一直被用來表示和分析復(fù)雜的邏輯關(guān)系,作為編寫程序的輔助工具。判定表很適合描述不同條件集合下采取行動的若干組合情況。
判定表由4個部分組成,分別為條件樁、動作樁、條件項(xiàng)和動作項(xiàng)。其中條件樁列出了各種可能的單個條件,動作樁列出了可能采取的單個操作,條件項(xiàng)列出了所給條件的多組取值組合,動作項(xiàng)列出了在給定條件項(xiàng)的各種取值情況下對應(yīng)采取的動作。
判定表的規(guī)則是任何一個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作。在判定表中貫穿條件項(xiàng)和動作項(xiàng)的一列就是一條規(guī)則。判定表中列出多少組條件取值,也就有多少條規(guī)則,條件項(xiàng)和動作項(xiàng)就有多少列。
應(yīng)該依據(jù)軟件需求規(guī)格說明來建立判定表,首先確定規(guī)則的個數(shù),然后列出所有的條件樁和動作樁,填入動作項(xiàng)形成初始判定表,再通過合并相似規(guī)則或相同動作來簡化,形成最終判定表。
判定表的格式如下表2:
表2判定表
4等價(jià)類結(jié)合判定表測試
在實(shí)際測試工作中,我們傾向于不僅僅只使用一種測試方法,而是恰當(dāng)?shù)膶⒍喾N測試方法有機(jī)結(jié)合,達(dá)到最優(yōu)的測試效果。這里以實(shí)例說明如何將等價(jià)類劃分與判定表驅(qū)動有機(jī)結(jié)合起來進(jìn)行軟件測試。
某模塊具有數(shù)據(jù)接收和處理功能,其中接收的數(shù)據(jù)格式包含了方式字、數(shù)據(jù)域和校驗(yàn)和3個部分。該模塊將接收到的數(shù)據(jù)進(jìn)行CRC校驗(yàn),根據(jù)接收的數(shù)據(jù)進(jìn)行處理:若接收的數(shù)據(jù)正確,則將對應(yīng)緩沖區(qū)地址內(nèi)容設(shè)置為接收的數(shù)據(jù)域內(nèi)容,且置相應(yīng)的遙測字;若接收的數(shù)據(jù)錯誤,則對應(yīng)緩沖區(qū)地址內(nèi)容不作設(shè)置,且置相應(yīng)的遙測字。
這個實(shí)例里,我們可以先對輸入條件進(jìn)行等價(jià)類劃分,然后通過建立判定表,確立規(guī)則,從而得出最終的測試用例。這里的輸入條件就是需要接收的數(shù)據(jù)。根據(jù)相應(yīng)的通信協(xié)議,數(shù)據(jù)格式中的方式字可分為AAh、BBh、CCh、DDh共4種,數(shù)據(jù)域根據(jù)其長度可分為16字節(jié)、32字節(jié)、128字節(jié)3種,校驗(yàn)和可分為正確和錯誤兩種。我們通過通信協(xié)議的規(guī)定,可以劃分出輸入數(shù)據(jù)等價(jià)類,對每種輸入條件的等價(jià)類都進(jìn)行相應(yīng)的編號,如表3。
表3數(shù)據(jù)輸入等價(jià)類表
根據(jù)表3的等價(jià)類劃分,繼續(xù)采用判定表驅(qū)動法形成測試用例。將已按等價(jià)類劃分好的輸入作為條件樁,所產(chǎn)生的判定表如表4(其中動作樁為1表明進(jìn)行了該動作,0為未進(jìn)行該動作)。
表4數(shù)據(jù)處理判定表
根據(jù)該表,根據(jù)規(guī)則最終產(chǎn)生了7個測試用例,覆蓋了所有輸入的有效等價(jià)類和無效等價(jià)類。下面進(jìn)行兩點(diǎn)說明:
1)根據(jù)測試方法的一般選擇原則,若輸入條件之間存在組合關(guān)系時,一般選用因果圖法結(jié)合判定表驅(qū)動法進(jìn)行測試用例的設(shè)計(jì)。本例中的各個輸入之間存在簡單的組合關(guān)系,但由于各輸入均為1組數(shù)據(jù),且存在有效和無效的情況,而非獨(dú)立的狀態(tài),或獨(dú)立的輸入條件,采用因果圖法易造成圖的關(guān)系復(fù)雜,不利于分析;采用等價(jià)類劃分法則利于信息的歸類與分析,再結(jié)合判定表驅(qū)動法來理清各等價(jià)類的組合關(guān)系,使用例設(shè)計(jì)清晰,并可判斷是否覆蓋所有的等價(jià)類,是否存在可合并的冗余用例。
2)為了簡化實(shí)例便于說明,本例沒有考慮輸入邊界的取值,實(shí)際工作中還可加入對輸入條件的邊界取值考量,產(chǎn)生更多有效和無效的邊界等價(jià)類,再加以組合進(jìn)行測試。
5總結(jié)
測試用例的設(shè)計(jì)方法種類很多,在實(shí)際測試中,應(yīng)當(dāng)不局限于單個測試手段。依據(jù)每個具體的軟件的具體特點(diǎn),制定具有針對性的測試策略,綜合使用各種方法,使其有機(jī)結(jié)合,從各個角度充分測試,從而更加有效的提高測試效率和測試覆蓋度。
參考文獻(xiàn):
[1] Myers G.軟件測試的藝術(shù)[M].王峰,陳杰,譯.2版.北京:機(jī)械工業(yè)出版社,2006.
[2] Jorgensen P C.軟件測試[M].韓柯,杜旭濤,譯.2版.北京:機(jī)械工業(yè)出版社,2003.