判定表法
概念
分析和表达多种输入条件进行组合完成不同动作的一种工具方法。
这种方法可以明确且具体的将具有复杂逻辑关系的需求表示出来
说白了就是测试组合的方法,如:账号和密码的组合
相关术语
- 条件桩:输入条件;
- 条件项:输入条件的取值;
- 动作桩:输出结果;
- 动作项:输入结果的值
判定表法的使用步骤
- 将软件需求规格说明书划分成多个需求子片段;
- 分析需求子片段,找出条件桩,条件项,动作桩,动作项;
- 计算条件项的组合数量(每个条件桩的条件项的个数相乘),并生成合并规则;
- 分析生成的组合规则,对相似规则进行合并简化(合并简化有风险需谨慎,当时间紧张,内部逻辑结构一致的时候,可以考虑合并);
- 分析每条规则,必要时可结合等价类划分边界值分析法生成最终的测试用例
案例
(1)修改某银行网站登录密码;要求如下:输入正确的原密码;输入两次一致的新密码;新密码的复杂度要满足要求8~15位;包含大写字母、小写字母、数字和其他字符。
条件桩 条件项
原密码正确 1;0
两次新密码一致 1;0
新密码复杂 1;0
条件桩/动作桩 | 1 | 2 | 3 | 4 | 5 | |||
---|---|---|---|---|---|---|---|---|
原密码正确 | 1 | 1 | 1 | 1 | 0 | |||
新密码一致 | 1 | 1 | 0 | 0 | X | |||
新密码复杂 | 1(8位;15位;12位) | 0(<8位;>15位;不包含数字。。。。。) | 1 | 0 | X | |||
动作:修改成功 | Y | N | N | N | N |
组合3和组合4可以合并或者组合2和组合4可以合并
组合1:输入正确的原密码,两次一致的新密码,让新密码达到复杂度要求,就能修改成功。
测试用例中的操作步骤部分:
在原密码框中输入AIguo1234;在新密码框中输入Aiguo&12345,在确认密码框中再次输入Aiguo&1234,检查新密码和确认密码框中的数据;点击提交。。。。。
(2)有一个需求描述如下:“……对已运行10年以上的机器、或功率大于50马力且维修记录不全的机器,给予全面维修处理,对其它机器只进行一般维修处理。
条件桩 条件项
运行年限十年以上 1;0
功率大于50马力 1;0
维修记录不全 1;0
条件桩/动作桩 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
运行十年以上 | 1 | 0 | 0 | 0 | 0 | |||
功率大于50马力 | X | 1 | 1 | 0 | 0 | |||
维修记录不全 | X | 1 | 0 | 1 | 0 | |||
动作:全面维修 | Y | Y | ||||||
动作:一般维修 | Y | Y | Y |
组合1~4可以合并;6和8合并或者7和8合并
(3)Next Date函数。就是输入某一天的日期,返回第二天的日期数值。(年的范围是19802050;日期的范围是0131)
日期+1:所有月份01~27日;闰年二月的28日;小月的29日;大月和12月的30日
月份+1;日期复位:小月(04、06、09、11)30日;闰年二月的29日;平年2月的28日;大月(01、03、05、07、08、10)的31日
年份+1;月份日期复位:12月份31日
日期无效:小月(04、06、09、11)31日;闰年二月的30日和31日;平年2月的29日、30日、31日;
条件桩 条件项
年份 闰年;平年
月份 大月;小月;二月;十二月
日期 01~27;28;29;30;31
特点和适用范围
(1)特点:测试组合的方法、全组合测试覆盖率高;效果好效率比较低,组合规则数量多导致测试用力数量庞大加大测试工作量;可以发现需求中一些逻辑描述不明确或者错误逻辑的缺陷;对于特别特别复杂逻辑关系的需求无法胜任—因果图
(2)适用范围:功能测试(业务规则;游戏规则)
注意事项:
条件桩的顺序对生成的规则没有影响;
动作桩的顺序对生成的规则没有影响;
找条件项技巧
每个小条件都列出来,然后使用布尔值1;0,然后根据情况看是否合并
合并技巧
- 看逻辑关系,如例2中:满足10年以上,那么不管其他条件如何,都是全面维修
- 如果任意两个或多个组合的条件都相同,只留下一个不同条件,且动作相同,那么可以合并
与等价类划分法的不同
- 等价类不测组合,判定表测组合
- 多个条件同时满足且逻辑关系不强,可以考虑使用等价类划分法
- 多个条件但并不需要同时满足且逻辑关系较强,可以考虑使用判定表法