基于决策表的测试课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不可能 不可能
指导方针和观察
决策表技术适用的应用程序的特征:
if-then-else逻辑很突出 输入变量之间存在逻辑关系 涉及输入变量子集的计算 输入与输出之间存在因果关系 很高的McCabe圈复杂度
决策表的优点
能把复杂的问题按各种可能的情况一一列举 出来 简明而易于理解 可避免遗漏
决策表的缺点
第7章 基于决策表的测试
决策表 基于决策表的测试 案例:三角形问题,NextDate问题 练习:隔一日问题
7.1 决策表
决策表的原理 决策表的组成 决策表建立的步骤
1. 决策表的原理
决策表
决策表:Decision Table 决策表是分析和表达多逻辑条件下执行不 同操作的工具。 在程序设计发展的初期,决策表被当作编 写程序的辅助工具。
c2:月份在M2中?
T
c3:月份在M3中?
T
c4:日期在D1中?
c5:日期在D2中?
c6:日期在D3中?
c7:日期在D4中?
c8:年在Y1中?
a1:不可能
a2:NextDate
年变量对应的等价类收缩为表中的一个条件
第二次尝试(重点考虑闰年)
M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年=2000} Y2={年:年是平年} Y3={年:年是闰年}
X
XXX
XXXX
X
X
X
X
此月是12月
此月是2月
续……
此年是闰年
11 12 13 14 15 16 17 18 19 20 21 22
c1:月份在 M3 M3 M3 M3 M3 M4 M4 M4 M4 M4 M4 M4
c2:日期在 D1 D2 D3 D4 D5 D1 D2 D2 D3 D3 D4 D5
日期 15 30 31 15 31 15 31 15 28 28 29 29 30
年 2001 2001 2001 2001 2001 2001 2001 2001 2004 2001 2004 2001 2001
预期输出 2001年4月16日 2001年5月1日
不可能 2001年1月16日 2001年2月1日 2001年12月16日 2002年1月1日 2001年2月16日 2004年2月29日 2001年3月1日 2004年3月1日
•
重于泰山,轻于鸿毛。00:47:0800:47:0800:47Wednesday, November 11, 2020
•
安全在于心细,事故出在麻痹。20.11.1120.11.1100:47:0800:47:08November 11, 2020
•
加强自身建设,增强个人的休养。2020年11月11日 上午12时47分20.11.1120.11.11
2. 决策表的组成
条件桩(Condition Stub)
列出问题的所有条件
动作桩(Action Stub)
列出可能采取的操作
条件项(Condition Entity)
列出条件桩的取值
动作项(Action Entity)
列出条件项各种取值下应该采取的动作
决策表的组成
规则
任何一个条件组合的特定取值及其相应要 执行的操作称为规则; 在决策表中贯穿条件项和动作项的一列就 是一条规则; 决策表中列出多少组条件取值,也就有多 少条规则,即条件项和动作项有多少列。
条件桩修改后的决策表
1 2 3 4 5 6 7 8 9 10 11
C1:a < b + c? F T T T T T T T T T T
C2:b < a + c? — F T T T T T T T T T
C3:c < a + b? — — F T T T T T T T T
C4:a = b?
——— T T T T F F F F
条 a = b? 件 a = c?
—Y Y Y Y N N N N —Y Y N N Y Y N N
b = c?
—Y N Y N Y N Y N
非三角形
✓
不等边三角形
动 作
等腰三角形
等边三角形
✓
✓
✓
✓✓
不可能
✓✓
✓
注意:
条件的选择可以大大扩展决策表的规模;
例如
a, b, c构成三角形吗?可以扩展为三个条件: a < b + c? b < a + c? c < a + b?
根据软件规格说明
①列出所有的条件桩和动作桩; ②确定规则的个数;
假如有n个条件,每个条件有两个取值(0,1), 则有2n 种规则; ③填入条件项; ④填入动作项,得到初始决策表; ⑤简化,合并相似规则(相同动作)。
例:维修机器问题
问题描述:
“……对于功率大于50马力的机器并 且维修记录不全,或已运行10年以上的 机器,应给予优先的维修处理……”
✓
✓
✓
✓
✓
1,2合并,5,7合并,6,8合并
例:维修机器问题(续)
(5)化简;
(1) (2) (3) (4) (5)
功率大于50马力吗? Y Y Y N N
条 维修记录不全吗? 件
运行超过10年吗?
Y N N —— —Y N Y N
动 进行优先处理 作 作其他处理
✓✓
✓
✓
✓
基于决策表的测试
根据输入输出绘制决策表; 设计测试用例覆盖决策表中每条规则;
第一次尝试
M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年是闰年} Y2={年:年是平年}
有256条规则的第一次尝试
条件
c1:月份在M1中? T
请建立决策表。
例:维修机器问题(续)
(1)列出所有的条件桩和动作桩
条件桩
C1:功率大于50马力吗? C2:维修记录不全吗? C3:运行超过10年吗?
动作桩
A1:进行优先处理 A2:作其他处理
例:维修机器问题(续)
(2)确定规则个数
输入条件个数:3;
功率大于50马力吗 维修记录不全吗 运行超过10年吗
?? ?
DT7
2
2
3
DT8
?? ?
DT9
2
3
2
DT10
3
2
2
DT11
3
4
5
预期输出
非三角形 非三角形 非三角形 等边三角形
不可能 不可能 等腰三角形 不可能 等腰三角形 等腰三角形 不等边三角形
a=b, a=c, b≠c
7.3 案例: NextDate函数
问题描述
程序有三个输入变量month、day、year,并 且满足:1≤month≤12、1≤day≤31、1900≤ year ≤2050。它们分别作为输入日期的月份、 日、年份,通过程序可以输出该输入日期在日 历上下一天的日期。例如,输入为2005年11 月29日,则该程序的输出为2005年11月30日。
利用集合的笛卡尔积计算条件项的取值
例:维修机器问题(续)
(4)填入动作项;
1 2 3 4 5 6 78
功率大于50马力吗? Y Y Y Y N N N N
条 维修记录不全吗? 件
运行超过10年吗?
Y Y N N Y Y NN Y N Y N Y N YN
动 进行优先处理 作 作其他处理
✓ ✓✓
NextDate函数的决策表
每月30天
每月31天,12月除外
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
1 2 3 4 5 6 7 8 9 10 M1 M1 M1 M1 M1 M2 M2 M2 M2 M2 D1 D2 D3 D4 D5 D1 D2 D3 D4 D5 ——————————
•
加强做责任心,责任到人,责任到位 才是长 久的发 展。20.11.1120.11.11Wednes day, November 11, 2020
•
人生得意须尽欢,莫使金樽空对月。00:47:0800:47:0800:4711/11/2020 12:47:08 AM
•
安全象只弓,不拉它就松,要想保安 全,常 把弓弦 绷。20.11.1100:47:0800:47Nov-2011-Nov-20
C5:a = c?
——— T T F F T T F F
C6:b = c?
——— T F T F T F T F
a1: 非三角形
百度文库
XXX
a2: 不等边三角形
a3: 等腰三角形
a4: 等边三角形
X
X
X
XX
二、设计测试用例
用例ID
a
b
c
DT1
4
1
2
DT2
1
4
2
DT3
1
2
4
DT4
5
5
5
DT5
?? ?
DT6
c3:年在
— — — — — — Y1 Y2 Y1 Y2 — —
行为
a1:不可能
XXX
a2:日期增1 X X X X
XX
a3:日期复位
X
XX
a4:月份增1
XX
a5:月份复位
X
a6:年增1
X
NextDate函数的精简决策表
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
7.2 案例:三角形问题
问题描述
输入三个正整数a、b、c,分别作为三角形 的三条边,通过程序判断三条边是否能构成三 角形?如果能构成三角形,判断三角形的类型 (等边三角形、等腰三角形、一般三角形)。
请用基于决策表的方法设计测试用例。
一、设计决策表
(1)条件桩
C1:a,b,c构成三角形? C2:a = b? C3:a = c? C4:b = c?
•
追求至善凭技术开拓市场,凭管理增 创效益 ,凭服 务树立 形象。2020年11月11日星期 三上午12时47分8秒00:47:0820.11.11
•
专业精神和专业素养,进一步提升离 退休工 作的质 量和水 平。2020年11月上午12时47分20.11.1100:47November 11, 2020
不能表达重复执行的动作,例如循环结构 决策表不能很好地伸缩
有n个条件的决策表有2n 个规则。
解决方法
使用扩展条目决策表、代数简化表,将大表 “分解”为小表,查找条件项的重复
课堂练习
隔一天的日期
程序有三个输入变量month、day、year, 分别作为输入日期的月份、日、年份,通过程 序可以输出该输入日期在日历上隔一天的日期。 例如,输入为2004年11月29日,则该程序的 输出为2004年12月1日。
规则示例:三角形问题
规则(续)
规则合并
规则合并就是决策表的简化。 有两条或多条规则具有相同的动作,并且 其条件项之间存在着极为相似的关系,就可 以将规则合并。
(1)两条规则合并成一条
条件项“—”表 示与取值无关。
(2)两条规则的进一步合并
条件项“—” 在逻辑上包含 其它的条件。
3. 决策表建立步骤
(2)规则数
共有四个条件,每个条件的取值为“是”或“否”,
因此有24= 16条规则。
(3)动作桩
A1:非三角形; A2:不等边三角形; A3:等腰三角形; A4:等边三角形; A5:不可能;
(4)决策表
12 3 4 5 6 7 89
a, b, c构成三角形 N Y Y Y Y Y Y Y Y
第三次尝试(关注日期和月份)
M1={月份:每月有30天} M2={月份:每月有31天,12月除外} M3={月份:此月是12月} M4={月份:此月是2月} D1={日期:1≤日期≤ 27} D2={日期:日期=28} D3={日期:日期=29} D4={日期:日期=30} D5={日期:日期=31} Y1={年:年是闰年} Y2={年:年不是闰年}
c3:年在
—
— — Y1 Y2 Y1 Y2 —
行为
a1:不可能
XX
a2:日期增1
X
XX
a3:日期复位
X
XX
a4:月份增1
XX
a5:月份复位
X
a6:年增1
X
NextDate函数的测试用例
用例ID 1~3 4 5 6~9 10
11~14 15 16 17 18 19 20
21,22
月份 4 4 4 1 1 12 12 2 2 2 2 2 2
1~3
45
6~9
10
M1
M1 M1
M2
M2
D1,D2,D3 D4 D5 D1,D2,D3,D4 D5
—
——
—
—
X
X
X
X
X
X
X
续……
11~14 15 16 17 18 19 20 21,22
c1:月份在
M3
M3 M4 M4 M4 M4 M4 M4
c2:日期在 D1,D2,D3,D4 D5 D1 D2 D2 D3 D3 D4,D5
每个条件的取值:“是”或“否”;
规则个数:2*2*2 =8;
例:维修机器问题(续)
(3)填入条件项;
123 4 5 6 7 8
功率大于50马力吗? Y Y Y Y N N N N
条 维修记录不全吗? 件
运行超过10年吗?
YYN N Y Y N N YNY N Y N Y N
动 进行优先处理 作 作其他处理
指导方针和观察
决策表技术适用的应用程序的特征:
if-then-else逻辑很突出 输入变量之间存在逻辑关系 涉及输入变量子集的计算 输入与输出之间存在因果关系 很高的McCabe圈复杂度
决策表的优点
能把复杂的问题按各种可能的情况一一列举 出来 简明而易于理解 可避免遗漏
决策表的缺点
第7章 基于决策表的测试
决策表 基于决策表的测试 案例:三角形问题,NextDate问题 练习:隔一日问题
7.1 决策表
决策表的原理 决策表的组成 决策表建立的步骤
1. 决策表的原理
决策表
决策表:Decision Table 决策表是分析和表达多逻辑条件下执行不 同操作的工具。 在程序设计发展的初期,决策表被当作编 写程序的辅助工具。
c2:月份在M2中?
T
c3:月份在M3中?
T
c4:日期在D1中?
c5:日期在D2中?
c6:日期在D3中?
c7:日期在D4中?
c8:年在Y1中?
a1:不可能
a2:NextDate
年变量对应的等价类收缩为表中的一个条件
第二次尝试(重点考虑闰年)
M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年=2000} Y2={年:年是平年} Y3={年:年是闰年}
X
XXX
XXXX
X
X
X
X
此月是12月
此月是2月
续……
此年是闰年
11 12 13 14 15 16 17 18 19 20 21 22
c1:月份在 M3 M3 M3 M3 M3 M4 M4 M4 M4 M4 M4 M4
c2:日期在 D1 D2 D3 D4 D5 D1 D2 D2 D3 D3 D4 D5
日期 15 30 31 15 31 15 31 15 28 28 29 29 30
年 2001 2001 2001 2001 2001 2001 2001 2001 2004 2001 2004 2001 2001
预期输出 2001年4月16日 2001年5月1日
不可能 2001年1月16日 2001年2月1日 2001年12月16日 2002年1月1日 2001年2月16日 2004年2月29日 2001年3月1日 2004年3月1日
•
重于泰山,轻于鸿毛。00:47:0800:47:0800:47Wednesday, November 11, 2020
•
安全在于心细,事故出在麻痹。20.11.1120.11.1100:47:0800:47:08November 11, 2020
•
加强自身建设,增强个人的休养。2020年11月11日 上午12时47分20.11.1120.11.11
2. 决策表的组成
条件桩(Condition Stub)
列出问题的所有条件
动作桩(Action Stub)
列出可能采取的操作
条件项(Condition Entity)
列出条件桩的取值
动作项(Action Entity)
列出条件项各种取值下应该采取的动作
决策表的组成
规则
任何一个条件组合的特定取值及其相应要 执行的操作称为规则; 在决策表中贯穿条件项和动作项的一列就 是一条规则; 决策表中列出多少组条件取值,也就有多 少条规则,即条件项和动作项有多少列。
条件桩修改后的决策表
1 2 3 4 5 6 7 8 9 10 11
C1:a < b + c? F T T T T T T T T T T
C2:b < a + c? — F T T T T T T T T T
C3:c < a + b? — — F T T T T T T T T
C4:a = b?
——— T T T T F F F F
条 a = b? 件 a = c?
—Y Y Y Y N N N N —Y Y N N Y Y N N
b = c?
—Y N Y N Y N Y N
非三角形
✓
不等边三角形
动 作
等腰三角形
等边三角形
✓
✓
✓
✓✓
不可能
✓✓
✓
注意:
条件的选择可以大大扩展决策表的规模;
例如
a, b, c构成三角形吗?可以扩展为三个条件: a < b + c? b < a + c? c < a + b?
根据软件规格说明
①列出所有的条件桩和动作桩; ②确定规则的个数;
假如有n个条件,每个条件有两个取值(0,1), 则有2n 种规则; ③填入条件项; ④填入动作项,得到初始决策表; ⑤简化,合并相似规则(相同动作)。
例:维修机器问题
问题描述:
“……对于功率大于50马力的机器并 且维修记录不全,或已运行10年以上的 机器,应给予优先的维修处理……”
✓
✓
✓
✓
✓
1,2合并,5,7合并,6,8合并
例:维修机器问题(续)
(5)化简;
(1) (2) (3) (4) (5)
功率大于50马力吗? Y Y Y N N
条 维修记录不全吗? 件
运行超过10年吗?
Y N N —— —Y N Y N
动 进行优先处理 作 作其他处理
✓✓
✓
✓
✓
基于决策表的测试
根据输入输出绘制决策表; 设计测试用例覆盖决策表中每条规则;
第一次尝试
M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年是闰年} Y2={年:年是平年}
有256条规则的第一次尝试
条件
c1:月份在M1中? T
请建立决策表。
例:维修机器问题(续)
(1)列出所有的条件桩和动作桩
条件桩
C1:功率大于50马力吗? C2:维修记录不全吗? C3:运行超过10年吗?
动作桩
A1:进行优先处理 A2:作其他处理
例:维修机器问题(续)
(2)确定规则个数
输入条件个数:3;
功率大于50马力吗 维修记录不全吗 运行超过10年吗
?? ?
DT7
2
2
3
DT8
?? ?
DT9
2
3
2
DT10
3
2
2
DT11
3
4
5
预期输出
非三角形 非三角形 非三角形 等边三角形
不可能 不可能 等腰三角形 不可能 等腰三角形 等腰三角形 不等边三角形
a=b, a=c, b≠c
7.3 案例: NextDate函数
问题描述
程序有三个输入变量month、day、year,并 且满足:1≤month≤12、1≤day≤31、1900≤ year ≤2050。它们分别作为输入日期的月份、 日、年份,通过程序可以输出该输入日期在日 历上下一天的日期。例如,输入为2005年11 月29日,则该程序的输出为2005年11月30日。
利用集合的笛卡尔积计算条件项的取值
例:维修机器问题(续)
(4)填入动作项;
1 2 3 4 5 6 78
功率大于50马力吗? Y Y Y Y N N N N
条 维修记录不全吗? 件
运行超过10年吗?
Y Y N N Y Y NN Y N Y N Y N YN
动 进行优先处理 作 作其他处理
✓ ✓✓
NextDate函数的决策表
每月30天
每月31天,12月除外
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
1 2 3 4 5 6 7 8 9 10 M1 M1 M1 M1 M1 M2 M2 M2 M2 M2 D1 D2 D3 D4 D5 D1 D2 D3 D4 D5 ——————————
•
加强做责任心,责任到人,责任到位 才是长 久的发 展。20.11.1120.11.11Wednes day, November 11, 2020
•
人生得意须尽欢,莫使金樽空对月。00:47:0800:47:0800:4711/11/2020 12:47:08 AM
•
安全象只弓,不拉它就松,要想保安 全,常 把弓弦 绷。20.11.1100:47:0800:47Nov-2011-Nov-20
C5:a = c?
——— T T F F T T F F
C6:b = c?
——— T F T F T F T F
a1: 非三角形
百度文库
XXX
a2: 不等边三角形
a3: 等腰三角形
a4: 等边三角形
X
X
X
XX
二、设计测试用例
用例ID
a
b
c
DT1
4
1
2
DT2
1
4
2
DT3
1
2
4
DT4
5
5
5
DT5
?? ?
DT6
c3:年在
— — — — — — Y1 Y2 Y1 Y2 — —
行为
a1:不可能
XXX
a2:日期增1 X X X X
XX
a3:日期复位
X
XX
a4:月份增1
XX
a5:月份复位
X
a6:年增1
X
NextDate函数的精简决策表
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
7.2 案例:三角形问题
问题描述
输入三个正整数a、b、c,分别作为三角形 的三条边,通过程序判断三条边是否能构成三 角形?如果能构成三角形,判断三角形的类型 (等边三角形、等腰三角形、一般三角形)。
请用基于决策表的方法设计测试用例。
一、设计决策表
(1)条件桩
C1:a,b,c构成三角形? C2:a = b? C3:a = c? C4:b = c?
•
追求至善凭技术开拓市场,凭管理增 创效益 ,凭服 务树立 形象。2020年11月11日星期 三上午12时47分8秒00:47:0820.11.11
•
专业精神和专业素养,进一步提升离 退休工 作的质 量和水 平。2020年11月上午12时47分20.11.1100:47November 11, 2020
不能表达重复执行的动作,例如循环结构 决策表不能很好地伸缩
有n个条件的决策表有2n 个规则。
解决方法
使用扩展条目决策表、代数简化表,将大表 “分解”为小表,查找条件项的重复
课堂练习
隔一天的日期
程序有三个输入变量month、day、year, 分别作为输入日期的月份、日、年份,通过程 序可以输出该输入日期在日历上隔一天的日期。 例如,输入为2004年11月29日,则该程序的 输出为2004年12月1日。
规则示例:三角形问题
规则(续)
规则合并
规则合并就是决策表的简化。 有两条或多条规则具有相同的动作,并且 其条件项之间存在着极为相似的关系,就可 以将规则合并。
(1)两条规则合并成一条
条件项“—”表 示与取值无关。
(2)两条规则的进一步合并
条件项“—” 在逻辑上包含 其它的条件。
3. 决策表建立步骤
(2)规则数
共有四个条件,每个条件的取值为“是”或“否”,
因此有24= 16条规则。
(3)动作桩
A1:非三角形; A2:不等边三角形; A3:等腰三角形; A4:等边三角形; A5:不可能;
(4)决策表
12 3 4 5 6 7 89
a, b, c构成三角形 N Y Y Y Y Y Y Y Y
第三次尝试(关注日期和月份)
M1={月份:每月有30天} M2={月份:每月有31天,12月除外} M3={月份:此月是12月} M4={月份:此月是2月} D1={日期:1≤日期≤ 27} D2={日期:日期=28} D3={日期:日期=29} D4={日期:日期=30} D5={日期:日期=31} Y1={年:年是闰年} Y2={年:年不是闰年}
c3:年在
—
— — Y1 Y2 Y1 Y2 —
行为
a1:不可能
XX
a2:日期增1
X
XX
a3:日期复位
X
XX
a4:月份增1
XX
a5:月份复位
X
a6:年增1
X
NextDate函数的测试用例
用例ID 1~3 4 5 6~9 10
11~14 15 16 17 18 19 20
21,22
月份 4 4 4 1 1 12 12 2 2 2 2 2 2
1~3
45
6~9
10
M1
M1 M1
M2
M2
D1,D2,D3 D4 D5 D1,D2,D3,D4 D5
—
——
—
—
X
X
X
X
X
X
X
续……
11~14 15 16 17 18 19 20 21,22
c1:月份在
M3
M3 M4 M4 M4 M4 M4 M4
c2:日期在 D1,D2,D3,D4 D5 D1 D2 D2 D3 D3 D4,D5
每个条件的取值:“是”或“否”;
规则个数:2*2*2 =8;
例:维修机器问题(续)
(3)填入条件项;
123 4 5 6 7 8
功率大于50马力吗? Y Y Y Y N N N N
条 维修记录不全吗? 件
运行超过10年吗?
YYN N Y Y N N YNY N Y N Y N
动 进行优先处理 作 作其他处理