软件测试_NextData分析
NextData分析
决策表(Decision Table)
决策表是一种二维的表格,通常由四部分组成。
| 条件框 | 条件条目 |
|---|---|
| 操作框 | 操作条目 |
条件框 — 条件定义。
操作框 — 操作的定义。
条件条目 — 各条件的取值及组合。
操作条目 — 在各条件取值组合下所执行的操作。
特点:可处理较复杂的组合条件,但不易理解,不易输入计算机。
决策表法的步骤
- 列出影响结果的所有条件,每种条件构成条件框的一行
- 列出所有可能采取的动作,每种动作构成操作框的一行
- 将每种条件的各种可能取值填入决策表的条件条目,用“Y”或“N”表示,决策表的列数是各种条件取值的组合
- 在操作条目中对各列条件组合所采取的动作划“X”
- 简化决策表
软件测试经典案例:NextDate函数
- 输入一个日期,包含年月日
- 输出此日期的下一天
- 如 输入April,30,2015
- 输出下一天为May,1,2015
关于Date的一些知识
- 闰年/非闰年
- 大月/小月/平月
- 闰年
- 年份能被400整除
- 能够被4整除,但不能被100整除
- 大月/小月/平月
- 大月:每月31天,有1、3、5、7、8、10、12
- 小月:每月30天,有4、6、9、11
- 平月:平年有28天,闰年有29天,有2月
关于月份英文
| 月份 | 英文 | 月份 | 英文 |
|---|---|---|---|
| 1 | January | 7 | July |
| 2 | February | 8 | August |
| 3 | March | 9 | September |
| 4 | April | 10 | October |
| 5 | May | 11 | November |
| 6 | June | 12 | December |
NextDate函数举例:
| 输入 | 期望输出 | 分析 |
|---|---|---|
| 2009.4.6 | 2009.4.7 | 日期加1 |
| 2009.4.30 | 2009.5.1 | 月份加1,日期复位 |
| 2009.5.30 | 2009.5.31 | 日期加1 |
| 2009.5.31 | 2009.6.1 | 月份加1,日期复位 |
| 2008.12.31 | 2009.1.1 | 年加1,月复位,日复位 |
| 2008.2.28 | 2008.2.29 | 日期加1 |
| 2009.2.28 | 2009.3.1 | 月份加1,日期复位 |
| … | … | … |
变量之间在输入定义域中存在逻辑依赖关系。
对这种情况,使用决策表方法可以较好地处理。
使用决策表设计测试用例时,可以把条件解释为输入,把动作解释为输出。
分析NextDate中的输入
- 日(D)
- 月(M)
- 年(Y)
| M1 :{month:month有30天} |
|---|
| M2 :{month:month有31天,12月除外} |
| M3 :{month:month是12月} |
| M4 :{month:month是2月} |
| D1:{1≤day ≤27} |
| D2:{day =28} |
| D3:{day =29} |
| D4:{day =30} |
| D5:{day =31} |
| Y1:{year:year是闰年} |
| Y2:{year:year不是闰年} |
通过前面的例子发现
为了产生给定日期的下一个日期,NextDate函数的操作有5种:
- 日期加1
- 月份加1
- 日期复位
- 月份复位
- 年份加1
| 规则 选项 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| C1:month在 | M1 | M1 | M1 | M1 | M1 | M2 | M2 | M2 | M2 | M2 | M3 |
| c2:day在 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | D4 | D5 | D1 |
| C3:year在 | - | - | - | - | - | - | - | - | - | - | - |
| A1:不可能 | √ | ||||||||||
| A2:day+1 | √ | √ | √ | √ | √ | √ | √ | √ | |||
| A3:day复位 | √ | √ | |||||||||
| A4:month+1 | √ | √ | |||||||||
| A5:month复位 | |||||||||||
| A6:year+1 |
续—————————————————–
| 规则 选项 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| C1:month在 | M3 | M3 | M3 | M3 | M4 | M4 | M4 | M4 | M4 | M4 | M4 |
| c2:day在 | D2 | D3 | D4 | D5 | D1 | D2 | D2 | D3 | D3 | D4 | D5 |
| C3:year在 | - | - | - | - | - | Y1 | Y2 | Y1 | Y2 | - | - |
| A1:不可能 | √ | √ | √ | ||||||||
| A2:day+1 | √ | √ | √ | √ | √ | ||||||
| A3:day复位 | √ | √ | √ | ||||||||
| A4:month+1 | √ | √ | |||||||||
| A5:month复位 | √ | ||||||||||
| A6:year+1 | √ |
简化后
| 规则 选项 | 1-3 | 4 | 5 | 6-9 | 10 | 11-14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C1:month在 | M1 | M1 | M1 | M2 | M2 | M3 | M3 | M4 | M4 | M4 | M4 | M4 | M4 |
| c2:day在 | D1 D2 D3 | D4 | D5 | D1 D2 D3D4 | D5 | D1 D2 D3D4 | D5 | D1 | D2 | D2 | D3 | D3 | D4D5 |
| C3:year在 | - | - | - | - | - | - | - | - | Y1 | Y2 | Y1 | Y2 | - |
| A1:不可能 | √ | √ | √ | ||||||||||
| A2:day+1 | √ | √ | √ | √ | √ | ||||||||
| A3:day复位 | √ | √ | √ | √ | √ | ||||||||
| A4:month+1 | √ | √ | √ | √ | |||||||||
| A5:month复位 | √ | ||||||||||||
| A6:year+1 | √ |
NextDate函数的决策表测试用例
| 测试用例 | Month | Day | Year | 预期输出 |
|---|---|---|---|---|
| Test1-3 | 8 | 16 | 2001 | 17/8/2001 |
| Test4 | 8 | 30 | 2004 | 1/9/2004 |
| Test5 | 8 | 31 | 2001 | 不可能 |
| Test6-9 | 1 | 16 | 2004 | 17/1/2004 |
| Test10 | 1 | 31 | 2001 | 1/2/2001 |
| Test11-14 | 12 | 16 | 2004 | 17/12/2004 |
| Test15 | 12 | 31 | 2001 | 1/1/2002 |
| Test16 | 2 | 16 | 2004 | 17/2/2001 |
| Test17 | 2 | 28 | 2004 | 29/2/2004 |
| Test18 | 2 | 28 | 2001 | 1/3/2001 |
| Test19 | 2 | 29 | 2004 | 1/3/2004 |
| Test20 | 2 | 29 | 2001 | 不可能 |
| Test21-22 | 2 | 30 | 2004 | 不可能 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ming OR Fang KINESPHERE!
评论




