【1+X】因果图法

想看更多内容请移步专栏

转载:【1+X】软件测试技术 - 因果图法 - 蓝桥云课 (lanqiao.cn)

因果图法

知识点

  • 因果图法的概念
  • 因果图法案例

简介

前面讲过的等价类、边界值都是着重考虑的输入条件,判定表法考虑的是输入条件的各种组合情况,但是没有考虑到各个输入之间和输出之间的相互制约关系,如果考虑输入条件之间的制约关系,就要使用到因果图法。在因果图法中,输入就是因,输出就是果,因之间有相互制约关系,因果之间也有制约关系。

因果图法的概念

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种情况的组合。因果图(Cause-Effect-Graphing)提供了把规则转化为判定表的系统化方法,其中“原因”是表示输入条件,“结果”是输入条件经过一系列计算后得到的输出。

因果图实际上是一种数字逻辑电路(一个组合的逻辑网络),但没有使用标准的电子学符号,而是使用了稍微简单点的符号。当然,读者不必要掌握电子学方面的知识,只需要了解逻辑运算符“与”、“或”、“非”即可。

在因果图中使用 4 种符号分别表示 4 种因果关系,如下图所示。用直线连接左右结点,其中左结点 c 表示输入状态(或称原因),右结点 e 表示输出状态(或称结果)。c 和 e 取值都是 0 或者 1,0 表示该条件不出现,1 表示该条件出现。

  • 恒等:若 c1是 1,则 e1也是 1;否则 e1为 0;
  • 非:若 c1是 1,则 e1是 0;否则 e1 是 1;
  • 或:若 c1 或 c2 或 c3 中有一个是 1,则 e1是 1,;否则 e1为 0;
  • 与:若 c1 和 c2 以及 c3 都是 1,则 e1是 1;否则 e1为 0。

在大多数程序中,有一些输入条件是不可能同时存在的,比如在等价类划分法中的“用户注册”的案例中,用户名的首字符不可能既为字母又为数字,二者为互斥。也就是说输入条件相互之间存在着某些制约关系,称为“约束”。在因果图中,用特定的符号标明这些约束,如下图所示。

  • E 约束(异、互斥):a、b、c 中最多有一个可能为 1,也就是 a、b、b 不能同时为 1,输入条件之间为互斥关系。但可以同时为 0。

  • I 约束(或、包含):a、b、c 中最少有一个必须是 1,也就是 a、b、c 不能同时为 0,输入条件之间为包含关系。但可以同时为 1。比如程序中的多选按钮。

  • O 约束(唯一):a、b、c 中必须有一个且仅有一个为 1。比如程序中的单选按钮。

  • R 约束(要求):a 是 1 时,b 必须是 1,a 为 0 时,b 的值不确定。即不可能 a 是 1 时,b 是 0。

    以上 4 种是输入条件的约束,输出条件的约束只有一种,就是 M 约束:

  • M 约束(强制、屏蔽):若 a 是 1,则 b 强制为 0;若 a 是 0,那么 b 的值不确定。

比如假设在一个注册界面,输入错误的用户名和错误的密码时,都会弹出对应的错误提示。但如果弹出了“用户名错误”的提示,则“密码错误”的提示信息则被屏蔽不会弹出;但如果输入正确的用户名时,那么就不会弹出“用户名错误”的提示信息,但是是否弹出“密码错误”的提示信息则依据密码是否正确而定。

因果图法是从程序规格说明描述中,找出原因(输入条件)和结果(输出或程序状态的改变)。根据原因和结果之间的关系画出关系图,然后转换为特定的判定表的黑盒测试方法。

使用因果图设计测试用例的步骤如下:

  • 第 1 步:分析待测系统的规格说明,找出原因与结果。
  • 第 2 步:明确所有原因和结果之间的制约关系以及组合关系,画出因果图。
  • 第 3 步:在因果图上标记约束条件。
  • 第 4 步:跟踪因果图中的状态条件,把因果图转换为判定表。
  • 第 5 步:将判定表中的每一列作为依据,生成测试用例。

因果图法案例

某软件的规格说明中对登录名输入包含这样的要求:输入的第一个字符必须是”$”或英文字母,第二个字符必须是一个数字,在此情况下进入第二个窗口;但如果第一个字符不正确,则给出信息 M;如果第二个字符不是数字,则给出信息 N。

【解析】:

分析程序的规格说明,列出原因和结果。如下表所示。

将原因和结果之间因果关系用逻辑符号连接起来,得到因果图,如下图所示。

图中 c12为中间节点,是导出结果的进一步原因。

在因果图上标记约束条件。

因为 c1和 c2不可能同时为 1,即第一个字符不可能既是 c1又是 c2,所以在因果图上对其施加 E 约束,得到具有约束的因果图。如下图所示。

将因果图转换成判定表,如下表所示:

设计测试用例。

表中的前 2 种情况,因为 c1和 c2不可能同时为 1,所以排除。根据判定表,设计出 6 个测试用例,如下表所示。

用例编号输入数据预期输出
TC-001$5进入第 2 个窗口
TC-002$a给出信息 N
TC-003a9进入第 2 个窗口
TC-004cb给出信息 N
TC-00542给出信息 M
TC-006@%给出信息 M 和信息 N(是否会弹出信息 N,具体要看程序是否有 M 约束屏蔽发生)

小结

在较为复杂的问题中,合理使用因果图法非常有效。因果图法可以帮助我们按照一定的步骤,高效的选择测试用例,设计多个输入条件组合用例,通过因果图分析还能为我们指出,软件规格说明描述中存在的问题。

因果图主要考虑控件之间条件的组合关系和制约关系。每个控件的取值不宜过多,最好为 2 个或 3 个,比如按钮点击或者不点击,单选按钮选择或者不选择,复选框是选择还是不选择。如果控件较多,或者每个控件的取值较多,组合量将会很大,不宜使用因果图法。

因果图法也存在一定的缺点,输入条件与输出结果的因果关系,有时难以从软件需求规格说明书中得到。有时即使得到了这些因果关系,也会因为因果图关系复杂导致图非常庞大,难以理解,测试用例数目也会极其庞大。

事实上,画因果图只是一种辅助工具,通过分析最终得到判定表,再通过判定表编写测试用例,比较麻烦,影响测试效率。熟练之后,可以直接填写判定表,然后编写测试用例,因果图可以省略。或者如果开发项目在设计阶段就采用了判定表,也不必再画因果图,可以直接利用判定表来设计测试用例。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值