天天看點

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

本節書摘來自異步社群《軟體測試技術實戰:設計、工具及管理》一書中的第2章,第2.2節運用決策表設計測試用例,作者顧翔,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

2.2 運用決策表設計測試用例

決策表方法是一種很好的方法,它可以識别含有邏輯條件的系統需求,還可以将内部系統設計文檔化。這種方法可以用來記錄一個系統要實施的複雜的業務規則。建立決策表時,要分析規格說明,并識别系統的條件和動作。輸入條件和動作通常以“真”或“假”(布爾變量)的方式表述。決策表包含了觸發條件,通常還有各種輸入條件“真”或“假”的組合以及各條件組合相應的輸出動作。決策表的每一列對應了一個業務規則,該規則定義了各種條件的一個特定組合,以及這個規則相關聯的執行動作。決策表測試的常見覆寫标準是每列至少對應一個測試用例,該測試用例通常覆寫觸發條件的所有組合。

決策表測試的優點是可以生成測試條件的各種組合,而這些組合利用其他方法可能無法被測試到。它适用于當軟體的行為由一些邏輯決策決定的情況。

2.2.1 四邊形類型判斷系統

案例2-7:四邊形類型判斷系統。

下面來看一個例子。a、b、c、d是四邊形的4條邊,通過平行關系與是否相等來判斷四邊形的類型,四邊形如圖2-3所示。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

a、b、c、d為四邊形的4條邊,可以獲得如下條件。

c1:a//c(c1=t表示a平行于c;c1=f表示a不平行于c)。

c2:b//d(c2=t表示b平行于d;c2=f表示b不平行于d)。

c3:a的長度與b是否相等。

c4:b的長度與d是否相等。

四邊形類型有。

a1:平行四邊形。

a2:非等腰梯形。

a3:等腰梯形。

a4:普通四邊形。

a5:不存在。

根據如上描述,做出決策表(由于條件有4個,是以一共有24=16個組合),見表2-4。

第一列:a不平行于c,b不平行于d,a不等于c,b不等于d,判定為普通四邊形。

第二列:a不平行于c,b不平行于d,a不等于c,b等于d,判定為普通四邊形。

第三列:a不平行于c,b不平行于d,a等于c,b不等于d,判定為普通四邊形。

第四列:a不平行于c,b不平行于d,a等于c,b等于d,判定這種四邊形不存在。

第五列:a不平行于c,b平行于d,a不等于c,b等于d,判定這種四邊形為非等腰梯形。

以此類推,可以得到共十六列結果,見表2-4。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例
《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例
《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例
《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

根據表2-4,下面來做一些簡化。

根據列1和2,隻要c1=f、c2=f、c3=f,就可以判斷為a4。

根據列6和8,隻要c1=f、c2=t、c4=t,就可以判斷為a5。

根據列4和12,隻要c2=f、c3=t、c4=t,就可以判斷為a5。

根據列11和15,隻要c1=t、c3=t、c4=f,就可以判斷為a5。

根據列13和14,隻要c1=t、c2=t、c3=f,就可以判斷為a5。

經過簡化後,得到表2-5。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

這樣,16個測試用例就被簡化成12個,于是測試用例可以設計成表2-6。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例
《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

2.2.2 使用者登入系統

案例2-8:使用者登入系統。

下面再來看一下使用者登入系統的測試用例應該如何設計。同樣,也可以用決策表的方法。使用者登入系統一般包括使用者名、密碼和驗證碼。隻要使用者名、密碼錯誤,系統就會報出錯資訊:“使用者名或者密碼錯誤”;如果使用者名、密碼都正确,驗證碼錯誤,系統報出錯資訊:“驗證碼錯誤”;使用者名、密碼和驗證碼都正确,正常進入系統。下面就可以考慮如何用決策表來設計測試用例。

條件如下。

c1:正确的使用者名。

c2:正确的密碼。

c3:正确的驗證碼。

動作如下。

a1:使用者名或密碼錯誤。

a2:驗證碼錯誤。

a3:進入系統。

如上所述,可以做出登入系統的決策表設計(系統有3個條件,是以有23=8個組合),見表2-7。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

 第一列:使用者名錯誤,密碼錯誤,驗證碼錯誤,得到提示資訊“使用者名或密碼錯誤”。

 第二列:使用者名錯誤,密碼錯誤,驗證碼正确,得到提示資訊“使用者名或密碼錯誤”。

 第三列:使用者名錯誤,密碼正确,驗證碼錯誤,得到提示資訊“使用者名或密碼錯誤”。

 第四列:使用者名錯誤,密碼正确,驗證碼正确,得到提示資訊“使用者名或密碼錯誤”。

 第五列:使用者名正确,密碼錯誤,驗證碼錯誤,得到提示資訊“使用者名或密碼錯誤”。

 第六列:使用者名正确,密碼錯誤,驗證碼正确,得到提示資訊“使用者名或密碼錯誤”。

 第七列:使用者名正确,密碼正确,驗證碼錯誤,得到提示資訊“驗證碼錯誤”。

 第八列:使用者名正确,密碼正确,驗證碼正确,進入系統。

根據表2-7,下面來做些簡化。

(1)根據列1、2、3、4,隻要c1=f,就可以執行動作a1。

(2)根據列1、2、5、6,隻要c2=f,就可以執行動作a1。

簡化後,得到表2-8。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

這樣,8個測試用例就簡化成4個。于是,測試用例可以這樣設計:假設使用者名:kenny,密碼:khnygh,驗證碼:243546。登入系統測試用例見表2-9。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

2.2.3 飛機票定價系統

案例2-9:飛機票定價系統。

下面是一個飛機票定價系統的例子,需求如下。

(1)乘客可以免費托運重量不超過30kg(含30kg)的行李。

(2)假如行李超過30kg,其收費标準為。

 頭等艙國内乘客:超重部分每千克收費4元。

 其他艙國内乘客:超重部分每千克收費6元。

 外國乘客:超重部分每千克比國内乘客多1倍。

 殘疾乘客:為正常價格的半價。

(3)行李重量超出部分,不滿1kg的按照1kg計算。

經過分析,條件如下。

 c1:國内乘客。

 c2:超重遊客。

 c3:頭等艙乘客。

 c4:殘疾乘客。

金額

 a1:免費。

 a2:2元。

 a3:3元。

 a4:4元。

 a5:6元。

 a6:8元。

 a7:12元。

根據如上描述做出決策表(由于條件有4個,是以一共有24=16個組合)。

 第一列:攜帶行李不超過30kg,普通艙,非殘疾國外乘客:免費。

 第二列:攜帶行李不超過30kg,普通艙,殘疾國外乘客:免費。

 第三列:攜帶行李不超過30kg,頭等艙,非殘疾國外乘客:免費。

 第四列:攜帶行李不超過30kg,頭等艙,殘疾國外乘客:免費。

 第五列:攜帶行李超過30kg,普通艙,非殘疾國外乘客:8元。

 第六列:攜帶行李超過30kg,普通艙,殘疾國外乘客:4元。

 第七列:攜帶行李超過30kg,頭等艙,非殘疾國外乘客:12元。

 第八列:攜帶行李超過30kg,頭等艙,殘疾國外乘客:6元。

以此類推,可以得到所有16列的結果,見表2-10。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例
《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

根據表2-10,簡化如下。

(1)根據列1、2,隻要c1=f、c2=f、c3=f,就可以執行動作a1。

(2)根據列3、4,隻要c1=f、c2=f、c3=t,就可以執行動作a1。

(3)根據列9、10,隻要c1=t、c2=f、c3=f,就可以執行動作a1。

(4)根據列11、12,隻要c1=t、c2=f、c3=t,就可以執行動作a1。

于是得到表2-11。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例
《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

根據表2-11,還可以進一步調整。

根據列1、2、7、8,隻要c2=f,就可以執行動作a1,見表2-12。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例
《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

最後,16個測試用例就簡化為9個測試用例了。可以設計表2-13所示的測試用例。

《軟體測試技術實戰:設計、工具及管理》—第2章 2.2節運用決策表設計測試用例

繼續閱讀