一般来说,因果图为左因右果,以直线表示因果关系,如图:

因果模型 python 因果模型图怎么分析_因果模型 python

表示当因子A为真时则得出B。比如,如果得分大于等于60为真,则是否及格为真。

因果模型 python 因果模型图怎么分析_因果模型 python_02

因果模型 python 因果模型图怎么分析_软件测试_03

逻辑或的关系,表示当因子A1、A2、A3其一为真时则得出B。比如,招聘单位招聘条件为:至少精通DB2、ORACLE、SQLSERVER一种数据库。

因果模型 python 因果模型图怎么分析_因果模型 python_04

逻辑与的关系,表示当因子A1、A2、A3全部为真时则得出B。比如,招聘单位招聘条件为:A1大本以上学历,A2精通JAVA,A3,28岁以下。


以上为因果图的符号,下面介绍一下约束符号。

因果模型 python 因果模型图怎么分析_因果模型 python_05

逻辑异关系,表示A与B最多只能有一个为真,但均可为假。想吃A鱼还是想吃B熊掌?鱼与熊掌不可兼得,却可都不得。

因果模型 python 因果模型图怎么分析_TCP_06

逻辑或关系,表示A与B最多只能有一个为假,但均可为真。比如,商店收款时,可以A支持刷银联卡支付方式?可以B支持现金支付方式?显然,可以都支持,但却不可以两个都不支持。

因果模型 python 因果模型图怎么分析_测试方法_07

表示唯一关系,A与B只能有一个为真。比如单位领导找你谈话,你是想出国锻炼发展呢,还是想留在国内升职?

因果模型 python 因果模型图怎么分析_TCP_08

表示限制关系,当A为真时,则B必须为真,比如windows操作系统的TCP/IP属性配置,当手工指定IP地址为真时,则手工指定DNS地址必然为真。

因果模型 python 因果模型图怎么分析_IP_09

表示要求关系,当A为真时,则B必须为假,TCP/IP属性配置比如windows操作系统的TCP/IP属性配置,当手工指定IP地址为真时,则自动获得DNS地址必然为假。


好了,如果画已经介绍完了,我们再做一个实例来融会贯通一下吧。教材上饮料机、象棋马走日的例子已经被举烂了,我们拿个实际工作生活中会用到的例子吧,例如某公司产假规定如下:

  • 女员工产假为90天,符合晚婚、晚育(男25周岁,女23周岁)的,可增加产假30天,共计120天。
  • 难产凭医院证明,产假增加15天。
  • 怀孕不满七个月小产,产假不超过30天,由医生检查酌情况确定。
  • 男员工符合晚婚、晚育的,可享受陪产假7天。

分析因果关系,绘制如下因果图。

因果模型 python 因果模型图怎么分析_因果模型 python_10

在此图的绘制过程中发现,此规定有些条目未予以明确,那么有些情况出现时,就找不到相应的依据了,比如,第二胎的情况如何处理?怀孕不满七个月不产时,如果医生认为的产假天数超过了30天怎么处理?等等。发现需求、设计的不完善,也是科学运用测试方法理清思路进行测试设计的一个益处吧。这些情况如果是在软件开发过程中,无论是开发人员还是测试人员都是应当找到制度规定者请其明确的,否则就会使系统的容错性、健壮性降低,甚至会丢失需求。

好了,我们回到该图,将已明确的部分转化为判定表。

条件

女员工

1

1

1

1

1

1

1

1

1

0

0

0

0

晚婚

/

1

1

0

0

1

1

0

0

1

1

0

0

晚育

/

1

0

1

0

1

0

1

0

1

0

1

0

怀孕不满七个月小产

1

0

0

0

0

0

0

0

0

/

/

/

/

医院证明难产

0

1

1

1

1

0

0

0

0

/

/

/

/

医生明确小产后的产假天数<=30天

1

/

/

/

/

0

0

0

0

/

/

/

/
















中间结果

普通产假天数(90)

0

1

1

1

1

1

1

1

1

0

0

0

0

小产产假天数(医生确定天数)

1

0

0

0

0

0

0

0

0

0

0

0

0

难产产假天数(15)

0

1

1

1

1

0

0

0

0

0

0

0

0

晚婚晚育产假天数(30)

0

1

0

0

0

1

0

0

0

0

0

0

0

陪产假天数(7)

0

0

0

0

0

0

0

0

0

1

0

0

0
















结果

假期

90

135

105

105

105

120

90

90

90

7

0

0

0

测试数据与预期出来了,测试用例就比较好写了,在这里就不再罗嗦了。


不得不提的是,采用因果图分析的一个好处,可以清晰地归纳出输入条件之间的限制关系,直接将某些条件的组合忽略掉,比如男员工的产假、难产、小产情况等,而这种异常情况并非不需测试,虽然有些输入组合是不可能出现的,但为了检验软件的容错性,还应针对因果图中的各个约束条件,灵活采用等价类划分法和边界值法等测试方法进行有针对性的测试。