測試用例之等價類劃分法/邊界值分析法(歷年軟考真題及答案)

溫故知識

6 條確定等價類的原則:

① 在輸入條件規定了取值範圍或值的個數的情況下,可以確立一個有效等價類個兩個無效等價類。

② 在輸入條件規定了輸入值的集合或者規定“必須如何”的條件下,可以確立一個有效等價類和一個無效等價類。

③ 在輸入條件是一個布爾量的情況下,可以確定一個有效等價類和一個無效等價類。

④ 在規定了輸入數據的一組值(假定 n 個),並且程序要對每一個值分別處理的情況下,可確立 n 個有效等價類和一個無效等價類。

⑤ 在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(不同角度違反規則)。

⑥ 在確知已劃分的等價類中,各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步地劃分爲更小的等價類

 

對邊界值設計測試用例,應遵循以下幾條原則:

① 如果輸入條件規定了值的範圍,則應取剛達到這個範圍的邊界的值,以及剛剛超越這個範圍邊界的值作爲測試輸入數據。

② 如果輸入條件規定了值的個數,則用最大個數、最小個數、比最小個數少 1 、比最大個數多 1 的數作爲測試數據。

③ 根據規則說明的每個輸出條件,使用前面的原則 ①。

④ 根據規則說明的每個輸出條件,應用前面的原則 ②。

⑤ 如果程序的規格說明給出的輸入域是有序集合,則應選取集合的第一個元素和最後一個元素作爲測試用例。

⑥ 如果程序中使用了一個內部數據結構,則應當選擇這個內部數據結構邊界上的值作爲測試用例。

⑦ 分析規格說明,找出其他可能的邊界條件。

 

2014年下半年軟件評測師試題:

       某商店爲購買不同數量商品的顧客報出不同的價格,其報價規則如表所示。

不同數量商品對應的單價
                            購買數量          單價(單位:元)
               頭10件(第1件到第10件)                     30
            第2個10件(第11件到第20件)                     27
            第3個10件(第21件到第30件)                     25
                            超過30件                     22

 

 

 

 

 

 

       如買 11 件需要支付 10×30+1×27=327 元,買 35 件需要支付 10×30+10×27+10×25+5×22=930 元。

       現爲該商家開發一個軟件,輸入爲商品數 C (1 ≤ C ≤ 100),輸出爲應付的價錢P。

【問題  1】

       請採用等價類劃分法爲該軟件設計測試用例(不考慮 C 爲非整數的情況)。

【問題  2】

       請採用邊界值分析法爲該軟件設計測試用例(不考慮健壯性測試,即不考慮 C 不在 1 到 100直接或者是非整數的情況)。

 

試題分析

【問題  1】

       根據等價類劃分法的知識,若規定了輸入數據的取值範圍,則劃分一個有效等價類和兩個無效等價類。

       在本題中,輸入值 C 的取值範圍爲:1 ≤ C ≤ 100,則有效等價類爲:{ C | 1 ≤ C ≤ 100 },而兩個無效等價類分別爲{ C | C < 1 }、{ C | C > 100 }。

       再根據表中對 C 的不同取值有不同的處理,因此有效的等價類還可以細分爲:{ C | 1 ≤ C ≤ 10 }、{ C | 11 ≤ C ≤ 20 }、{ C | 21 ≤ C ≤ 30 }、{ C | 31 ≤ C ≤ 100 }。

       綜上,可得4個有效等價類和2個無效的等價類。

  有效 無效
頭10件 { C | 1 ≤ C ≤ 10 }   ③ { C | C < 1 }  ①、{ C | C > 100 }  ②
第2個10件 { C | 11 ≤ C ≤ 20 }  ④  
第3個10件 { C | 21 ≤ C ≤ 30 }  ⑤  
超過30件 { C | 31 ≤ C ≤ 100 }  ⑥  

 

 

 

 

 

 

【問題  2】

       邊界值分析法作爲等價類劃分法的一種補充,是把等價類上的邊界取值作爲測試用例的一種測試方法。題目中要求不考慮健壯性測試,也就是說不用考慮無效等價類的邊界取值,剩下 4 個等價類中有 1 、10 、11 、20 、21 、30 、31 、100 這 8 個邊界值,然後每個等價類中再取 1 個任意值,一共得到 12 個邊界值的測試用例。

 

 

 

參考答案

【問題  1】

    序號                               輸入 C      輸出 P
      1 0 { C | C < 1 }          N/A
      2 101 { C | C > 100 }          N/A
      3 10 { C | 1 ≤ C ≤ 10 }          300
      4 15 { C | 11 ≤ C ≤ 20 }         435
      5 21 { C | 21 ≤ C ≤ 30 }          595
      6 40 { C | 31 ≤ C ≤ 100 }         1040

 

 

 

 

 

 

 

 

