软件测试_因果图与决策表

因果图法(Cause-Effect Graphics)

定义

考虑输入条件之间的联系、各种组合,相应产生多个动作来设计测试用例的方法。它适合于检查程序输入条件的各种组合情况。

原因与结果之间的关系:

  • 恒等:若c1是1,则e1也为1,否则e1为0;
  • 非:若c1是1,则e1为0,否则e1为1;用符号“~”表示。
  • 或:若c1或c2或c3是1,则e1是1,否则e1为0,“或”可有任意个输入;用符号“V”表示。
  • 与:若c1和c2都是1,则e1为1,否则e1为0,“与”也可有任意个输入。用符号“∧”表示。

输入状态之间的关系:

  • 在实际问题当中输入状态相互之间还可能存在某些依赖关系,称为“约束”
  • E约束(异,排他):a和b中最多有一个可能为1,即a和b不能同时为1;
  • I约束(或,包含):a、b、c中至少有一个必须是1,即a、b、c不能同时为0;
  • O约束(唯一):a和b必须有一个且仅有一个为1;
  • R约束(要求):a是1时,b必须是1;

输出状态之间的关系:

  • M约束(强制):若结果a是1,则结果b强制为0。

用例设计步骤

  1. 分析并列出需求或规格说明书中原因和结果。
  2. 找出关系,将原因和结果连接成因果图。
  3. 把因果图转换成判定表。
  4. 把判定表中每一列表示的情况写成测试用例。
  • 因:输入条件
  • 果:输出结果或者程序状态的改变
  • 关系:原因与结果的关系,原因与原因之间的关系

实例1

某个软件的规格说明书规定:第一个字符必须是# c1 c2,第二个字符必须是一个数字字符 c3,在此情况下进行文件修改e2。如果第一个字符不是#或,则给出信息N e1;如果第二个字符不是数字,则给出信息M e3。

步骤一:分析并列出需求或规格说明书中原因和结果。

原因:c1-第一个字符是“#”

         c2-第一个字符是“*”      

​ c3-第二个字符是一个数字

结果:e1-给出信息N

         e2-修改文件  

​ e3-给出信息M

步骤二:找出关系,将原因和结果连接成因果图

因果图

步骤三:把因果图转换成判定表

1 2 3 4 5 6 7 8
C1 1 1 1 0 1 0 0 0
c2 1 1 0 1 0 1 0 0
C3 1 0 1 1 0 0 1 0
12 1 1 1 1 0 0
E1
E2
E3
不可能
测试用例 #3 *4 #B *M C2 CM

步骤四:把判定表中每一列写成测试用例

  • 最左边两列,原因c1和c2同时为1不可能,排除掉,根据表可设计出6个测试用例。
    • Test1:输入数据-#3 预期输出--修改文件
    • Test2:输入数据-*4 预期输出--修改文件
    • Test3:输入数据-#B 预期输出--给出信息M
    • Test4:输入数据-*M 预期输出--给出信息M
    • Test5:输入数据-C2 预期输出--给出信息N
    • Test6:输入数据-CM 预期输出--给出信息M和N

使用因果图法的优点

  • (1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。
  • (2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。
  • (3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。

练习

有一个处理单价为1元5角的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”,“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。

原因 c1:投入1元5角硬币;c2:投入2元硬币;c3:按“可乐”按钮;c4:按“雪碧”按钮;c5:按“红茶”按钮;
中间状态 11:已投币12:已按钮
结果 e1: 退还 5 角硬币; e2: 送出“可乐”饮料; e3: 送出“雪碧”饮料; e4: 送出“红茶”饮料 ;

(1)分析原因及结果

image-20230410103952092

(2)绘制因果图

image-20230410104013501

(3)判定表

image-20230410105327510

(4)测试用例

用例编号 测试用例 预期输出
1 投入1元5角,按“可乐” 送出“可乐”饮料
2 投入1元5角,按“雪碧” 送出“雪碧”饮料
3 投入1元5角,按“红茶” 送出“红茶”饮料
4 投入2元,按“可乐” 找5角,送出“可乐”
5 投入2元,按“雪碧” 找5角,送出“雪碧”
6 投入2元,按“红茶” 找5角,送出“红茶”