判定表方法

判定表法

知识点

  • 判定法的概念
  • 判定表法案例

简介

上面讲了2个测试用例设计方法,边界值分析法和等价类划分法,他们都存在一个弱点,就是没有对输入条件的组合进行分析,对输入进行组合测试并不是一件简单地事情,因为即使对输入条件进行了等价类划分,这些组合的数量也可能是个天文数字,在一个功能模块或一个界面中,往往会有多个空间,这些控件的取值一般会有一定的组合关系,并且程序地动作依赖于输入条件,如果只是单独去测每个控件,往往使测试有很多冗余用例,同时又会造成测试的不全面,遗漏一些数据,这样对多个条件进行的组合测试的时候,我们就需要采用判定表法

判定表法的概念

判定表又称为决策表,是一种表格状的图新工具,适用于处理判断条件较多,各条件又相互组合,有多种决策方案的情况。由于决策表可以吧复杂的逻辑关系和多种组合表达的即具体又明确,因此在程序设计发展的初期,判定表就经常被当作编写程序的辅助工具

判定表通常由4个部分组成:

条件桩(Condition stub):指所有条件的名称,列出的条件的先后次序无关紧要。动作桩:指所有可能采取的操作,顺序没有约束。条件项:条件桩中的条件所有可能的取值。动作项:与条件项紧密相关,列出在条件项的各组取值取值情况下应该采取的动作

任何个条件组合的特定取值及其相应要执行的操作被称为一条规则,在盘点表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中条件有多少组合取值,也就有多少条规则。根据软件规格说明,建立判定表的步骤如下

  • 第一步:分析需求,列出所有的条件状和条件项
  • 第二步:分析需求,列出所有的动作桩和动作项
  • 第三步:根据规则,设计初始判定表
  • 第四步:简化判定表,合并相似规则,设计测试用例

运用判定表设计测试用例,可以将条件理解为输入,将动作理解为输出

判定表法案例

案例1:超市产品销售

超市中如果某产品的销售好并且库存低,则继续销售并增加该产品的进货;如果该产品销售好,但库存量不低,则继续销售,若该产品销售不好,但库存量低,则该产品下架。若该产品销售不好,且库存量不低,如果有空货架则继续销售,如果没有空货架,则该产品下架

请使用判定表法设计测试用例

【解析】

分析需求,列出所有的条件桩和条件项

条件桩条件项
c1:销售好?T or F
c2:库存低?T or F
c3:有空货架?T or F

分析需求,列出所有的条件组合所产的动作

  • A1:增加进货
  • A2:继续销售
  • A3:产品下架

根据规则,设计初始判定表,如下表所示

对于本题 有3个条件(销售、库存、有空货架),每个条件有两个取值(是或否),根据组合的原理,共有2^3=8种规则

超市产品销售判定表

第4步,简化判定表

实际使用判定表时需要简化,简化是以合并相似规则为目标,若表中有2条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,则可以合并

根据表中情形,第1,2条规则其动作项一致,条件项的前2个条件取值一致,只有第三个条件取值不同,说明第三个条件无论取任何值,都对相应的动作没有影响,这2条规则可以合并,合并的C3为–,说明在当前规则中该条件的取值与动作的取值无关,称为无关条件。根据此原则,第3、4条规则和第5、6条规则也可以合并,化简后的超市销售库存判定表如下表所示。

简化后的超市产品销售判定表

案例2:计算房地产基础中介费

有一个计算房地产基础中介费的程序,规定中介费用政策如下:

  • 如果房屋销售总价少于10万元,那么基础中介费将是销售总价的2%
  • 如果房屋销售总价大于10万元,那么基础中介费将是销售总价的1.5%,外加1000元
  • 如果销售额大于100万元,那么基础中介费将是房屋销售总价的1%,外加1500元

另外房屋销售单价和客户的性质对中介费也有影响:

  • 若单价低于1万/m^2,则外加基础中介费的5%;若是老顾客,则减免外加基础中介费
  • 若单价在1万/m^2到2万每平方,则外加基础中介费的2.5%;若是老顾客,则减免外加基础中介费
  • 若单价在2万/m^2以上,则减免外加基础中介费;若是老顾客,则减去基础中介费的5%

[解析]

分析各种输入情况,列出条件桩和条件项,如下表所示

中介费的条件桩和条件项
条件桩条件项
c1房屋销售总价1<=sale<10000
100 000<=sale<1 000 000
sale>=1 000 000
c2:房屋销售单价price<10 000
10 000 <= price <20 000
price>=20 000
客户性质b1:新客户
b2:老客户

分析程序的规格说明,并结合以上条件项, 列出可能采取的操作

  • a1:基础中介费为销售总价的2%
  • a2:基础中介费为(销售总价的1.5%+1000)元
  • a3:基础中介费为(销售总价的1%+1500)元
  • a4:外加基础中介费的5%
  • a5:外加基础中介费的2.5%
  • a6:减去基础中介费的5%

根据以上分析的步骤,画出判定表,如下表所示根据合并规则,此处没有需要简化的项

中介费判定表

**根据以上判定表,设计测试用例。**如下表 所示:

