测试用例之等价类划分法/边界值分析法(历年软考真题及答案)

温故知识

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
      10 { C | C < 1 }         N/A
      2101 { C | C > 100 }         N/A
      310 { C | 1 ≤ C ≤ 10 }         300
      415 { C | 11 ≤ C ≤ 20 }        435
      521 { C | 21 ≤ C ≤ 30 }         595
      640 { C | 31 ≤ C ≤ 100 }        1040

【问题  2】

序号                         输入 C输出 P
1      130
2      5150
3      10300
4      11327
5      15435
6      20570
7      21595
8      25695
9      30820
10      31842
11      35930
12      1002360


 

2015年下半年软件评测师试题:

       某商店的货品价格(P)都不大于 20 元(且为整数),假设各科每次付款为20元且每次限购一件商品,现有一个人家能在每位顾客购物后给出找零钱的最佳组合(找给顾客货币张数最少)。

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

【问题  1】

       请采用等价类划分法为该软件设计测试用例(不考虑 P 为非整数的情况)并填入到下表中。(<<N1,2>>表示 2 张 1 元,若无输出或输入非法,则填 N/A)

   序号                输入(商品价格 P) 输出(找零钱的组合)
     120(P=20)N/A
     218(任意 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)           输出(找零钱的组合)
     120(P=20)N/A
     218(任意 15 < P < 20)<<N1,2>>
     315(P=15)<<N5,1>>
     414(任意 10 < P < 15)<<N5,1>>、<<N1,1>>
     510<<N10,1>>
     66<<N10,1>>、<<N1,4>>
     75<<N10,1>>、<<N5,1>>
     81<<N10,1>>、<<N5,1>>、<<N1,4>>
     930N/A
    100N/A

【问题  2】

序号输入(商品价格 P)输出(找零钱的组合)
120N/A
219<<N1,1>>
318<<N1,2>>
416<<N1,4>>
515<<N5,1>>
614<<N5,1>>、<<N1,1>>
713<<N5,1>>、<<N1,2>>
811<<N5,1>>、<<N1,4>>
910<<N10,1>>
109<<N10,1>>、<<N1,1>>
118<<N10,1>>、<<N1,2>>
126<<N10,1>>、<<N1,4>>
135<<N10,1>>、<<N5,1>>
144<<N10,1>>、<<N5,1>>、<<N1,1>>
153<<N10,1>>、<<N5,1>>、<<N1,2>>
161<<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 额外积分奖励规则
会员级别普卡银卡金卡白金卡
级别代码FSGP
额外积分奖励0%10%25%50%

       公司开发了一个程序来计算会员每次搭乘航班所累积的积分,程序的输入包括会员级别 B 、舱位代码 C 和飞行公里数 K ,程序的输出为本次积分 S 。其中,B 和 C 为单个字母且大小写不敏感,K 为正整数,S 为整数(小数部分四舍五入)。

【问题  1】

采用等价类划分法对该程序进行测试,等价类表如表 3 所示,请补充空(1)~(7)。

表 3 等价类表
输入条件有效等价类编号无效等价类编号
会员级别 BF1非字母12
S2非单个字母13
G3____(5)____14
____(1)____4
舱位代码 CF5非字母15
____(2)____6____(6)____16
____(3)____7
R/B/H/K/L/M/W8
Q/X/U/E9
P/S/G/O/J/V/N/T10
飞行公里数 K____(4)____11非整数17
____(7)____18

【问题  2】

根据以上等价类表设计的测试用例如表 4 所示,请补充空(1)~(13)。

表 4 测试用例
   编号                   输入    覆盖等价类(编号)预期输出
     B     C     K
     1     F     F   5001,5,11 __(1)__
     2     S     Z __(2)__2,6,11    825
     3     G     A   500__(3)__    781
     4     P __(4)__   5004,8,11    750
     5__(5)__     Q    5001,9,11    250
     6     F     P      5001,10,11__(6)__
     7__(7)__     P   50012,10,11    N/A
     8__(8)__     F   50013,5,11    N/A
     9     A     Z   50014,6,11    N/A
    10     S __(9)__   5002,15,11    N/A
    11     S__(10)__   5002,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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值