【問題  2】

序號                          輸入 C 輸出 P
1       1 30
2       5 150
3       10 300
4       11 327
5       15 435
6       20 570
7       21 595
8       25 695
9       30 820
10       31 842
11       35 930
12       100 2360


 

 

 

 

 

 

 

 

 

 

 

 

 

 

2015年下半年軟件評測師試題:

       某商店的貨品價格(P)都不大於 20 元(且爲整數),假設各科每次付款爲20元且每次限購一件商品,現有一個人家能在每位顧客購物後給出找零錢的最佳組合(找給顧客貨幣張數最少)。

       假定此商店的找零貨幣面值只包括:10 元(N10)、5 元(N5)、1 元(N1)3種。

【問題  1】

       請採用等價類劃分法爲該軟件設計測試用例(不考慮 P 爲非整數的情況)並填入到下表中。(<<N1,2>>表示 2 張 1 元,若無輸出或輸入非法,則填 N/A)

   序號                 輸入(商品價格 P)  輸出(找零錢的組合)
     1 20(P=20) N/A
     2 18(任意 15 < P < 20) <<N1,2>>
     3    
     4    
     5    
     6    
     7    
     8    
     9    
    10    

 

 

 

 

 

 

 

 

 

 

 

【問題  2】

請採用邊界值分析法爲該軟件設計測試用例。

 

試題分析

【問題  1】

       根據等價類劃分法的知識,若規定了輸入數據的取值範圍,則劃分一個有效等價類和兩個無效等價類。

       在本題中,輸入值 P 的取值範圍爲:1 ≤ P ≤ 20,則有效等價類爲:{ P | 1 ≤ P ≤ 20 },而兩個無效等價類分別爲{ P | P > 20 }、{ P | P < 1 }。分析題目後,可將上述有效等價類{ P | 1 ≤ P ≤ 20 }細分爲8個有效的等價類,分別是:{ P | P = 20 }、{ P | 15 < P < 20 }、{ P | P = 15 }、{ P | 10 < P < 15 }、{ P | P = 10 }、{ P | 5 < P < 10 }、{ P | P = 5 }、{ P | 0 < P < 5 }。

【問題  2】

       如果不考慮健壯性測試,也就是如果說不考慮無效等價類的邊界取值,8 個有效等價類中有 20,19,16,15,14,11,10,9,6,5,4,1 這 12 個邊界值,然後每個等價類中再取 1 個任意值,一共得到 16 個邊界值的測試用例({P | P = 20}、{P| P = 15}、{P| P = 10}、{P| P = 5}這 4 個等價類的任意值是 20,15,10,5,與邊界值有重複)。

 

參考答案

【問題  1】

 序號                 輸入(商品價格 P)            輸出(找零錢的組合)
     1 20(P=20) N/A
     2 18(任意 15 < P < 20) <<N1,2>>
     3 15(P=15) <<N5,1>>
     4 14(任意 10 < P < 15) <<N5,1>>、<<N1,1>>
     5 10 <<N10,1>>
     6 6 <<N10,1>>、<<N1,4>>
     7 5 <<N10,1>>、<<N5,1>>
     8 1 <<N10,1>>、<<N5,1>>、<<N1,4>>
     9 30 N/A
    10 0 N/A

 

 

 

 

 

 

 

 

 

 

 

【問題  2】

序號 輸入(商品價格 P) 輸出(找零錢的組合)
1 20 N/A
2 19 <<N1,1>>
3 18 <<N1,2>>
4 16 <<N1,4>>
5 15 <<N5,1>>
6 14 <<N5,1>>、<<N1,1>>
7 13 <<N5,1>>、<<N1,2>>
8 11 <<N5,1>>、<<N1,4>>
9 10 <<N10,1>>
10 9 <<N10,1>>、<<N1,1>>
11 8 <<N10,1>>、<<N1,2>>
12 6 <<N10,1>>、<<N1,4>>
13 5 <<N10,1>>、<<N5,1>>
14 4 <<N10,1>>、<<N5,1>>、<<N1,1>>
15 3 <<N10,1>>、<<N5,1>>、<<N1,2>>
16 1 <<N10,1>>、<<N5,1>>、<<N1,4>>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2016年下半年軟件評測師試題:

       某航空公司的會員卡分爲普卡、銀卡、金卡和白金卡 4 個級別,會員每次搭乘該航空公司航班均可能獲得積分,積分規則如表 1 所示。此外,銀卡及以上級別會員有額外積分獎勵,獎勵規則如表 2 所示。