用例编号销售总价(元)销售单价(元)客户性质预期输出
中介费-00150 0005 000新客户1 050
中介费-00250 0005 000老客户1 000
中介费-00350 00015 000新客户1 025
中介费-00450 00015 000老客户1 000
中介费-00550 00025 000新客户1 000
中介费-00650 00025 000老客户950
中介费-007500 0005 000新客户8 925
中介费-008500 0005 000老客户8 500
中介费-009500 00015 000新客户8 712.5
中介费-010500 00015 000老客户8 500
中介费-011500 00025 000新客户8 500
中介费-012500 00025 000老客户8 075
中介费-0131 500 0005 000新客户17 325
中介费-0141 500 0005 000老客户16 500
中介费-0151 500 00015 000新客户16 912.5
中介费-0161 500 00015 000老客户16 500
中介费-0171 500 00025 000新客户16 500
中介费-0181 500 00025 000老客户15 675

小结

判定表的基本思路是对多个条件的组合进行分析,从而设计用例来覆盖各种组合。适合使用判定表测试设计用例需要的条件如下

  • 规则说明以判定表的形式给出,或很容易转化为判定表
  • 条件的排列顺序不影响所要执行的操作
  • 规则的排列顺序不影响所要执行的操作
  • 如果某一个规则要执行多个操作,这些操作的执行顺序也无关紧要。
  • 当某个规则的条件已经满足,并确定要执行的操作后,不必检验别的规则

判定表最突出的优点是:能够将复杂的问题按照各种可能的情况全部列出来,简明并避免遗漏,而且对条件的组合顺序并无要求。因此,利用判定表法能够设计出完整的测试用例合集。

但判定表也有他的缺陷,那就是没有考虑条件之间爱你的相互制约关系(例如互斥关系)

  • 8
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
判定: | 项目 | 取值范围 | | --- | --- | | Y | 1~9999 | | M | 1~12 | | D | 1~31 | 判定条件: 1. Y年是否为闰年(能被4整除但不能被100整除,或者能被400整除) 2. M月是否为2月(2月份只有28天或29天) 3. M月是否为小月(4、6、9、11月份只有30天) 4. M月是否为大月(1、3、5、7、8、10、12月份有31天) 测试用例设计: | 序号 | Y | M | D | 预期输出 | | --- | --- | --- | --- | --- | | 1 | 2000 | 2 | 28 | 2000-2-29 | | 2 | 2000 | 2 | 29 | 2000-3-1 | | 3 | 2001 | 2 | 28 | 2001-3-1 | | 4 | 2001 | 2 | 29 | 错误输入 | | 5 | 2000 | 4 | 30 | 2000-5-1 | | 6 | 2000 | 4 | 31 | 错误输入 | | 7 | 2000 | 6 | 30 | 2000-7-1 | | 8 | 2000 | 6 | 31 | 错误输入 | | 9 | 2000 | 9 | 30 | 2000-10-1 | | 10 | 2000 | 9 | 31 | 错误输入 | | 11 | 2000 | 11 | 30 | 2000-12-1 | | 12 | 2000 | 11 | 31 | 错误输入 | | 13 | 2000 | 1 | 31 | 2000-2-1 | | 14 | 2000 | 3 | 31 | 错误输入 | | 15 | 2000 | 5 | 31 | 错误输入 | | 16 | 2000 | 7 | 31 | 错误输入 | | 17 | 2000 | 8 | 31 | 错误输入 | | 18 | 2000 | 10 | 31 | 错误输入 | | 19 | 2000 | 12 | 31 | 2001-1-1 | | 20 | 10000 | 1 | 1 | 错误输入 | | 21 | -1 | 1 | 1 | 错误输入 | | 22 | 2000 | 0 | 1 | 错误输入 | | 23 | 2000 | 13 | 1 | 错误输入 | | 24 | 2000 | 1 | 0 | 错误输入 | | 25 | 2000 | 1 | 32 | 错误输入 | 说明: 1. 测试用例1验证了闰年的情况,2月份有29天。 2. 测试用例2验证了闰年的情况,2月份有29天。 3. 测试用例3验证了非闰年的情况,2月份只有28天。 4. 测试用例4验证了非闰年的情况,输入错误。 5. 测试用例5验证了小月的情况,4月份只有30天。 6. 测试用例6验证了小月的情况,输入错误。 7. 测试用例7验证了小月的情况,6月份只有30天。 8. 测试用例8验证了小月的情况,输入错误。 9. 测试用例9验证了小月的情况,9月份只有30天。 10. 测试用例10验证了小月的情况,输入错误。 11. 测试用例11验证了小月的情况,11月份只有30天。 12. 测试用例12验证了小月的情况,输入错误。 13. 测试用例13验证了大月的情况,1月份有31天。 14. 测试用例14验证了大月的情况,输入错误。 15. 测试用例15验证了大月的情况,5月份有31天。 16. 测试用例16验证了大月的情况,7月份有31天。 17. 测试用例17验证了大月的情况,8月份有31天。 18. 测试用例18验证了大月的情况,10月份有31天。 19. 测试用例19验证了大月的情况,12月份有31天。 20. 测试用例20验证了Y的取值范围,输入错误。 21. 测试用例21验证了Y的取值范围,输入错误。 22. 测试用例22验证了M的取值范围,输入错误。 23. 测试用例23验证了M的取值范围,输入错误。 24. 测试用例24验证了D的取值范围,输入错误。 25. 测试用例25验证了D的取值范围,输入错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值