因果图法
概念
- 将具有特别复杂逻辑关系的需求转化为判定表的一种中间系统化方法
- 最终会生成判定表
- 因果图就像是一个草稿,帮你理清逻辑关系,借助因果图生成判定表
- 有时候不一定要使用因果图生成判定表,但是需要画出因果图以便分析
相关术语
- 原因:可以叫条件桩或者输入条件(输入条件只取布尔量,1;0)
- 结果:可以叫动作桩或者输出条件(输出条件只取布尔量,1;0)
- 中间节点:1.当多个原因(输入条件)不是单纯的与和或的关系,可以利用中间节点存取中间结果,使因果图更加清晰;2.当多个原因(输入条件)都在描述同一件事情,可以利用中间节点归并逻辑使得因果图更加清晰。
例子:
将上面因果图转化为判定表:
查看逻辑关系发现,其这三个条件中有任何一个为0,那注册失败,
那么可以将2,4,6,8合并,还可以将3,7合并,最终得到:
小结:
判定表中合并可以看逻辑关系合并,如果说该逻辑下的组合没有达到该逻辑下的最大组合数(如合并组合3,7时),那么要合并成该有的样子(就是是多少组合数就对应合并成多少),如最终结果中的组合3(合并3,7之后并不是X,0,X而是X,0,1)
逻辑关系
-
因果关系(输入与输出的关系)
因果关系 解释说明 举例 恒等 满足条件,给出结果 C:核酸检测阳性E:隔离21天如果你的核酸检测报告呈阳性,请隔离21天。 非 满足条件,不给出结果 C:核酸检测阴性E:隔离21天如果你的核酸检测报告呈阴性,不需要隔离21天。 与 多个条件同时满足,给出结果 C1:本科学历及以上;C2:计算机专业;C3:工作五年及以上;E:优先录取阿里招聘P6级测试工作岗位对招聘要求是本科学历且计算机专业必须工作五年及以上,给予优先录取机会。 或 多个条件满足其一,即给出结果 C1:本科学历及以上;C2:计算机专业;C3:工作五年及以上;E:优先录取腾讯招聘M1机测试管理岗位,对招聘要求是本科学历、计算机专业、工作五年及以上,以上满足一条给予优先录取机会。
恒等:
与:
或:
非:
-
制约关系(条件和条件的关系,结果和结果的关系)
制约关系 解释说明 举例 E的关系(Exclusive):互斥的 多个原因(条件),至多只能有一个为真,不可以同时都为真,可以同时都为假。 选课系统,同一时段的选修课有多门,至多只能选一门,不选。停车控制系统:有一个车位,多辆车停车指挥; I的关系(Inclusive):包容的 多个原因(条件),至少有一个为真,不可以同时都为假,可以同时都为真。 考试系统,题型不定项选择题;可以有一个答案正确,可以有多个答案正确,所有的答案都可以选。 O的关系(Only):唯一的 多个原因(条件),有且只能有一个为真,不可以同时都为真,不可以同时都为假。 考试系统,题型单项选择题;有且只能有一个答案正确;Next Date的年、月、日 R的关系(Require):要求的 原因C1;C2C1为真要求C2为真,C1为假对C2不做要求。 银行网站登录银行卡号:C2密码:C1C1(密码)正确要求C2(卡号)正确C1(密码)错误C2(卡号)正确错误 M的关系(Mandatory):必须的 原因C1;C2C1为真强制C2为假,C1为假对C2不做强制。 手动输入IP地址:C1自动获得DNS服务器地址:C2选中C1,C2强制灰色;不选中C1,C2可以根据需要进行设置与不设置
因果图法的使用步骤
(1)将软件需求规格说明书划分成需求子片段;
(2)分析需求子片段,找出原因和结果;
(3)分析原因和结果之间的关系,画出因果图;
(4)分析因果图,找出原因之间制约关系,做出标识;
(5)通过因果图生成判定表,可以做合并化简;
(6)分析判定表中的规则,必要时结合等价类边界值生成最终的测试用例。
案例
- 手机欠费或者停机,则不能主被叫。
- 有一个需求描述如下:“……对已运行10年以上的机器、或功率大于50马力且维修记录不全的机器,给予全面维修处理,对其它机器只进行一般维修处理。
-
某文件修改需求:如想对文件进行修改,需要遵守以下规则:
输入的第一列字符必须是A或B,第二列字符必须是一个数字,如果第一列字符不正确,则给出信息L;如果第二列字符不正确,则给出信息M。 如果两列字符输入正确,则修改文件
原因:
C1第一列正确(直接化繁为简)
C2第二列正确
结果:
E1信息L
E2信息M
E3修改文件
小结
关于流程的条件(隐藏的制约关系)
如果下一个流程为真,则上一个流程必然为真,那么符合制约关系R
特点和适用范围
特点:
测试组合的方法、全组合测试覆盖率高;效果好效率比较低,组合规则数量多导致测试用力数量庞大加大测试工作量;可以发现需求中一些逻辑描述不明确或者错误逻辑的缺陷;能够胜任对于特别特别复杂逻辑关系的需求;制约关系会快速删减不符合逻辑规则;
适用范围:
功能测试(业务规则;游戏规则)
注意
因果图仅仅用于辅助分析逻辑,最终还是要借助其他方法生成用例数据。
小技巧
在分析因果图时先分析每个小节点,得到组合之后再将不同节点的组合合并(必要时可以使用等价划分)