大家好,又见面了,我是你们的朋友全栈君
因果图简介
等价类划分法和边界值法都是着重考虑到了输入条件,但是没有考虑到输入条件的组合与输入条件的相互制约关系。这样有可能忽视了很多错误 如果测试时考虑到了各种组合,测试所有组合将是一个天文数字,因此需要考虑采用一种适用与多种条件组合相应产生多种动作的形式来进行测试用例的设计,这就需要因果图(逻辑模型)
因果图思想
一些程序的功能可以用判定表的形式来表示,根据输入条件的组合情况来规定相应的操作
因果图设计测试用例的步骤
1 根据程序规格说明书,分析因和果,画出因果图 2 将得到的因果图转换为判定表 3 为判定表的每一列表示的情况设计一个测试用例
因果图的常用符号
与计算机中的与或非相识:
图片来源网络!
对于输入条件的约束有以下四类:
E约束(Exclusive,异或):ab不能同时为1,可以同时为0; I约束(Inclusive,或):abc至少一个为1,不能同时为0; O约束(Only,唯一):ab有且只有一个为1; R约束(Require,要求):a是1时,b必须是1;
对输出条件只有一种约束:
M约束(Mask,强制):若a是1,b必须是0;
举个栗子
以下是网上找到很常见的例子 饮料售货机:有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”、或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。
分析输入输出 输入:
编号 | 输入 |
---|---|
c1 | 投入1.5硬币 |
c2 | 投入2硬币 |
c3 | 按下“可乐” 按钮 |
c4 | 按下“雪碧” 按钮 |
c5 | 按下“红茶” 按钮 |
输出:
编号 | 输出 |
---|---|
EF1 | 退换0.5 |
EF2 | 送出可乐 |
EF3 | 送出雪碧 |
EF4 | 送出红茶 |
分析输入之间的关系
1)C1与C2为异或关系
2)C3、C4、C5因投入硬币最多为2元 所以分析为异或关系
3)C1(C2)与C3(C4、C5)为且的关系
4)EF2、EF3、EF4为异或关系
5)EF1与EF2(3、4)没关系
分析什么原因导致结果
1)EF1:C2与C3(4、5)导致EF1
2)EF2(3、4):C1(2)与C3(4、5)导致EF2(3,4) 因果图
图片来自网络 写出判定表
图片还是来自网络
最后根据判定表设计测试用例
判定表介绍
什么叫判定表法? 就是指把所有的输入条件、所有可能采取的动作按表格列出来,每一种条件和动作的组合构成一条规则,也即一条用例。
桩 | 规则 |
---|---|
条件桩(列出所有的输入条件,顺序不重要) | 条件项(列出各个条件所有可能的取值) |
动作桩(列出问题规定的所有可能采取的动作,顺序不重要) | 动作项(列出所有可能采取的动作) |
这里条件桩和动作桩组成表格的行,条件项和动作项组成表格的列,这样组合成的表格即是依据判定表法得出的一张原始用例集合。
判定表编写步骤 1 确定规则的个数 2 列出所有的条件桩和动作桩 3 填入条件项 4 填入动作项,得到初始判定表 5 简化 判定表,合并相似规则 (相同动作)
下面这个栗子来源百度文库:
简化
很直观的栗子
注:因果图只是设计判定表的工具,不一定要费时间设计因果图。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170410.html原文链接:https://javaforall.cn