软件测试-NextDate函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

边界值分析法
输入 测试用例 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 Test Case 19 Test Case 20 -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 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中 期望输出
返回
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
等价类划分法——以输入域划分等价类
(1)简单等价类划分测试NextDate函数 有效等价类 M1={month:1≤month≤12}
简单等价类划分测试NextDate函数可以划分以下三种有效等价类:
D1={day:1≤day≤31}
Y1={year:1912≤year≤2050} 无效等价类 若条件 (1)~(3)中任何一个条件无效,那么NextDate 函数 都会产生一个输出,指明相应的变量超出取值范围,例如 month 的值不在 1~12 范围当中。
NextDate函数的用例设计方法
主讲:黄老师
授课班级:软件设计班
NextDate函数的用例设计方法
黑盒测试
等价类划分法
边界值分析法
因果图法 决策表法
等价类划分法——以输入域划分等价类
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。
变量month、day无效 变量year有效
变量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不是闰年}
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函数的弱健壮等价类测试用例
等价类划分法——以输入域划分等价类
2
15 9 9
30
9 35 9
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}
返回
决策表法
NextDate函数的决策表测试用例设计:
NextDate函数中包含了定义域各个变量之间的依赖问题。等价类划分法和 边界值分析法只能“独立地”选取各个输入值,不能体现出多个变量的 依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据, 排除不可能的数据组合,很好地解决了定义域的依赖问题。 NextDate函数求解给定某个日期的下一个日期的可能操作(动作桩)如下: 变量day加1操作; 变量day复位操作; 变量month加1操作; 变量month复位操作; 变量year加1操作。
强健壮等价类测试
强健壮等价类测试考虑了更多的无效值情况。强健壮 等价类测试中的无效测试用例可以包含多个无效值, 即含有多个缺陷假设。因为NextDate函数有三个变量, 所以对应的强健壮等价类测试用例可以包含一个无效 值,两个无效值或三个无效值。如表5-4所示。
等价类划分法——以输入域划分等价类
决策表法
规则 选项 12 13 14 15 16 17 18 19 20 21 22
条件:
C1: month在 C2: day在 C3: year在 动作: A1: 不可能 √ √ √ M3 D2 - M3 D3 - M3 D4 - M3 D5 - M4 D1 - M4 D2 Y1 M4 D2 Y2 M4 D3 Y1 M4 D3 Y2 M4 D4 - M4 D5 -
等价类划分法——以输入域划分等价类
显然还存在着大量的 year 、 month 、 day 的无效组 合, NextDate 函数将这些组合统一输出为:“无效 输入日期”。其无效等价类为: M2={month:month<1} M3={month:month>12}
D2={day:day<1}
D3={day:day>31} Y2={year:year<1912} Y3={year:year>2050}
等价类划分法——以输入域划分等价类
测试用例 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
2007
表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 -1 9 9 -1 -1 9 -1 day 9 -1 9 -1 9 -1 -1 year 2007 2007 1900 2007 1900 1900 1900 month不在1~12中 day不在1~31中 year不在1912~2050中 期望输出
决策表法
规则 选项 条件: 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
D2={day:day=28}
D3={day:day=29} D4={day:day=30}
D5={day:day=31}
Y1={year:year是闰年} Y2={year:year不是闰年}
决策表法
输入变量间存在大量逻辑关系的NextDate函数决策表如表5-7 所示。
决策表共有22条规则: 第1~5条规则解决有30天的月份; 第6~10条规则解决有31天的月份(除12月份以外); 第11~15条规则解决12月份; 第16~22条规则解决2月份和闰年的问题。 不可能规则也在决策表中列出,比如第5条规则中在有30天的 月份中也考虑了31日。
决策表法
根据上述动作桩发现NextDate函数的求解关键是日和月的问题,通常可以 在下面等价类(条件桩)的基础上建立决策表:
M1={month:month有30天} M2={month:month有31天,12月除外} M3={month:month是12月} M4={month:month是2月} D1={day:1≤day≤27}
等价类划分法——以输入域划分等价类
改进等价类划分测试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日 期望输出
等价类划分法——以输入域划分等价类
一般等价类测试用例如表5-2所示。
表5-2 NextDate函数的一般等价类测试用例 测试 用例 Test Case 1 输入 month 9 day 9 year 2007 期望输出
2007年9月10日
健壮等价类测试中包含弱健壮等价类测试和强健壮等价类测试。 • 弱健壮等价类测试 弱健壮等价类测试中的有效测试用例使用每个有效等价 类中的一个值。弱健壮等价类测试中的无效测试用例则只 包含一个无效值,其他都是有效值,即含有单缺陷假设。 如表5-3所示。
A2: day加1
A3: day复位 A4: month加1 A5: month复位 A6:year加1√√来自√√√

√ √ √ √
√ √
决策表法
表5-8 简化的NextDate函数决策表
选项 规则 条件: C1: month在 M1 D1, D2, D3 - M1 M1 M2 D1, D2, D3, D4 - M2 M3 D1, D2, D3, D4 - M3 M4 M4 M4 M4 M4 M4 D4,D 5 - 1, 2, 3 4 5 6, 7, 8, 9 10 11, 12, 13, 14 15 16 17 18 19 20 21, 22
相关文档
最新文档