qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          等價類結和判定表的軟件測試方法應用

           摘要:軟件測試的類型通常分為白盒測試黑盒測試,其中基于等價類的劃分法與基于判定表的測試法都是較為典型和實用的黑盒測試技術方法。在實際工作中,為了使測試用例的覆蓋更加全面,測試目的更加明確,通常不僅僅局限于某一種測試手段。針對等價類和判定表這兩種方法各自的特點,可以將兩者有機結合,通過對輸入條件進行等價類劃分,對輸出行為進行判定表列舉,用綜合的手段進行軟件測試工作,從而達到使測試用例的設計覆蓋全面、條理清晰的目的。

            關鍵詞:等價類;判定表;軟件測試

            1、概述

            軟件測試的類型一般來說,可以劃分為白盒測試類型和黑盒測試類型。黑盒測試針對的主要是軟件功能的正確性和完整性。黑盒測試的理念,是將程序內部的邏輯結構看成一個黑盒子,單純依據給定的軟件需求規格說明中約定的功能要求,設計測試輸入數據,觀察測試輸出結果,通過結果的正確性來驗證軟件的正確性。黑盒測試的方法比較多,其中較為典型的是等價類劃分法和判定表驅動法,實際工作中可以將兩種方法有機結合進行軟件測試。

            2、等價類劃分法

            等價類劃分法的一般定義,是依據程序的實際情況,把測試輸入劃分成具有代表性的幾種分類,類與類之間彼此不相交;然后從每個分類中選取部分數據作為測試用例的輸入。這其中選取的輸入數據在測試中的作用等價于該類中的其他數據,因此對每一個特定的類來說,不需要將該類中所有的輸入都作為測試輸入,僅選取本類中具有代表性的輸入即可覆蓋某一方面的驗證,大大減少了測試用例的數量,提高了測試效率。

            進行等價類劃分時須將對應輸入分為有效等價類和無效等價類。有效等價類是指符合程序需求規格說明描述,合理可行且有意義的輸入數據所構成的集合。通過有效等價類的輸入,可以測試程序是否實現了需求規格說明中所要求實現的功能項。無效等價類是有效等價類的補集,與有效等價類正好相反,通過無效等價類的輸入,可以測試程序的功能實現是否會出現意外情況。兩種等價類必須同時被考慮,以確保軟件的可靠性。

            根據通用的定義,可以根據以下原則進行等價類劃分:

            1)如果輸入條件規定了輸入值的強制集合,則可確定一個有效等價類和一個無效等價類;

            2)如果輸入條件規定了取值范圍,或者規定了所取值的個數,則可確定一個有效等價類和兩個無效等價類;

            3)如果規定了一組輸入數據的數量為n,且程序需對每個輸入值分別處理,則可確定n個有效等價類和一個無效等價類;

            4)如果輸入條件為布爾值,則可確定一個有效等價類和一個無效等價類。

            5)如果輸入數據有必須遵守的規則,則可確定一個遵守規則的有效等價類和若干個從不同角度違反規則無效等價類;

            6)已知的大等價類可以根據實際情況進一步劃分為更小的等價類。

            等價類一經確定,可以構造等價類劃分表。然后為每一個等價類規定一個唯一的編號,并設計測試用例來 覆蓋所有的等價類。用例設計原則為:1個用例應覆蓋盡可能多的有效等價類,直到所有有效等價類都被覆蓋為止;1個用例僅覆蓋一個尚未被覆蓋的等價類,直到所有無效等價類都被覆蓋為止。

            3、判定表驅動法

            判定表也叫決策表,在所有的功能性測試方法中,基于判定表的測試方法是最嚴格的,因為判定表具有邏輯嚴格性。從20世紀60年代初開始,判定表就一直被用來表示和分析復雜的邏輯關系,作為編寫程序的輔助工具。判定表很適合描述不同條件集合下采取行動的若干組合情況。

            判定表由4個部分組成,分別為條件樁、動作樁、條件項和動作項。其中條件樁列出了各種可能的單個條件,動作樁列出了可能采取的單個操作,條件項列出了所給條件的多組取值組合,動作項列出了在給定條件項的各種取值情況下對應采取的動作。

           判定表的規則是任何一個條件組合的特定取值及其相應要執行的操作。在判定表中貫穿條件項和動作項的一列就是一條規則。判定表中列出多少組條件取值,也就有多少條規則,條件項和動作項就有多少列。

            應該依據軟件需求規格說明來建立判定表,首先確定規則的個數,然后列出所有的條件樁和動作樁,填入動作項形成初始判定表,再通過合并相似規則或相同動作來簡化,形成最終判定表。

            4、等價類結合判定表測試

            在實際測試工作中,我們傾向于不僅僅只使用一種測試方法,而是恰當的將多種測試方法有機結合,達到最優的測試效果。這里以實例說明如何將等價類劃分與判定表驅動有機結合起來進行軟件測試。

            某模塊具有數據接收和處理功能,其中接收的數據格式包含了方式字、數據域和校驗和3個部分。該模塊將接收到的數據進行CRC校驗,根據接收的數據進行處理:若接收的數據正確,則將對應緩沖區地址內容設置為接收的數據域內容,且置相應的遙測字;若接收的數據錯誤,則對應緩沖區地址內容不作設置,且置相應的遙測字。

            這個實例里,我們可以先對輸入條件進行等價類劃分,然后通過建立判定表,確立規則,從而得出最終的測試用例。這里的輸入條件就是需要接收的數據。根據相應的通信協議,數據格式中的方式字可分為AAh、BBh、CCh、DDh共4種,數據域根據其長度可分為16字節、32字節、128字節3種,校驗和可分為正確和錯誤兩種。我們通過通信協議的規定,可以劃分出輸入數據等價類,對每種輸入條件的等價類都進行相應的編號。

            根據等價類劃分,繼續采用判定表驅動法形成測試用例。將已按等價類劃分好的輸入作為條件樁,產生判定表。

            根據該表,根據規則最終產生了7個測試用例,覆蓋了所有輸入的有效等價類和無效等價類。下面進行兩點說明:

            1)根據測試方法的一般選擇原則,若輸入條件之間存在組合關系時,一般選用因果圖法結合判定表驅動法進行測試用例的設計。本例中的各個輸入之間存在簡單的組合關系,但由于各輸入均為1組數據,且存在有效和無效的情況,而非獨立的狀態,或獨立的輸入條件,采用因果圖法易造成圖的關系復雜,不利于分析;采用等價類劃分法則利于信息的歸類與分析,再結合判定表驅動法來理清各等價類的組合關系,使用例設計清晰,并可判斷是否覆蓋所有的等價類,是否存在可合并的冗余用例。

            2)為了簡化實例便于說明,本例沒有考慮輸入邊界的取值,實際工作中還可加入對輸入條件的邊界取值考量,產生更多有效和無效的邊界等價類,再加以組合進行測試。

            5、總結

            測試用例的設計方法種類很多,在實際測試中,應當不局限于單個測試手段。依據每個具體的軟件的具體特點,制定具有針對性的測試策略,綜合使用各種方法,使其有機結合,從各個角度充分測試,從而更加有效的提高測試效率和測試覆蓋度。



          posted on 2013-02-28 11:45 順其自然EVO 閱讀(543) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2013年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          242526272812
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汝阳县| 太谷县| 望奎县| 渝中区| 开阳县| 牡丹江市| 云龙县| 嘉定区| 青岛市| 德庆县| 故城县| 柘城县| 灌云县| 林甸县| 崇阳县| 高邮市| 海原县| 沙湾县| 临澧县| 江阴市| 洛南县| 南阳市| 阿拉善右旗| 潼关县| 博兴县| 太谷县| 靖西县| 通道| 阿巴嘎旗| 祥云县| 买车| 双桥区| 玉门市| 法库县| 临安市| 贵港市| 社会| 南和县| 东乌| 青神县| 石屏县|