等價類結(jié)和判定表的軟件測試方法應(yīng)用
摘要:軟件測試的類型通常分為白盒測試和黑盒測試,其中基于等價類的劃分法與基于判定表的測試法都是較為典型和實用的黑盒測試技術(shù)方法。在實際工作中,為了使測試用例的覆蓋更加全面,測試目的更加明確,通常不僅僅局限于某一種測試手段。針對等價類和判定表這兩種方法各自的特點,可以將兩者有機結(jié)合,通過對輸入條件進行等價類劃分,對輸出行為進行判定表列舉,用綜合的手段進行軟件測試工作,從而達到使測試用例的設(shè)計覆蓋全面、條理清晰的目的。
關(guān)鍵詞:等價類;判定表;軟件測試
1、概述
軟件測試的類型一般來說,可以劃分為白盒測試類型和黑盒測試類型。黑盒測試針對的主要是軟件功能的正確性和完整性。黑盒測試的理念,是將程序內(nèi)部的邏輯結(jié)構(gòu)看成一個黑盒子,單純依據(jù)給定的軟件需求規(guī)格說明中約定的功能要求,設(shè)計測試輸入數(shù)據(jù),觀察測試輸出結(jié)果,通過結(jié)果的正確性來驗證軟件的正確性。黑盒測試的方法比較多,其中較為典型的是等價類劃分法和判定表驅(qū)動法,實際工作中可以將兩種方法有機結(jié)合進行軟件測試。
2、等價類劃分法
等價類劃分法的一般定義,是依據(jù)程序的實際情況,把測試輸入劃分成具有代表性的幾種分類,類與類之間彼此不相交;然后從每個分類中選取部分數(shù)據(jù)作為測試用例的輸入。這其中選取的輸入數(shù)據(jù)在測試中的作用等價于該類中的其他數(shù)據(jù),因此對每一個特定的類來說,不需要將該類中所有的輸入都作為測試輸入,僅選取本類中具有代表性的輸入即可覆蓋某一方面的驗證,大大減少了測試用例的數(shù)量,提高了測試效率。
進行等價類劃分時須將對應(yīng)輸入分為有效等價類和無效等價類。有效等價類是指符合程序需求規(guī)格說明描述,合理可行且有意義的輸入數(shù)據(jù)所構(gòu)成的集合。通過有效等價類的輸入,可以測試程序是否實現(xiàn)了需求規(guī)格說明中所要求實現(xiàn)的功能項。無效等價類是有效等價類的補集,與有效等價類正好相反,通過無效等價類的輸入,可以測試程序的功能實現(xiàn)是否會出現(xiàn)意外情況。兩種等價類必須同時被考慮,以確保軟件的可靠性。
根據(jù)通用的定義,可以根據(jù)以下原則進行等價類劃分:
1)如果輸入條件規(guī)定了輸入值的強制集合,則可確定一個有效等價類和一個無效等價類;
2)如果輸入條件規(guī)定了取值范圍,或者規(guī)定了所取值的個數(shù),則可確定一個有效等價類和兩個無效等價類;
3)如果規(guī)定了一組輸入數(shù)據(jù)的數(shù)量為n,且程序需對每個輸入值分別處理,則可確定n個有效等價類和一個無效等價類;
4)如果輸入條件為布爾值,則可確定一個有效等價類和一個無效等價類。
5)如果輸入數(shù)據(jù)有必須遵守的規(guī)則,則可確定一個遵守規(guī)則的有效等價類和若干個從不同角度違反規(guī)則無效等價類;
6)已知的大等價類可以根據(jù)實際情況進一步劃分為更小的等價類。
等價類一經(jīng)確定,可以構(gòu)造等價類劃分表。然后為每一個等價類規(guī)定一個唯一的編號,并設(shè)計測試用例來 覆蓋所有的等價類。用例設(shè)計原則為:1個用例應(yīng)覆蓋盡可能多的有效等價類,直到所有有效等價類都被覆蓋為止;1個用例僅覆蓋一個尚未被覆蓋的等價類,直到所有無效等價類都被覆蓋為止。
3、判定表驅(qū)動法
判定表也叫決策表,在所有的功能性測試方法中,基于判定表的測試方法是最嚴格的,因為判定表具有邏輯嚴格性。從20世紀60年代初開始,判定表就一直被用來表示和分析復(fù)雜的邏輯關(guān)系,作為編寫程序的輔助工具。判定表很適合描述不同條件集合下采取行動的若干組合情況。
判定表由4個部分組成,分別為條件樁、動作樁、條件項和動作項。其中條件樁列出了各種可能的單個條件,動作樁列出了可能采取的單個操作,條件項列出了所給條件的多組取值組合,動作項列出了在給定條件項的各種取值情況下對應(yīng)采取的動作。
判定表的規(guī)則是任何一個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作。在判定表中貫穿條件項和動作項的一列就是一條規(guī)則。判定表中列出多少組條件取值,也就有多少條規(guī)則,條件項和動作項就有多少列。
應(yīng)該依據(jù)軟件需求規(guī)格說明來建立判定表,首先確定規(guī)則的個數(shù),然后列出所有的條件樁和動作樁,填入動作項形成初始判定表,再通過合并相似規(guī)則或相同動作來簡化,形成最終判定表。
4、等價類結(jié)合判定表測試
在實際測試工作中,我們傾向于不僅僅只使用一種測試方法,而是恰當?shù)膶⒍喾N測試方法有機結(jié)合,達到最優(yōu)的測試效果。這里以實例說明如何將等價類劃分與判定表驅(qū)動有機結(jié)合起來進行軟件測試。
某模塊具有數(shù)據(jù)接收和處理功能,其中接收的數(shù)據(jù)格式包含了方式字、數(shù)據(jù)域和校驗和3個部分。該模塊將接收到的數(shù)據(jù)進行CRC校驗,根據(jù)接收的數(shù)據(jù)進行處理:若接收的數(shù)據(jù)正確,則將對應(yīng)緩沖區(qū)地址內(nèi)容設(shè)置為接收的數(shù)據(jù)域內(nèi)容,且置相應(yīng)的遙測字;若接收的數(shù)據(jù)錯誤,則對應(yīng)緩沖區(qū)地址內(nèi)容不作設(shè)置,且置相應(yīng)的遙測字。
這個實例里,我們可以先對輸入條件進行等價類劃分,然后通過建立判定表,確立規(guī)則,從而得出最終的測試用例。這里的輸入條件就是需要接收的數(shù)據(jù)。根據(jù)相應(yīng)的通信協(xié)議,數(shù)據(jù)格式中的方式字可分為AAh、BBh、CCh、DDh共4種,數(shù)據(jù)域根據(jù)其長度可分為16字節(jié)、32字節(jié)、128字節(jié)3種,校驗和可分為正確和錯誤兩種。我們通過通信協(xié)議的規(guī)定,可以劃分出輸入數(shù)據(jù)等價類,對每種輸入條件的等價類都進行相應(yīng)的編號。
根據(jù)等價類劃分,繼續(xù)采用判定表驅(qū)動法形成測試用例。將已按等價類劃分好的輸入作為條件樁,產(chǎn)生判定表。
根據(jù)該表,根據(jù)規(guī)則最終產(chǎn)生了7個測試用例,覆蓋了所有輸入的有效等價類和無效等價類。下面進行兩點說明:
1)根據(jù)測試方法的一般選擇原則,若輸入條件之間存在組合關(guān)系時,一般選用因果圖法結(jié)合判定表驅(qū)動法進行測試用例的設(shè)計。本例中的各個輸入之間存在簡單的組合關(guān)系,但由于各輸入均為1組數(shù)據(jù),且存在有效和無效的情況,而非獨立的狀態(tài),或獨立的輸入條件,采用因果圖法易造成圖的關(guān)系復(fù)雜,不利于分析;采用等價類劃分法則利于信息的歸類與分析,再結(jié)合判定表驅(qū)動法來理清各等價類的組合關(guān)系,使用例設(shè)計清晰,并可判斷是否覆蓋所有的等價類,是否存在可合并的冗余用例。
2)為了簡化實例便于說明,本例沒有考慮輸入邊界的取值,實際工作中還可加入對輸入條件的邊界取值考量,產(chǎn)生更多有效和無效的邊界等價類,再加以組合進行測試。
5、總結(jié)
測試用例的設(shè)計方法種類很多,在實際測試中,應(yīng)當不局限于單個測試手段。依據(jù)每個具體的軟件的具體特點,制定具有針對性的測試策略,綜合使用各種方法,使其有機結(jié)合,從各個角度充分測試,從而更加有效的提高測試效率和測試覆蓋度。
posted on 2013-02-28 11:45 順其自然EVO 閱讀(543) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