到了,但多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图。 1. 因果图介绍
1) 4种符号分别表示了规格说明中向4种因果关系。 2) 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态,右结点表示输出状态。 3) C1表示原因,通常置于图的左部;e1表示结果,通常在图的右部。C1和e1均
可取值0或1,0表示某状态不出现,1表示某状态出现。 12
2. 因果图涉及的概念 1) 关系
恒等:若c1是1,则e1也是1;否则e1为0。 非:若c1是1,则e1是0;否则e1是1。
或:若c1或c2或c3是1,则e1是1;否则e1为0。“或”可有任意个输入。 与:若c1和c2都是1,则e1为1;否则e1为0。“与”也可有任意个输入。 2) 约束
输入状态相互之间还可能存在某些依赖关系,称为约
束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
输入条件的约束有以下4类:
E约束:a和b中至多有一个可能为1,即a和b不能同时为1。 I约束:a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。 13
O约束;a和b必须有一个,且仅有1个为1。 R约束:a是1时,b必须是1,即不可能a是1时b是0。 输出条件约束类型
输出条件的约束只有M约束:若结果a是1,则结果b强制为0。
3. 采用因果图法设计测试用例的步骤:
1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结
果(即输出条件), 并给每个原因和结果赋予一个标识符。 系,根据这些关系,画出因果图。
2) 分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关3) 于语法或环境限制, 有
些原因与原因之间,原因与结果之间的组合情况不可能出4) 把因果图转换为判定表。
现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
5) 把判定表的每一列拿出来作为依据,设计测试用例。 实例
1. 某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数
字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。 解答:
1) 根据题意,原因和结果如下: 原因:
1——第一列字符是A; 2——第一列字符是B; 3——第二列字符是一数字。 结果: 21——修改文件; 14
22 ——给出信息L; 23——给出信息M。 2) 其对应的因果图如下:
11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。 3) 根据因果图建立判定表。
表中8种情况的左面两列情况中,原因①和原因②同时为1,这是不可能出现的。
故应排除这两种情况。表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。 15
6. 判定表驱动法 概念
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。 判定表驱动法 1. 判定表的优点
能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。 2. “阅读指南”判定表 觉得疲倦? 问题 感兴趣吗? 糊涂吗? 重读 建议 继续 跳下一章 休息 3. 判定表通常四个部分组成如下图所示。
√ 1 Y Y Y √ 2 Y Y N √ 3 Y N Y √ 4 Y N N 5 N Y Y √ √ √ 6 N Y N 7 N N Y √
8 N N N 16
1) 条件桩:列出了问题得所有条件。通常认为列出的条件的次
序无关紧要。
2) 动作桩:列出了问题规定可能采取的操作。这些操作的排列顺序 没有约束。
3) 条件项:列出针对它左列条件的取值。在所有可能情况下的 真假值。
4) 动作项:列出在条件项的各种取值情况下应该采取的动作。
4. 规则及规则合并
1) 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中
贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。
2) 化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着 极为相似的关系。 5. 规则及规则合并举例