因果图法

来源:互联网 发布: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  帮助我们按一定步骤,高效率地选择测试用例。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 备孕2年没怀孕怎么办 发现怀孕了不想要怎么办 造影后通而不畅怎么办 脑梗病人晚上闹怎么办 两眼视力差距400怎么办 脑血清颗粒吃多怎么办 脸过敏吃了海鲜怎么办 如果qq密码忘了怎么办 qq密码被盗了该怎么办 qq号被别人盗了怎么办 qq不想让别人用怎么办 买了金科的房子怎么办 蟹爪莲叶子耷拉怎么办 金钻的叶子发黄怎么办 金钻叶子发焦黄怎么办 红钻叶子黄了怎么办啊 绿钻叶子黄斑点怎么办 金钻的叶子卷怎么办 金钻叶子有黑斑怎么办 怀孕60天没有胎心胎芽怎么办 单位不给交社保怎么办 公司没给足产假怎么办 小公司不给产假怎么办 机关不给陪产假怎么办 刚人流后又怀孕怎么办 怀孕50天不想要怎么办 生了孩子不想要怎么办 刚怀孕不想要孩子怎么办 怀孕一周不想要孩子怎么办 怀孕了不想要孩子怎么办 怀上二胎后悔了怎么办 50岁怀了二胎怎么办 老公那方面太强怎么办 被私人医院骗了怎么办 我特别烦我妈怎么办 刚怀孕了有炎症怎么办 怀孕了但有炎症怎么办 20岁脸上肉松弛怎么办 20岁脸部肉松弛怎么办 脸上肉松弛怎么办16岁 才20岁脸部松弛怎么办