因果图法
来源:互联网 发布:ubuntu 软件安装路径 编辑:程序博客网 时间:2024/06/10 22:52
因果图法就是从程序规格说明书的描述中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表,最后为判定表中的每一列设计一个测试用例。
首先我们来了解一下因果图的基本符号:
三种常用的运算符是NOT、AND、OR。还有两种比较少用的是NAND、NOR。再加上恒等,这六种符号是描述原因和结果之间的逻辑关系的。
下面以图的形式详细说明6种因果逻辑。c表示原因,e表示结果。
n 恒等:如果原因为真,那么结果必定为真。
n 与:只有2个原因都为真,那么结果为真。
n 或:2个原因中有一个为真时,结果就为真。
n 非:只有原因为假,结果才为真。
n 与非:先与后非。
n 或非:先或后非。
2. 应用的范围
更复杂的条件组合,2^n,n比较多的时候
3. 步骤
1)根据程序规格说明书描述的语义内容,分析并确定“因”和“果”;
2)将“因”和“果”表示成 “因果图”;
3)在因果图上使用若干个约束符号来标明约束条件;
4)将得到的因果图转换成判定表;
5)为判定表中每一列所表示的情况设计一个测试用例。
4. 案例
以中国象棋中马的走法为例子,具体说明:
1、如果落点在棋盘外,则不移动棋子;
2、如果落点与起点不构成日字型,则不移动棋子;
3、如果落点处有自己方棋子,则不移动棋子;
4、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;
5、如果不属于1-4条,且落点处无棋子,则移动棋子;
6、如果不属于1-4条,且落点处为对方棋子 (非老将) ,则移动棋子并除去对方棋子;
7、如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。
案例分析--因果图
1)根据程序规格说明书描述的语义内容,分析并确定“因”和“果”;
原因:
1、落点在棋盘外;
2、不构成日字;
3、落点有自方棋子;
4、绊马腿;
5、落点无棋子;
6、落点为对方棋子;
7、落点为对方老将。
结果:
21、不移动;
22、移动;
23、移动己方棋子消除对方棋子;
24、移动并战胜对方。
2)将“因”和“果”表示成 “因果图”,并标明约束条件;
3)将得到的因果图转换成判定表;
11这个结点称做中间结点,是为了让因果图的结构更加明了,简化因果图导出的判定表。分析得出以下两个结论:
只有1、2、3、4都不成立时,产生11,跟5、6、7结合分别得出22、23、24三个结果;
不管5、6、7哪个成立,只要1、2、3、4有一个成立,就产生结果21;再加上落点有自方棋子的状况。
可以得到判定表如下:
进一步分析,将各种不可能产生的组合情况,取消掉,图中用灰色表示。这些都是之前没有写的一些约束条件导致的。比如落点在棋盘外,那么落点就不可能在对方棋子上了。
4)为判定表中每一列所表示的情况设计一个测试用例。
5. 总结
因果图常和判定表结合起来使用,先用因果图后用判定表。
例子2
再以支付宝认证总流程为例,说明因果图的实际应用。
支付宝个人认证中,分为两部分:个人身份认证和银行卡认证。这两者都通过后,认为个人认证成功。
个人身份认证需要提交个人基本信息及身份证复印件。
银行卡认证分为两种:提现认证和充值认证。
提现认证的流程是:用户提交正确的银行帐号——>支付宝给用户的银行卡中随机打款——>用户确认金额,认证成功。
充值认证的流程是:用户提交正确的银行帐号——>充值——>充值完成——>网银反馈,认证成功。
n 从上面的描述中,我们可以总结出2大原因和一个结果。
原因一:身份认证成功
身份认证成功也是一个中间结果,它也有2个原因,提交基本信息成功和提交身份证成功。
原因二:银行卡认证成功,包含2个原因:充值认证成功和提现认证成功。这2种原因也可以看做是中间结果,产生结果的原因在需求中可以也能明显看出来,不再赘述。
一个结果:个人认证成功。
注意:为了简便起见,我们假设个人信息提交和身份证件提交成功后,身份认证则成功,忽略人工审核过程。
原因和结果表如下:
原因
c11
个人基本信息提交成功
c12
个人身份证件提交成功
原因
c221
充值认证的银行帐号提交成功
c222
充值成功
c223
网银反馈成功
原因
c211
提现认证的银行帐号提交成功
c212
支付宝打款成功
c213
用户确认成功
中间结果
c21
银行卡提现认证成功
c22
银行卡充值认证成功
中间结果
c1
身份认证成功
c2
银行卡认证成功
结果
e1
个人认证成功
n 确定因果逻辑关系
对于因果关系较为的复杂的逻辑,通过结果向前推原因是一个不错的方法。
认证成功:身份认证成功和银行卡认证同时为真,认证成功才为真。
身份认证成功:基本信息和身份证件同时为真,身份认证成功才为真。
银行卡认证:提现认证和充值认证有一个成功,银行卡认证则成功。
提现认证、充值认证都是所有的原因都为真时,自己才为真。
n 确定约束关系
从业务流程可知:提现认证和充值认证是二择一的,满足唯一性约束条件。而充值认证的三个原因,有流程上的先后顺序,满足必要性约束条件。同样,提现认证的三个原因也满足必要性约束条件。
根据约束关系,我们画出因果图如下:
n 画决策表及设计测试用例的过程略。
总上所述,我认为因果图最大的好处有2点:
n 考虑了多个输入之间的相互组合、相互制约关系。
n 帮助我们按一定步骤,高效率地选择测试用例。
- 因果图法
- 因果图法
- 因果图法
- 实例介绍因果图法
- (四)因果图法
- 实例介绍因果图法
- 因果图
- 因果图
- 因果图法(Cause Effect Graphing)
- 设计测试用例--因果图法
- 浅析黑盒测试中的因果图法
- 因果图法设计测试用例
- 黑盒测试方法—因果图法
- 因果图法设计测试用例
- 因果图与判定表法
- 因果图法设计测试用例
- 闰年因果分析图
- 因果图方法
- How to convert char array to String in Java
- Android 使用 ANT 打包 Android 应用 .
- Android 短彩信数据模型介绍
- SpringMVC配置
- javascript技巧
- 因果图法
- 冒泡排序算法
- undefined reference to 'pthread_create'
- 记android平台下一次病毒发现之旅
- Msconfig在windows 2000系统下的运用
- nginx高并发处理设置
- Java IO流读写文件的几个注意点
- Ajax Pro 用户请求进度条
- 彻底清除IE缓存