NextData分析

决策表(Decision Table)

决策表是一种二维的表格,通常由四部分组成。

条件框 条件条目
操作框 操作条目

条件框 — 条件定义。

操作框 — 操作的定义。

条件条目 — 各条件的取值及组合。

操作条目 — 在各条件取值组合下所执行的操作。

特点:可处理较复杂的组合条件,但不易理解,不易输入计算机。

决策表法的步骤

  1. 列出影响结果的所有条件,每种条件构成条件框的一行
  2. 列出所有可能采取的动作,每种动作构成操作框的一行
  3. 将每种条件的各种可能取值填入决策表的条件条目,用“Y”或“N”表示,决策表的列数是各种条件取值的组合
  4. 在操作条目中对各列条件组合所采取的动作划“X”
  5. 简化决策表

软件测试经典案例: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 不可能