第七章 基于决策表的测试
2.4决策表测试方法

实用软件工程-软件测试
7.1 产生的原因
• 边界值测试和等价类测试未考虑输入条件的各种组合及输入条件之间的 联系,所以忽略了多个输入条件组合起来出错的情况 • 检查输入条件的组合并非易事
三 因 果 图
“学生标准化考试批阅试卷,产生成绩报告”的程序 应检查试题数与学生人数的成绩是否会超出存储容量
因果图
四 决 策 表
决策表的பைடு நூலகம்备性保证一种完备的测试
2005年6月29日
Janus Consulting
实用软件工程-软件测试
7 决策表
• 原因 基本组成 决策表的化简 决策表的生成 测试用例的设计 讨论
2005年6月29日
Janus Consulting
实用软件工程-软件测试
7.7 决策表的化简
• 设法合并具有相同动作、且条件项相似的规则
Y Y Y
× ×
× × × × × ×
Action 停止阅读,请休息 Stub :列出问题
规定可能采取的行动 2005年6月29日
规则
Action Entry :在条件
组合下应采取的行动 Janus Consulting
实用软件工程-软件测试
7.6 基本组成
• 如果有二叉条件,则决策表的条件部分是旋转了90度的真值表 • 从而保证考虑了所有可能的条件值组合
Endif 金额 欠款>60 发批准书、发货单和赊欠报告 <=500 Endif 欠款<=60 发批准书、发货单
2005年6月29日
Janus Consulting
实用软件工程-软件测试
7 决策表
• 原因 基本组成 决策表的化简 决策表的生成 测试用例的设计 讨论
软件测试(第2版 慕课版)课后习题答案

第一章软件测试基础课后习题答案1.什么是软件测试?软件测试发现一个应用从开始到结束时的错误,测试是一个过程。
(Glenford J.Myers 提出对软件测试的定义)测试是发现错误而执行的一个程序或系统的过程测试以发现故障为目的,是为了发现故障而执行程序过程2.软件测试涉及哪几个关键问题?软件测试的经济性原则谁来测试(who)测试什么(what)什么时候测试(when)怎样进行测试(how)测试的停止标准是什么(which)3.为什么说软件需求说明是软件故障的最大来源?软件需求是描述了系统有哪些功能,功能操作,性能如何等问题,是开发阶段的重要文档,也是后期软件开发的重要依据。
如果软件需求一开始就错了,在后面处理过程则会把错误放大,这样使得修复起来成本就是提升。
4.简述软件测试的复杂性和经济性。
复杂性1.完全测试是不现实的2.软件测试是有风险的3.杀虫剂现象4.缺陷的不确定性经济性软件测试是软件生命期中费用消耗最大的环节。
测试费用除了测试的直接消耗外,还包括其他的相关费用5.分析最近发生的软件质量事故,并简要分析产生的原因。
具体案例具体分子6.启动Windows计算器,输入“6,000-6=”(逗号不能少),观察计算结果,这是软件故障吗?为什么?这是软件故障中的界面缺陷。
由于无法输入逗号,无法进行输入,当做一个界面缺陷,因为不符合需求,原本是小数点变成了逗号。
7.软件测试应遵循哪些重要的原则或方针?1.完全测试程序是不可能的2.软件测试是有风险的3.测试无法找到隐藏的软件故障4.存在的故障数量与发现的故障数量成正比5.杀虫剂现象6.并非所有软件故障都能修复7.一般不要丢弃测试用例8.应避免测试自己编写的程序9.软件测试是一项复杂且具有创造性的和需要高度智慧的挑战性任务8.假定无法完全测试某一程序,那么在决定是否应该停止测试时应考虑哪些问题?在工作中,常用的停止测试标准有五类:测试超过了预定时间,停止测试执行了所有测试用例但没有发现故障,停止测试使用特定的测试用例方法作为判断测试停止的基础正面指出测试完成要求,如发现并修改70个软件故障根据单位是见查出故障数量决定是否停止测试9 . 假如星期一测试软件的某一功能时,每小时能发现一个新的软件故障,那么星期二会以什么频率发现软件故障?第一感觉就是与第一天(星期一)的一样,既然前一天发现的频率以每小时都有新的故障,说明软件的缺陷很高,所以第二天也可能有同样的频率。
5第7章基于决策表的测试

例:维修机器问题(续)
? (1)列出所有的条件桩和动作桩
?条件桩
?C1:功率大于 50马力吗? ?C2:维修记录不全吗? ?C3:运行超过 10年吗?
?动作桩
?A1:进行优先处理 ?A2:作其他处理
例:维修机器问题(续)
? (2)确定规则个数
?输入条件个数:3;
? 功率大于50马力吗 ? 维修记录不全吗 ? 运行超过10年吗
?根据软件规格说明
?①列出所有的条件桩和动作桩; ?②确定规则的个数;
?假如有n个条件,每个条件有两个取值( 0,1), 则有2n 种规则; ?③填入条件项; ?④填入动作项,得到初始决策表; ?⑤简化,合并相似规则(相同动作)。
例:维修机器问题
?问题描述:
?“……对于功率大于50马力的机器并 且维修记录不全,或已运行10年以上的 机器,应给予优先的维修处理……”
?每个条件的取值:“是”或“否”;
?规则个数:2*2*2 =8;
例:维修机器问题(续)
? (3)填入条件项;
1234 5 6 7 8
功率大于50马力吗? Y Y Y Y N N N N
条 维修记录不全吗? 件
运行超过 10年吗?
YYNN Y Y YNYN Y N
NN YN
动 进行优先处理 作 作其他处理
a1: 非三角形
XXX
a2: 不等边三角形
a3: 等腰三角形
a4: 等边三角形
X
X
X
XX
二、设计测试用例
用例 ID
a
b
c
DT1
4
1
2
DT2
1
4
2
DT3
软件测试中的决策表技术

软件测试中的决策表技术在软件测试中,决策表技术是一种被广泛应用的测试方法。
决策表是一种以表格形式呈现的测试设计工具,能够清晰地表达系统的规则和条件,并帮助测试人员针对不同情况进行测试。
决策表技术的基本原理是,将系统的输入条件、输出结果以及各种规则和约束整理成一张表格,每一行代表一个测试用例,利用这些测试用例来检查系统的正确性。
以下是决策表技术的一般步骤:1. 确定系统的输入条件和输出结果:在进行软件测试之前,首先需要明确系统的输入条件和输出结果。
这些输入条件和输出结果可以是系统的功能需求、运行环境、用户需求等。
2. 列举所有可能的情况:根据系统的输入条件,列出所有可能的情况,并将它们归类。
每一列代表一种情况,每一行代表一种组合。
3. 确定规则和约束:在决策表中,每一列代表一种情况,每一行代表一种组合。
在表格中,可以使用逻辑运算符如AND、OR等来表示各种条件之间的关系,并用“是”和“否”来表示每一种情况下的输出结果。
4. 生成测试用例:根据决策表中的各种组合,生成相应的测试用例。
每一个测试用例都可以通过对应的行和列确定,并包含了系统的输入条件和预期的输出结果。
5. 执行测试用例:根据生成的测试用例,执行测试过程,并记录实际的输出结果。
6. 比较实际结果和预期结果:对于每一种情况,比较实际的输出结果和预期的输出结果。
如果两者一致,则说明系统在这种情况下的行为是正确的;如果不一致,则说明系统在这种情况下存在问题。
通过使用决策表技术,可以减少测试用例的数量,并覆盖系统中的各种情况。
同时,决策表技术还能够提高测试的可读性和可维护性,便于测试人员对测试用例的管理和维护。
然而,决策表技术也存在一些限制。
首先,对于复杂的系统,决策表可能会变得非常庞大,导致难以管理和维护。
其次,决策表技术只能检查系统是否符合规则,但不能检查是否存在其他不可预测的问题。
此外,决策表技术还需要测试人员具备一定的领域知识和逻辑思维能力,以确保生成的决策表正确和完整。
的决策表

√
决策表
➢ 条件项—针对条件桩给出的条件列出所有可能的取值 ➢ 动作桩—列出问题规定的可能采取的操作 ➢ 动作项—指出在条件项的各组取值情况下应采取的动作 ➢规则:任何一个条件组合的特定取值及其相应要执行的操作称为 规则
决策表生成
决策表化简
简化是以合并相似规则为目标 若表中有两条以上规则具有相同的动作,并
对于year变量的取值: Y1:{year:year是闰年}; Y2: {year:year不是闰年}
3、决策表的适用范围
决策表测试法适用于具有以下特征的应 用程序:
if-then-else逻辑突出; 输入变量之间存在逻辑关系; 涉及输入变量子集的计算; 输入与输出之间存在因果关系。
解法如下:
确定规则的个数。对于本题有2个条件(销售、库存),每 个条件可以有两个取值,故有22=4种规则。
列出所有的条件桩和动作桩。
填入条件项。
填入动作项,得到初始决策表
规则
选项
1
2
3
4
条件:
C1:销售好?
T
T
F
F
C2:库存低?
T
F
T
F
动作:
a1:增加生产
√
a2:继续生产
√
√
a3:停止生产
为了获得下一个日期,NextDate函数执行 如下操作
如果输入日期不是当月最后一天,则把day变量 的值加1;
如果输入日期是1~11月份中某月的最后一天, 则把day变量的值复位为1,month变量的值加1;
如果输入日期是12月的最后一天,则day变量和 month变量的值都复位为1,year变量的值加1
(1)列出所有的条件桩和动作桩。 (2) 确定规则的个数。 有n个条件的决策表有2n个规则(每个条件取真、 假值)。 (3) 填入条件项。 (4) 填入动作项,得到初始决策表。 (5) 简化决策表,合并相似规则。
第7章基于决策表的测试

第7章基于决策表的测试
3rew
演讲完毕,谢谢听讲!
再见,see you again
2020/11/26
第7章基于决策表的测试
• 在决策表中有不关心条目时,规则数的 统计:
n 没有不关心条目的规则数计为1; n 规则中每出现一个不关心条目,规则数乘2。
第7章基于决策表的测试
第7章基于决策表的测试
第7章基于决策表的测试
第7章基于决策表的测试
第7章基于决策表的测试
第7章基于决策表的测试
构造决策表的步骤
• 列出所有的条件桩和动作桩 • 确定规则的个数 • 填入条件项 • 填入动作项,得到初始决策表 • 简化决策表,合并相似规则
• 在条件和动作中,不关心条目和不可能规则的 使用。(表7-2)
• 不同的条件选择方法可能会大大扩展决策表的 规模。
• 在条件中引入等价类的决策表。(表7-4) • 决策表中规则数目的统计。
第7章基于决策表的测试
第7章基于决策表的测试
第7章基于决策表的测试
第7章基于决策表的测试
规则条数
• 对有限条目决策表,如果有n个条件,则 产生2n条规则。
n 确定原因和结果之间的逻辑关系。分析软件 规格说明描述中的语义。找出原因与结果之 间,原因与原因之间对应的关系。根据这些 关系,画出因果图。
第7章基于决策表的测试
因果图方法
• 利用因果图生成测试用例的基本步骤:
n 确定因果图中的各个约束。由于语法或环境 限制,有些原因与原因之间,原因与结果之 间的组合情况不可能出现。为表明这些特殊 情况,在因果图上用一些记号表明约束或限 制条件。
n 条件无关 n 条件不适用(—或N/A)
• 有限条目决策表:所有条件都是二叉条件(两 个取值,真/假,是/否,0/1)的决策表。
决策表法设计测试用例

决策表法设计测试用例
决策表法是一种测试用例设计方法,它用于解决多个因素组合的决策问题。
以下是决策表法的测试用例设计步骤:
1. 确定问题的决策表:
- 需要进行决策的因素
- 各个因素之间的条件关系
2. 列出全部可能的因素组合:
- 根据问题的决策表,列出所有可能的因素组合
3. 标记有效和无效的因素组合:
- 找出无效的因素组合,即不行的情况,可以标记为无效
4. 编写测试用例:
- 根据有效的因素组合,编写测试用例
- 每个有效的因素组合都对应一个测试用例
5. 执行测试用例:
- 执行编写的测试用例
6. 整理和分析测试结果:
- 根据测试结果,整理和分析结果
通过决策表法设计的测试用例可以涵盖不同的情况,简化测试流程,提高测试效率。
但是在实际使用中,需要考虑因素的复杂性和决策表的大小,以及测试资源的限制。
7(3)-基于决策表的测试

安徽工程大学——计算机与信息学院
7
功能性测试的回顾
指导方针
❖重要启示:测试不大可能存在的缺陷是没有意义的。 很好地了解最有可能发生的缺陷种类,然后选择最 有可能发现这类缺陷的测试方法,这样更为有效。
安徽工程大学——计算机与信息学院
14
功能性测试的回顾
黑盒测试技术回顾
❖节约测试工作工时; ❖可控制生成的测试用例的数量; ❖测试用例具有一定的覆盖率。
安徽工程大学——计算机与信息学院
15
功能性测试的回顾
黑盒测试技术回顾
❖决策表解决了程序函数的逻辑依赖关系。 ❖决策表保证我们考虑了所有可能的条件值组合。 ❖决策表的完备性能够保证一种完备的测试。
▪ 如果变量是独立的,可采用边界值测试和等价类测试。 ▪ 如果变量不是独立的,可采用决策表测试。 ▪ 如果可保证是单缺陷假设,可采用边界值分析和健壮性测试。
安徽工程大学——计算机与信息学院
9
功能性测试的回顾
黑盒测试技术回顾
我们学习了很多测试技术,这些方法的共同之处 就是将程序看作是将输入映射到输出的数学函数。根 据研究输入值的属性演变成基于边界值的方法,等价 类的方法和决策表的方法、因果图。
❖如果变量不是独立的,可以采用决策表测试。
❖如果可保证是单缺陷假设,可以采用边界值分析 和健壮性测试。
安徽工程大学——计算机与信息学院
24
功能性测试的回顾
黑盒测试的选择规则
❖如果可保证是多缺陷假设,可采用最坏情况测试、 健壮最坏测试和决策表测试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学软件学院
三角形问题的测试用例
用例ID DT1 DT2 DT3 DT4 DT5 DT6 DT7 DT8 DT9 DT10 DT11 a 4 1 1 5 ? ? 2 ? 2 3 3 b 1 4 2 5 ? ? 2 ? 3 2 4 c 2 2 4 5 ? ? 3 ? 2 2 5 预期输出 非三角形 非三角形 非三角形 等边三角形 不可能 不可能 等腰三角形 不可能 等腰三角形 等腰三观察
1.决策表技术适用于具有以下特征的应用程序: 决策表技术适用于具有以下特征的应用程序: if-then-else逻辑很突出 逻辑很突出。 if-then-else逻辑很突出。 输入变量之间存在逻辑关系。 输入变量之间存在逻辑关系。 涉及输入变量子集的计算。 涉及输入变量子集的计算。 输入与输出之间存在因果关系。 输入与输出之间存在因果关系。 很高的圈(McCabe)复杂度(请参阅第9 (McCabe)复杂度 很高的圈(McCabe)复杂度(请参阅第9章)。 决策表不能很好地伸缩( 2.决策表不能很好地伸缩(有n个条件的有限条目决策表有 个规则) 有多种方法可以解决这个问题——使用扩展条 2n个规则) 。 有多种方法可以解决这个问题 使用扩展条 目决策表、代数简化表,将大表“分解”为小表, 目决策表、代数简化表,将大表“分解”为小表,查找条件 条目的重复模式。 条目的重复模式。 与其他技术一样,迭代会有所帮助。 3.与其他技术一样,迭代会有所帮助。第一次标识的条件 和行动可能不那么令人满意。 和行动可能不那么令人满意。把第一次得到的结果作为铺路 逐渐改进,直到得到满意的决策表。 石,逐渐改进,直到得到满意的决策表。 东北大学软件学院
东北大学软件学院
经过修改的三角形问题决策表
c1:a<b+c? c2:b<a+c? c3:c<b+a? c4:a=b? c5:a=c? c6:b=c? a1:非三角形 a2:不等边三角形 a3:等腰三角形 a4:等边三角形 a5:不可能 × × × × × × × F - - - - - × T F - - - - × T T F - - - × × T T T T T T T T T T T F T T T T F T T T T T F F T T T F T T T T T F T F T T T F F T T T T F F F
东北大学软件学院
带有互斥条件的决策表的规则条数统计
条件 c1:月份在M1中? c2:月份在M2中? c3:月份在M3中? 规则条数统计 a1 规则1 T - - 4 规则2 - T - 4 规则3 - - T 4
东北大学软件学院
去掉重复的决策表
条件 c1:月份在M1中? c2:月份在M2中? c3:月份在M3中? 规则条数统计 a1 条件 c1:月份在M1中? c2:月份在M2中? c3:月份在M3中? 规则条数统计 a1:不可能 1.1 T T T 1 × 1.2 T T F 1 × 1.3 T F T 1 × 1.4 T F F 1 2.3 F T T 1 × 2.4 F T F 1 3.4 F F T 1 F F F 1 × 1.1 T T T 1 1.2 T T F 1 1.3 T F T 1 1.4 T F F 1 2.1 T T T 1 2.2 T T F 1 2.3 F T T 1 2.4 F T F 1 3.1 T T T 1 3.2 T F T 1 3.3 F T T 1 3.4 F F T 1
D1, - D2 ,D3, D4, D5 - D1 ,D2, - D3,D4 D5 D1 D2 D2 D3 D3 D4 ,D5 - - Y1 Y2 Y1 Y2 - × ×
10 11-14 15 16 17 18 19 20 21-22
M2 M3 M3 M4 M4 M4 M4 M4 M4
× × × × × × ×
×
×
×
× ×
东北大学软件学院
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 日期 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 预期输出 4/16/2001 5/1/2001 不可能 1/16/2001 2/1/2001 12/16/2001 1/1/2002 2/16/2001 2/29/2004 3/1/2001 3/1/2004 不可能 不可能
第三次尝试
M1 = {月份:每月有30天} M2 = {月份:每月有31天,12月除外} M3 = {月份:此月是12月} M4 = {月份:此月是2月} D1 = {日期:1≤日期≤27} D2 = {日期:日期=28} D3 = {日期:日期=29} D4 = {日期:日期=30} D5 = {日期:日期=31} Y1 = {年:年是闰年} Y2 = {年:年是平年} 东北大学软件学院
东北大学软件学院
佣金问题的测试用例
决策表分析不太适合佣金问题。这并不奇怪,因为在佣金问 决策表分析不太适合佣金问题。这并不奇怪, 题中只有很少的决策逻辑。 题中只有很少的决策逻辑。由于等价类中的变量是真正独立 在条件对应等价类的决策表中没有不可能规则。 的,在条件对应等价类的决策表中没有不可能规则。
东北大学软件学院
第二次尝试决策表
1 c1:月份 在 c2:日期 在 c3:年在 规则条数 统计 行为 a1:不可 能 a2:日期 增1 a3:日期 复位 a4:月份 增1 a5:月份 复位 a6:年增1 × × × × × × × × × ? ? ? ? ? ? × ? ? ? × × × × × × × M1 D1 - 3 2 M1 D2 - 3 3 M1 D3 - 3 4 M1 D4 - 3 5 M2 D1 - 3 6 M2 D2 - 3 7 M2 D3 - 3 8 M2 D4 - 3 9 M3 D1 Y1 1 10 M3 D1 Y2 1 11 M3 D1 Y3 1 12 M3 D2 Y1 1 13 M3 D2 Y2 1 14 M3 D2 Y3 1 15 M3 D3 - 3 16 M3 D3 - 3 17 M3 D4 - 3
C3:年 在: - - - - - - - - - - -
a1:不可 能
a2:日期 增1 × × ×
a3:日期 复位
a4:月份 增1
a5:月份 复位
a6:年增 1
第 三 次 尝 试 决 策 表
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
× × × × × × × × × × ×
东北大学软件学院
冗余决策表
条件 c1 c2 c3 a1 a2 a3 1-4 T - - × - × 5 F T T × × - 6 F T F × × × 7 F F T - × × 8 F F F - - × 9 T F F × - ×
东北大学软件学院
不一致的决策表
条件 c1 c2 c3 a1 a2 a3 1-4 T - - × - × 5 F T T × × - 6 F T F × × × 7 F F T - × × 8 F F F - - × 9 T F F - × -
决策表的分类
有限条目决策表:所有条件都是二叉条件的决策表。 有限条目决策表:所有条件都是二叉条件的决策表。 扩展条目决策表:条件有多个值的对应的决策表。 扩展条目决策表:条件有多个值的对应的决策表。
东北大学软件学院
三角形问题决策表
c1:a、b、c构成三角形? c2:a=b? c3:a=c? c4:c=b? a1:非三角形 a2:不等边三角形 a3:等腰三角形 a4:等边三角形 a5:不可能 × × × × × × × N - - - × × Y Y Y Y Y Y Y N Y Y N Y Y Y N N Y N Y Y Y N Y N Y N N Y Y N N N
×
×
- - Y1 Y2 Y1 Y2 - - × × × × ×
×
×
×
× ×
× ×
第三次尝试决策表精简
C1:月 份在: 1-3 4 5 6-9 M1 M1 M1 M2 C2:日 期在: C3:年 在: a1:不 可能 a2:日 期增1 × × × × × a3:日 期复位 a4:月 份增1 a5:月 份复位 a6:年 增1 D1, D2, - D3 D4 D5 - -
总结
• 决策表 • 决策表的应用
东北大学软件学院
东北大学软件学院
带有互斥条件的决策表
条件 c1:月份在M1中? c2:月份在M2中? c3:月份在M3中? a1 a2 a3 规则1 T - - 规则2 - T - 规则3 - - T
东北大学软件学院
规则条数统计
c1:a<b+c? c2:b<a+c? c3:c<b+a? c4:a=b? c5:a=c? c6:b=c? 规则条数统计 a1:非三角形 a2:不等边三角形 a3:等腰三角形 a4:等边三角形 a5:不可能 × × × × × × × F - - - - - 32 × T F F - - - 8 × T T T - - - 8 × × T T T T T T 1 T T T T T F 1 T T T T F T 1 T T T T F F 1 T T T F T T 1 T T T F T F 1 T T T F F T 1 T T T F F F 1
第七章 基于决策表的测试
东北大学软件学院
决策表
决策表的四个组成部分: 决策表的四个组成部分: • 条件桩; 条件桩; • 条件条目; 条件条目; • 行动桩; 行动桩; • 行动条目; 行动条目;