劈材挑水之“等价类”

发表于:2011-7-18 11:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

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

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

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

输入

输入条件

有效等价类

无效等价类

正整数

正整数(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时间的有效区间。该时间被统一定义为是从1970年1月1日的零时开始计算的(这也是为什么很多计算机或设备上日期设置的下限是该时间,再早就不能设置了)。目前大部分机器是32位机器,所以BIOS用32位数字表述时间的话,最大的时间值为2038年1月19日03:14:08,此时计算机将重置时间为1901年12月13日零时(那时候估计没有人会在用32位机器了O(∩_∩)O~)

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

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号