测试用例设计之判定表
在一个程序中,如果输入输出比较多,输入之间和输出之间相互制约的条件比较多,在这种情况下应用决策表很合适,它可以很清楚地表达它们之间的各种复杂关系。
决策表法简述:
决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。它能够将复杂的问题按照各种可能的情况全部列举出来,简明并可避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。
决策表通常由以下4部分组成:
条件桩—列出问题的所有条件
条件项—针对条件桩给出的条件列出所有可能取值
动作桩—列出问题规定的可能采取的操作
动作项—指出在条件项的各组取值情况下应采取的动作
将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在判定表中贯穿条件项和动作项的一列就是一条规则。
打印机是否能打印出来正确的内容有多个因素影响,包括驱动程序、纸张、墨粉等。
(为了简化问题,不考虑中途断电、卡纸等因素的影响)
假定:优先警告缺纸,然后警告没有墨粉,最后警告驱动程序不对。
1)列出条件桩和动作桩
条件桩:
a)驱动程序是否正确
b)是否有纸张
c)是否有墨粉
动作桩:
a) 打印内容
b)提示驱动程序不对
c)提示没有纸张
d)提示没有墨粉
2.决策表的构造及化简
1)列出所有的条件桩和动作桩
2)确定规则的个数
3)填入条件项
4)填入动作项,得到初始决策表
5)简化决策表,合并相似规则
对于n个条件的决策表,相应有2n规则(每个条件分别取真、假值),当n较大时,决策表很庞大。实际使用决策表时,常常先将它简化。决策表的简化以合并相似规则为目标,即若表中有两条或两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件
1)得到初始判定表
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
条件: 功率大于50马力? 维修记录不全? 运行超过10年? | Y Y Y | Y Y N | Y N Y | Y N N | N Y Y | N Y N | N N Y | N N N |
动作: 进行优先处理 做其他处理 | √ | √ | √ | √ | √ | √ | √ | √ |
1/2,5/7,6/8
2)简化判定表,合并相似规则
1 | 2 | 3 | 4 | 5 | |
条件: 功率大于50马力? 维修记录不全? 运行超过10年? | Y Y - | Y N Y | Y N N | N - Y | N - N |
动作: 进行优先处理 做其他处理 | √ | √ | √ | √ | √ |
合并后的判定表
当输入条件增大时,若采用因果图法和决策表法,测试用例数会随着条件数呈指数型增长。
如:某个程序的输入条件组合为
姓名——填或不填
性别——男或女
状态——激活或未激活
若考虑全面覆盖则需8个测试用例。
若需要输入5个条件,每个条件有5个可能的取值,则需5次方(5*5*5*5*5)个测试用例。
阅读器测试
1、如果觉得疲倦并且对书的内容感兴趣,同时书中的内容让你糊涂的话, 回到本章重读
2、如果觉得疲倦并且对书的内容感兴趣,同时书中的内容不让你糊涂, 继续读下去
3、如果觉得疲倦并且对书中的内容不感兴趣,同时书中的内容不让你糊涂, 停止阅读,请休息
4、如果觉得疲倦并且对书的内容不感兴趣,并且书中的内容让你糊涂, 请停止阅读,休息
5、不疲倦,对书的内容感兴趣,书中的内容不糊涂,继续读下去
6、不疲倦,不感兴趣,书中内容不糊涂,跳到下一章去读
Step1、如果需求为文字描述,将文字转化为图形
Step2、需求中包含1个独立功能 —— 阅读测试
Step3、针对此独立功能开展需求分析
界面可见输入参数:疲倦、感兴趣、糊涂
界面不可见输入参数:电量、网络
Step4、分析界面可见输入参数的关系及特点
参数存在用户输入数据,但是并不存在有效无效规则校验—X—等价类
参数不存在区间范围 —X— 边界值
参数之间存在一个是什么另外一个必须是什么的逻辑判定关系,并且
不同参数的逻辑组合会输出不同结果 —— > 判定表
Step5、判定表法设计测试用例
一个程序,在程序中输入一个时间,包含年、月、日,程序会输出第二天的年、月、日,用决策表去分析,能列出多少条用例?