软件测试基础(五)用例设计方法之因果图法


 如果程序的输入条件和动作之间的逻辑关系明确,则可直接使用判定表驱动法。但是,如果输入条件和动作关系不明确,则应当使用因果图法

1.因果图法原理:

  因果图是一种形式化的图形语言,通过图形记号将自然语言规格说明转变成形式化语言规格说明,能够严格地表达程序输入和输出的逻辑关系。

(1)因果图表达形式

  

 

 

  •   恒等:如果原因出现,则结果出现,如果愿意不出现,则结果也不出现
  •   非(~):如果原因出现,则结果不出现;如果原因不出现,则结果出现
  •   或(∨):如果几个原因中有一个出现,则结果出现;如果几个原因都不出现,则结果不出现
  •   与(∧):如果几个原因都出现,则结果出现;如果几个原因有一个不出现,则结果不出现

  在实际问题中,输入条件之间、输出条件之间往往存在着某些依赖关系,我们称之为约束。

  • E(互斥):表示C1和C2两个原因不会同时成立,两个原因中最多可能有一个成立
  • I(包含):表示C1、C2、C3三个原因中至少有一个必须成立
  • O(唯一):表示C1、C2中必须有且仅有一个成立
  • R(要求):表示当C1出现时,C2也必须出现,即C1时1时,C2也必须时1
  • M(强制):表示当结果E1是1时,结果E2必须时0

(2)利用因果图设计测试用例的步骤

  • 分析软件的规格说明,确定哪些是原因(即输入条件或输出条件的等价类),哪些是结果(输出条件),给每一个原因和结果赋标识符
  • 分析软件规格说明中的语义信息,确定原因和结果之间、原因和原因之间的对应逻辑关系,然后根据这些关系画出因果图
  • 在因果图上标明约束。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为了表明这些特殊情况,在因果图上通过标准的符号标明约束条件
  • 将因果图转换为判定表
  • 根据判定表的每一条规则设计测试用例

2.因果图法实例

  软件规格说明要求如下:第一列字符必须是A或B,第二列字符必须是数字,在此情况下进行文件的修改。但是如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M

    根据以上规格说明,可分析如下原因和结果

    原因:1——第一列字符是A

       2——第一列字符是B

       3——第二列字符是数字

    结果:21——修改信息

       22——给出信息L

       23——给出信息M

 

  图中,11是中间原因,因为原因1和原因2不可能同时为1,即第一个地府不可能既是A又是B,因此在因果图上对他们施加E约束。

  由上因果图可得如下所示判定表,由于原因1和原因2互斥,因此规则1和规则2无效,只需要设计剩下的6个规则所对应的测试用例。

序号 1 2 3 4 5 6 7 8
  1 1 1 1 1 0 0 0 0
2 1 1 0 0 1 1 0 0
3 1 0 1 0 1 0 1 0
中间原因 11     1 1 1 1 0 0
结果 22     0 0 0 0 1 1
21     1 0 1 0 0 0
23     0 1 0 1 0 1
测试用例       A2 AK B2 BD F4 UR
      A6 A# B7 B? S9 W!

3.因果图法的优点与局限性

  优点:

  • 因果图法借助图形,能够直观地分析和表达输入的各种组合关系、约束关系和每种组合条件下的输出结果
  • 采用因果图法不仅可以发现输入和输出中的错误,而且能够发现规格说明中存在的不完整性和二义性问题

  局限性:程序输入与输出之间的因果关系有时候难以从规格说明中直接得到。当输入条件很多时,测试用例数量会很大,会造成测试工作量大和用例不便于维护的问题,需要根据实际情况尽量精简输入条件的个数 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM