劈材挑水之“等价类”

本文详细介绍了在C#语言中对‘下一日期’软件进行等价类测试的设计与分析,包括输入条件的等价类拆分和测试用例创建。讨论了正整数的无效等价类划分,C#中Int类型的限制,以及BIOS时间的有效区间。测试用例设计遵循覆盖有效等价类和单个无效等价类的原则,并强调了避免边界值陷阱,提高测试覆盖率的重要性。

等价类,作为最常用的测试方法之一,最难的地方可能就有两点:如何对每个输入元素进行合适的有效及无效等价类划分,太细,则冗余,太粗,则覆盖率降低;另外对于元素之间有关联和制约关系的情况来说,也需要进行合适的有效及无效等价类划分(如下面的“下一日期”软件中年、月、日之间就存在一定的制约关系)。

C#语言编写的“下一日期”软件进行等价类设计分析。

 NextDay

第一步,对每个输入条件进行等价类拆分

输入

输入条件

有效等价类

无效等价类

正整数

正整数 (1)

小数、字母、特殊字符(9)

闰年/非闰年

非闰年 (2)
一般闰年(3)
世纪非闰年 (4)
世纪闰年(5)

 

>0

>0 (6)

<=0 (10)

必填

填写 (7)

为空(11)

Int型有效性

-2147483648 ~ 2147483647 (8)

<-2147483648 (12)
>2147483647 (13)

正整数

正整数 (14)

小数、字母、特殊字符 (20)

1~12

二月 (15)
拥有30天的月份(16)
拥有31天的月份(17)

<1 (21)
>12 (22)

必填

填写 (18)

为空 (23)

Int型有效性

-2147483648 ~ 2147483647 (19)

<-2147483648 (24)
>2147483647 (25)

正整数

正整数 (26)

小数、字母、特殊字符 (33)

1~31

1~28(非闰年2月)(27)
1~29
(闰年2月)(28)
1~30
(小月)(29)
1~31
(大月)(30)

<1 (34)
>31 (35)

必填

填写 (31)

为空 (36)

Int型有效性

-2147483648 ~ 2147483647 (32)

<-2147483648 (37)
>2147483647 (38)

特殊值

BIOS重置日期

1/19/2038 (39)

 

说明:

1.       正整数的无效等价类没有拆分为如非正整数的整数、小数、字母、特殊字符这几大类,而是统一为一类,原因在于对于C#而言,转换文本框中的String值转换int型值时,如果字符串为小数、字母、特殊字符等,均会以异常处理,另外0和负整数属于数值区间中无效等价类的子集,为了避免冗余重复,此处可以忽略。

2.       Int型有效性是个非常隐藏的输入条件,如果出入值超出了Int型的定义范围,C#会报出异常,以此检测程序的异常处理。当然无效等价类中的这个年份非常之大,实际使用中用户填写该年份的概率很小,因此bug等级比较低。

注,上述表格中的int有效区间定义的C#32位类型

3.       还有一个很隐蔽的异常测试就是BIOS时间的有效区间。该时间被统一定义为是从197011日的零时开始计算的(这也是为什么很多计算机或设备上日期设置的下限是该时间,再早就不能设置了)。目前大部分机器是32位机器,所以BIOS32位数字表述时间的话,最大的时间值为2038119031408,此时计算机将重置时间为19011213日零时(那时候估计没有人会在用32位机器了O(_)O~

4.       对于欧洲立法中的教皇阳历规定(9/3/1752~9/13/1752 这十一天在历史上是不存在的),上述表格没有表述。

 

第二步,创建测试用例

原则:创建一条测试用例尽可能多的覆盖有效等价类;创建一条测试用例覆盖单个无效等价类,其他参数均以有效值填写

 

期望值

用例编号

有效等价类

1,2,6,7,8

14,15,18,19

26,27,31,32

下一日期

1

1,3,6,7,8

14,15,18,19

26,28,31,32

下一日期

2

1,4,6,7,8

14,15,18,19

26,27,31,32

下一日期

3

1,5,6,7,8

14,15,18,19

26,28,31,32

下一日期

4

1,2,6,7,8

14,16,18,19

26,29,31,32

下一日期

5

1,3,6,7,8

14,17,18,19

26,30,31,32

下一日期

6

39

下一日期

7

无效等价类

9

14,17,18,19

26,30,31,32

错误信息

8

10

14,17,18,19

26,30,31,32

错误信息

9

11

14,17,18,19

26,30,31,32

错误信息

10

12

14,17,18,19

26,30,31,32

错误信息

11

13

14,17,18,19

26,30,31,32

错误信息

12

1,2,6,7,8

20

26,30,31,32

错误信息

13

1,2,6,7,8

21

26,30,31,32

错误信息

14

1,2,6,7,8

22

26,30,31,32

错误信息

15

1,2,6,7,8

23

26,30,31,32

错误信息

16

1,2,6,7,8

24

26,30,31,32

错误信息

17

1,2,6,7,8

25

26,30,31,32

错误信息

18

1,2,6,7,8

14,17,18,19

33

错误信息

19

1,2,6,7,8

14,17,18,19

34

错误信息

20

1,2,6,7,8

14,17,18,19

35

错误信息

21

1,2,6,7,8

14,17,18,19

36

错误信息

22

1,2,6,7,8

14,17,18,19

37

错误信息

23

1,2,6,7,8

14,17,18,19

38

错误信息

24

说明:

1.       填充实际测试数据时,切忌都选择边界值进行测试;应选择区间数据的中间随机值;每次抽取的测试数据应选择不同的值,以提高测试覆盖率。

2.       对于年份、月份、日期之间的制约关系(如闰年2月有29天)在有效等价类中以三组进行了涵盖。

3.       上述表格中没有考虑边界值的取值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值