软件测试 - 因果图
开发好的软件会经过不同的测试阶段来验证它是否满足所有需求和条件。在黑盒方法中,会验证从输入数据集生成的输出。因果图是属于黑盒测试的一种技术。它是一种使用图表来描述多个输入组合状态的方法。
什么是因果图?
因果图是一种有助于生成高产出测试用例的方法。这种方法是为了克服等价划分和边界值分析的漏洞而提出的,在这些方法中,测试所有输入条件的组合是不可行的。
因此,每当我们需要验证一些由输入条件组合组成的关键场景时,就使用因果图。得到的图被转换为决策表,该表又可用于设计测试用例。因果图方法的主要好处是它有助于发现是否存在不完整或不明确的需求。
从因果图创建测试用例
从因果图创建测试用例的步骤如下:
步骤 1 - 从需求中检测原因和结果,然后为它们分配不同的编号。原因是独特的输入条件,由于这些条件,系统会发生某种变化。结果是系统中由输入条件引起的输出条件或状态变化。
步骤 2 - 创建一个布尔图,连接所有原因和结果。这被称为因果图,它描述了为哪些原因产生了不同的结果。
步骤 3 - 指出因果图上的约束,描述实际上不可能的所有原因和/或结果组合。所有可能的约束如下:
互斥约束
这些约束存在于两个原因 C1 和 C2 之间,使得 C1 或 C2 之一的值可以为 1,两者不能同时为 1。
包含约束
这些约束存在于原因 C1、C2 和 C3 之间,使得它们中至少一个始终等于 1,因此它们不能同时为 1。
唯一约束
这些约束存在于原因 C1 和 C2 之间,使得 C1 和 C2 中只有一个为 1。
需要约束
这些约束存在于原因 C1 和 C2 之间,如果 C1 等于 1,则 C2 也应等于 1。C1 的值为 1 而 C2 的值为 0 是不可能的。
掩码约束
这些约束存在于结果 E1 和 E2 之间,如果 E1 等于 1,则 E2 应为 0。
通过链接因果图中的状态条件,将因果图转换为有限项决策表。在决策表中,每一列都转换为一个测试用例。
因果图中使用的符号
因果图中使用的符号如下:
恒等函数
它表示如果条件 C1 和事件 E1 通过恒等函数相关联,则表示如果 C1 为真或等于 1,则 E1 也等于 1,否则 E1 等于 0。
非函数
它表示如果条件 C1 和事件 E1 通过非函数相关联,则表示如果 C1 为真或等于 1,则 E1 等于 0,否则 E1 等于 1。
或函数
用符号 V 表示。它可以用来将 'n' 个条件关联到一个结果。它表示如果条件 C1 或 C2 或 C3 为真或等于 1,则事件 E1 等于 1,否则 E1 等于 0。
与函数
用符号 / 表示。它可以用来将 'n' 个条件关联到一个结果。它表示如果条件 C1 和 C2 都为真或等于 1,则事件 E1 等于 1,否则 E1 等于 0。
示例
让我们举一个问题陈述的例子,该陈述说第一列应具有值 X 或 Y。第二列应仅包含数字。如果这两个条件都满足,则应修改文件。如果第一列不包含值 X 或 Y,则生成消息 M1。如果第二列输入的不是数字,则生成消息 M2。
要使用控制流图解决此问题,我们首先要总结不同的条件和事件。
- 条件 1 用 C1 表示,指第一列包含值 X。
- 条件2,记作C2,表示第1列的值为Y。
- 条件3,记作C3,表示第2列的值为一个数字。
- 效应1,记作E1,表示修改一个文件。效应E1应该在条件→(C1∨C2)∧C3 成立时发生。
- 效应2,记作E2,表示消息M1。
- 效应3,记作E3,表示消息M2。
上述问题陈述的因果图如下:
结论
本教程对软件因果图进行了全面讲解。我们首先介绍了什么是因果图、如何从因果图创建测试用例、因果图中使用的符号以及因果图示例。这使您掌握了软件因果图的深入知识。建议您多加练习所学内容,并探索与软件测试相关的其他知识,以加深理解并拓宽视野。