软件测试---NextDate函数---测试用例详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
等价类划分法——以输入域划分等价类
强健壮等价类测试
强健壮等价类测试考虑了更多的无效值情况。强健壮 等价类测试中的无效测试用例可以包含多个无效值, 即含有多个缺陷假设。因为NextDate函数有三个变量, 所以对应的强健壮等价类测试用例可以包含一个无效 值,两个无效值或三个无效值。如表5-4所示。
制作者:aTool.org
期望输出 day 9 -1 9 -1 9 -1 -1
Page 9
year 2007 2007 1900 2007 1900 1900 1900 month不在1~12中 day不在1~31中 year不在1912~2050中
-1 9 9 -1 -1 9 -1
变量month、day无效 变量year有效
D2={day:day=28}
D3={day:day=29} D4={day:day=30}
D5={day:day=31}
Y1={year:year是闰年} Y2={year:year不是闰年}
制作者:
Page 15
制作者:aTool.org
பைடு நூலகம்
决策表法
输入变量间存在大量逻辑关系的NextDate函数决策表如表5-7 所示。
制作者:
Page 16
决策表法
规则 选项 条件: C1: month在 C2: day在 C3: year在 动作: A1: 不可能 A2: day加1 A3: day复位 A4: month加1 A5: month复位 A6:year加1 √ √ √ √ √ √ √ √ √ √ √ √ √ M1 D1 - M1 D2 - M1 D3 - M1 D4 - M1 D5 - M2 D1 - M2 D2 - M2 D3 - M2 D4 - M2 D5 - M3 D1 - 1 2 3 4 5 6 7 8 9 10 11
制作者:aTool.org
制作者:
Page 8
等价类划分法——以输入域划分等价类
表5-4 NextDate函数的强健壮等价类测试用例
输入 测试用例 month Test Case 1 Test Case 2 Test Case 3 Test Case 4 Test Case 5 Test Case 6 Test Case 7
决策表共有22条规则: 第1~5条规则解决有30天的月份; 第6~10条规则解决有31天的月份(除12月份以外); 第11~15条规则解决12月份; 第16~22条规则解决2月份和闰年的问题。 不可能规则也在决策表中列出,比如第5条规则中在有30天的 月份中也考虑了31日。
制作者:aTool.org
变量month、year无效 变量day有效
变量day、year无效 变量month有效
变量month、day、year无效
制作者:
等价类划分法——以输入域划分等价类
(2)改进等价类划分测试NextDate函数
在简单等价类划分测试NextDate函数中,没有考虑2月份的天数问题,也没有考虑 闰年的问题,月份只包含了30天和31天两种情况。在改进等价类划分测试NextDate 函数中,要考虑2月份天数的问题。 关于每个月份的天数问题,可以详细划分为以下等价类: M1={month:month有30天} M2={month:month有31天, 除去12月} M3={month:month是2月} M4={month:month是12月} D1={day:1≤day≤27} D2={day:day=28} D3={day:day=29} D4={day:day=30} D5={day:day=31} Y1={year:year是闰年} Y2={year:year不是闰年}
返回
Test Case 5
Test Case 6 Test Case 7 Test Case 8
2
12 9 2
29
31 31 29
2004
2007 2007 2007
2000年3月1日(2004是闰年)
2008年1月1日 不可能的输入日期 不可能的输入日期
Test Case 9
Test Case 10 Test Case 11 Test Case 12 制作者:aTool.org
制作者:aTool.org
制作者:
Page 17
决策表法
制作者:aTool.org 制作者:
Page 3
等价类划分法——以输入域划分等价类
(1)简单等价类划分测试NextDate函数 有效等价类 M1={month:1≤month≤12}
简单等价类划分测试NextDate函数可以划分以下三种有效等价类:
D1={day:1≤day≤31}
Y1={year:1912≤year≤2050} 无效等价类 若条件 (1)~(3)中任何一个条件无效,那么NextDate 函数 都会产生一个输出,指明相应的变量超出取值范围,例如 month 的值不在 1~12 范围当中。
制作者:aTool.org
制作者:
Page 14
决策表法
根据上述动作桩发现NextDate函数的求解关键是日和月的问题,通常可以 在下面等价类(条件桩)的基础上建立决策表:
M1={month:month有30天} M2={month:month有31天,12月除外} M3={month:month是12月} M4={month:month是2月} D1={day:1≤day≤27}
制作者:aTool.org
制作者:
Page 12
边界值分析法
输入 测试用例 month Test Case 1 Test Case 2 Test Case 3 Test Case 4 Test Case 5 Test Case 6 Test Case 7 Test Case 8 Test Case 9 Test Case 10 Test Case 11 Test Case 12 Test Case 13 Test Case 14 Test Case 15 Test Case 16 Test Case 17 Test Case 18 -1 0 1 2 11 12 13 6 6 6 6 6 6 6 6 6 6 6 6 6 day 15 15 15 15 15 15 15 -1 0 1 2 30 31 32 15 15 15 15 15 15 Page 13 year 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 1911 1912 1913 2049 2050 2051 month不在1~12中 month不在1~12中 2000年1月16日 2000年2月16日 2000年11月16日 2000年12月16日 month不在1~12中 day不在1~31中 day不在1~31中 2000年6月2日 2000年6月3日 2000年7月1日 不可能的输入日期 day不在1~31中 year不在1912~2050中 1912年6月16日 1913年6月16日 2049年6月16日 2050年6月16日 year不在1912~2050中 期望输出
NextDate函数的用例设计方法
主讲:黄老师
授课班级:软件设计班
制作者:aTool.org
NextDate函数的用例设计方法
黑盒测试
等价类划分法
边界值分析法
因果图法 决策表法
制作者:aTool.org
制作者:
Page 2
等价类划分法——以输入域划分等价类
NextDate 函数包含三个变量:month(月份)、day(日期) 和 year(年),函数的输出为输入日期后一天的日期。 例如, 输入为 2007年9月 9日,则函数的输出为 2007年9月10日 。 要求输入变量 month 、 day 和 year 均为整数值,并且满足 下列条件: (1)1≤month≤12 (2)1≤day≤31 (3)1912≤year≤2050 此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂 性的来源有两个:一个是输入域的复杂性,另一个是指闰年 的规则。例如变量year和变量month取不同的值,对应的变 量day会有不同的取值范围,day值的范围可能是1~30或1~ 31,也可能是1~28或1~29。
制作者:
等价类划分法——以输入域划分等价类
测试用例 Test Case 1 Test Case 2 输入
month
9 0
day
9 9
year
2007 2007
期望输出 2007年9月10日 month不在1~12中
Test Case 3
Test Case 4 Test Case 5
13
9 9
9
0 32
2
15 9 9
30
9 35 9
Page 11
2007
2007 2007 2100
不可能的输入日期
变量month无效 变量day无效 变量year无效 制作者:
边界值分析法
边界值分析法设计测试用例
在NextDate函数中,规定了变量month、day、year的相应 取值范围。在上面等价类法设计测试用例中已经提过,具 体如下: M1={month:1≤month≤12} D1={day:1≤day≤31} Y1={year:1912≤year≤2050}
2007
2007 2007
month不在1~12中
day不在1~31中 day不在1~31中
Test Case 6
Test Case 7
9
9
9
9
1911
2051
year不在1912~2050中
year不在1912~2050中
表5-3 NextDate函数的弱健壮等价类测试用例
制作者:
Page 7
制作者:aTool.org
2007年9月10日
健壮等价类测试中包含弱健壮等价类测试和强健壮等价类测试。 • 弱健壮等价类测试 弱健壮等价类测试中的有效测试用例使用每个有效等价 类中的一个值。弱健壮等价类测试中的无效测试用例则只 包含一个无效值,其他都是有效值,即含有单缺陷假设。 如表5-3所示。
制作者:aTool.org
Page 6
制作者:aTool.org 制作者:
Page 10
等价类划分法——以输入域划分等价类
改进等价类划分测试NextDate函数如表5-5所示。
表5-5 改进等价类划分法测试用例
输入 测试用例 month Test Case 1 Test Case 2 Test Case 3 Test Case 4 6 8 2 2 day 30 31 27 28 year 2007 2007 2007 2007 2007年7月1日 2007年9月1日 2007年2月28日 2007年3月1日 期望输出
D2={day:day<1}
D3={day:day>31} Y2={year:year<1912} Y3={year:year>2050}
制作者:aTool.org 制作者:
Page 5
等价类划分法——以输入域划分等价类
一般等价类测试用例如表5-2所示。
表5-2 NextDate函数的一般等价类测试用例 测试 用例 Test Case 1 输入 month 9 day 9 year 2007 期望输出
返回
制作者:aTool.org
Test Case 20
Test Case 19
制作者:
决策表法
NextDate函数的决策表测试用例设计:
NextDate函数中包含了定义域各个变量之间的依赖问题。等价类划分法和 边界值分析法只能“独立地”选取各个输入值,不能体现出多个变量的 依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据, 排除不可能的数据组合,很好地解决了定义域的依赖问题。 NextDate函数求解给定某个日期的下一个日期的可能操作(动作桩)如下: 变量day加1操作; 变量day复位操作; 变量month加1操作; 变量month复位操作; 变量year加1操作。
制作者:aTool.org 制作者:
Page 4
等价类划分法——以输入域划分等价类
显然还存在着大量的 year 、 month 、 day 的无效组 合, NextDate 函数将这些组合统一输出为:“无效 输入日期”。其无效等价类为: M2={month:month<1} M3={month:month>12}