Bootstrap

测试用例设计方法篇--等价类

一、等价类测试设计的思想

输入的角度出发,把输入条件划分成不同类的集合,在每个类的集合中任选1组测试数据进行测试。

二、等价类的测试步骤

1、根据需求明确输入和输入条件

2、根据输入条件划分有效等价类和无效等价类--表格

3、对所有的有效等价类和无效等价类进行编号

4、设计测试用例优先覆盖尽可能多的有效等价类

5、每个无效等价类单独设计一条用例

三、等价类的划分原则

1、输入的条件是取值范围或者明确了是几个的时候,可以划分1个有效等价类,2个无效等价类

举例:输入的值范围是[15,30]

输入输入条件编号有效等价类编号无效等价类
取值范围[15,30]1[15,30]1<15
2>30

举例:必须输入3个数

输入输入条件编号有效等价类编号无效等价类
输入个数3个13个1>3个
2<3个

2、输入的条件是一个集合,或者规定必须如何时,可以划分1个有效等价类和1个无效等价类

举例:输入的地区必须是直辖市

输入输入条件编号有效等价类编号无效等价类
城市直辖市1(北京,上海,天津,重庆)任意一个1不是直辖市的城市

举例:必填项

输入输入条件编号有效等价类编号无效等价类
身份证号必填项1必填1不填

3、输入条件有n个值,每个值都都可以获得不同的结果。可以划分n个有效等价类和1个无效等价类。

举例:输入不同学历(大专,本科,硕士,博士)查询不同学历的基本工资

输入输入条件编号有效等价类编号无效等价类
学历

大专,本科,硕士,博士

查询不同学历的基本工资

1大专1不是这些学历的其他选项
2本科
3硕士
4博士

4、如果输入要求必须满足一定的规则时,可以划分成1个有效等价类和n个无效等价类

举例:输入必须是字母数字和下划线的组合 

输入输入条件编号有效等价类编号无效等价类
内容字母数字下划线1字母数字下划线1纯字母
大专2纯数字
本科3纯特殊字符
硕士4字母+特殊字符
博士5字母+下划线
6......

5、如果输入是一个Bool值,可以划分为1个有效等价类和1个无效等价类

举例:输入的内容是男时条件为真,否则为假

输入输入条件编号有效等价类编号无效等价类
性别性别为男时条件真,否则为假11不为男

 四、等价类测试设计实例

案例一:保费费率的计算问题

*备注:假如这个需求中年龄,性别、婚姻、抚养人数是必填项。假如这些条件在设计的时候都是都是通过输入来实现的。年龄其他的选项要求是最小不能小于1岁,最大不能超过99岁。

 下面是按照等价类划分后提取的测试点,红色表示的是边界值

输入输入条件编号有效等价类编号无效等价类
年龄[20,39] 1[20,39] 20,39,30
[40,59] 2[40,59] 40,59,45
其他3[1,19] 1,19,101<1岁 0
4[60,99] 60,99,792>99 100
2位数整数52位数整数3<2个 1
4>2个 3
5字母
6汉字
7其他类型
必填项6必填8不填
性别大写字母M或者F7M
8F
9大写字母9小写m
10小写f
11其他大写字母
12其他非字母数据
必填项10必填13不填
婚姻汉字已婚或未婚11已婚
12未婚
13汉字14其他2个汉字
15其他非汉字
必填项14必填16不填
抚养人数1人口0.5点,最多扣3点,四舍五入取整15整数17汉字
18字母
19小数
20其他非整数
160
17[1,2] 1,2
18[3,4] 3,4
19≥5
必填项20必填21不填

测试用例设计:从有效等价类先开始划分,尽可能多的覆盖有效等价类,最多有12条用例;无效等价类每一个单独设计一条用例,最多21条;所以如果想尽可能的保证测试的颗粒度比较细的话,这个功能最多可以设计33条测试用例。

案例二:三角形的问题

需求:随机输入三个非负正整数a,b,c,取值范围[1-99],单位是cm厘米。判断是否满足构成三角形,如果能构成三角形,则在此基础上判断构成哪种三角形(普通三角形,等腰三角形,等边三角形,直角三角形,等腰直角三角形),构成三角形的条件如下:

普通三角形:任意两边之和大于第三边

等腰三角形:任意两边之和大于第三边,任意2边相等

等边三角形:任意两边之和大于第三边,3边相等

直角三角形:任意两边之和大于第三边,任意2边的平方和等于第三边的平方和

等腰直角三角形:任意两边之和大于第三边,任意2边的平方和等于第三边的平方和,任意两边相等

如果单边或者三边构不成三角形,则需要给出提示,对不起边长必须为正整数,请重新输入。对不起,您输入的三个正整数无法构成三角形,请重新收入。

输入输入条件编号有效等价类编号无效等价类
边长a必须输入1输入1不输入
非零2非零2
非负3非负3负整数
4负小数
整数4整数5正小数
6字母
7汉字
8特殊字符
取值范围[1,99]5[1,99] 9<1 0
10>99 100
单位6cm11m
边长b必须输入7输入12不输入
非零8非零13
非负9非负14负整数
15负小数
整数10整数16正小数
17字母
18汉字
19特殊字符
取值范围[1,99]11[1,99] 20<1 0
21>99 100
单位12cm22m
边长c必须输入13输入23不输入
非零14非零24
非负15非负25负整数
26负小数
整数16整数27正小数
28字母
29汉字
30特殊字符
取值范围[1,99]17[1,99] 31<1 0
32>99 100
单位18cm33m
普通三角形任意两边之和大于第三边19a+b>c34a+b<c
35a+b=c
20a+c>b36a+c<b
37a+c=b
21b+c>a38b+c<a
39b+c=a
等腰三角形任意两边之和大于第三边,且任意两边相等22a=b
23a=c
24b=a
等边三角形任意两边之和大于第三边,且三边相等25a=b=c
直角三角形任意两边的平方和等于第三边的平方,且任意两边之和大于第三边26a^2+b^2=c^240a^2+b^2>c^2
41a^2+b^2<c^2
27a^2+c^2=b^242a^2+c^2>b^2
43a^2+c^2<b^2
28b^2+c^2=a^244b^2+c^2>a^2
45b^2+c^2<a^2
等腰直角三角形任意两边相等,且任意两边的平方和等于第三边,且任意两边之和大于第三边

如果上面的要求全部都要满足,那么最多需要53条用例 

;