项目:NextDate()函数-等价类、边界值法(student) 下载本文

项目:NextDate( )函数测试

需求:NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件: ①1≤month≤12 ②1≤day≤31 ③1912≤year≤2050 要求:黑盒测试、等价类划分法、边界值分析法

分析:此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。例如变量year和变量month取不同的值,对应的变量day会有不同的取值范围,day值的范围可能是1~30或1~31,也可能是1~28或1~29。

一、 等价类划分法设计测试用例

1、简单等价类划分测试NextDate函数 分析:

(1) 有效等价类

知识点:有效等价类是指对软件规格说明而言,由有意义的、合理的输入数据所组成的集合。利用有效等价类,能够检验程序是否实现了规格说明中预先规定的功能和性能。

简单等价类划分测试NextDate函数可以划分以下三种有效等价类: M1={month:1≤month≤12} D1={day:1≤day≤31}

Y1={year:1912≤year≤2050} (2)无效等价类

知识点:无效等价类是指对软件规格说明而言,由无意义的、不合理的输入数据所构成的集合。利用无效等价类,可以鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。

若条件M1,D1,Y1中任何一个条件无效,那么NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,例如month 的值不在 1~12 范围当中。

显然还存在着大量的 year 、 month 、 day 的无效组合, NextDate 函数将这些组合统一输出为:“无效输入日期”。 “year不在1912~2050中,请重新输入”, “month不在1~12中,请重新输入”,“day不在1~31中,请重新输入”。

其无效等价类为: M2={month:month<1} M3={month:month>12} D2={day:day<1} D3={day:day>31} Y2={year:year<1912} Y3={year:year>2050}

(3)等价类划分法的测试用例设计具体过程

知识点: (1) 首先为等价类表中的每一个等价类分别规定一个唯一的编号。 (2) 设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖。

(3) 设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。

(1)根据输入条件的要求划分等价类,列出等价类表并编号, 第一步:划分等价类

输入以及外部条件 有效等价类 编号 无效等价类 编号 (2)设计测试用例,覆盖等价类。 第二步:为有效等价类设计测试用例

编号 测试数据 预期输出 year 覆盖等价类编号 mouth T1 day 第三步:为每一个无效等价类至少设计一个测试用例

编号 测试数据 预期输出 year mouth T2 T3 T4 T5 T6 T7 day 覆盖等价类编号 (3)执行测试用例,填写测试结果 编号 测试数据 预期输出 year 实际输出 mouth T1 T2 T3 T4 day

T5 T6 T7 (4) 填写软件缺陷报告。简单软件缺陷报告格式如下: 测试模块: NextDate()函数 开 发 者: 测 试 员: 测试日期: 2013年 月 日 测试方法: 黑盒测试、功能测试、等价类划分法 软件缺陷列表 缺陷ID 缺陷详细信息 BUG1 BUG2 BUG3 BUG4

分析:结果过多的关注于对无效等价类的测试,遗漏了很多NextDate问题需测试的关键点,比如平年闰年、二月、大小月、月底等等。

此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。例如变量year和变量month取不同的值,对应的变量day会有不同的取值范围,day值的范围可能是1~30或1~31,也可能是1~28或1~29。

思考:如何改进?