表 1 會員積分規則(其中 K 爲所搭乘航班的飛行公里數)
艙         位          艙位代碼                               積分
頭等艙 F                           200% * K
Z                           150% * K
A                           125% * K
公務艙 C                           150% * K
D/I                           125% * K
R                           100% * K
經濟艙 Y                           125% * K
B/H/K/L/M/W                           100% * K
Q/X/U/E                            50% * K
  P/S/G/O/J/V/N/T  

 

 

 

 

 

 

 

 

 

 

 

 

表 2 額外積分獎勵規則
會員級別 普卡 銀卡 金卡 白金卡
級別代碼 F S G P
額外積分獎勵 0% 10% 25% 50%

 

 

 

 

       公司開發了一個程序來計算會員每次搭乘航班所累積的積分,程序的輸入包括會員級別 B 、艙位代碼 C 和飛行公里數 K ,程序的輸出爲本次積分 S 。其中,B 和 C 爲單個字母且大小寫不敏感,K 爲正整數,S 爲整數(小數部分四捨五入)。

【問題  1】

採用等價類劃分法對該程序進行測試,等價類表如表 3 所示,請補充空(1)~(7)。

表 3 等價類表
輸入條件 有效等價類 編號 無效等價類 編號
會員級別 B F 1 非字母 12
S 2 非單個字母 13
G 3 ____(5)____ 14
____(1)____ 4    
艙位代碼 C F 5 非字母 15
____(2)____ 6 ____(6)____ 16
____(3)____ 7    
R/B/H/K/L/M/W 8    
Q/X/U/E 9    
P/S/G/O/J/V/N/T 10    
飛行公里數 K ____(4)____ 11 非整數 17
    ____(7)____ 18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【問題  2】

根據以上等價類表設計的測試用例如表 4 所示,請補充空(1)~(13)。

表 4 測試用例
   編號                    輸入     覆蓋等價類(編號) 預期輸出
     B      C      K
     1      F      F    500 1,5,11  __(1)__
     2      S      Z  __(2)__ 2,6,11     825
     3      G      A    500 __(3)__     781
     4      P  __(4)__    500 4,8,11     750
     5 __(5)__      Q     500 1,9,11     250
     6      F      P       500 1,10,11 __(6)__
     7 __(7)__      P    500 12,10,11     N/A
     8 __(8)__      F    500 13,5,11     N/A
     9      A      Z    500 14,6,11     N/A
    10      S  __(9)__    500 2,15,11     N/A
    11      S __(10)__    500 2,16,11     N/A
    12      S      Q __(11)__ 2,9,17 __(12)__
    13      S      P __(13)__ 2,10,18     N/A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

試題分析

【問題  1】

       本問題考查等價類劃分法中等價類表的構造。

       等價類劃分法的等價類表是把程序的輸入域按規則劃分爲若干子集。

       本題中,B 和 C 由多個輸入值構成。並且需要對每個(或者每組)輸入值分別處理,按規則可以劃分爲 n 個有效等價類(每個或者每組值確定一個有效的等價類)和一個無效等價類(所有不允許輸入值的集合)。

       對 B 來說,分成 4 個有效等價類(B 分別取 F、S、G、P)和一個無效等價類(其他情況),而這個無效等價類又可以進一步細分爲非字母、非單個字母以及除 F/S/G/P 之外的其他字母。

       對 C 來說,根據額外積分 200%、150%、125%、100%、50%、0%可以分爲 6 個有效等價類和 1 個無效等價類,而這個無效等價類可以進一步細分爲非字母和非單個字母。(注意:這裏 26 個字母已經全部使用,不存在其他字母這個無效等價類)

       本題中對 K 是規定了輸入值集合必須滿足的條件(即正整數),根據規則可以劃分爲 1 個有效等價類(K 爲正整數)和 1 個無效等價類(K 不是正整數)。

【問題  2】

       考查等價類劃分法中根據等價類表編寫測試用例。

       在編寫等價類劃分法的測試用例時,如果輸入全部都來自有效等價類,則從每個有效等價類選取一個代表元素作爲輸入,如果要考慮無效等價類,則每次只選取一個無效等價類,其餘輸入都從有效等價類中選取。

試題二參考答案

【問題  1】

(1)P                (2)Z/C                                  (3)A/D/I/Y

(4)任意正整數(5)除 F/S/G/P 外的單個字母(6)非單個字母

(7)非正整數

【問題  2】

(1)1000                                (2)500                               (3)3,7,11

(4)R/B/H/K/L/M/W                (5)F                                   (6)0

(7)任意非字母,如 0            (8)任意非單個字母,如 FF(9)任意非字母,如 0

(10)任意非單個字母,如 FF(11)任意非整數,如 A        (12)N/A

(13)任意非正整數,如 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章