📜  软件测试中的图形矩阵

📅  最后修改于: 2021-08-27 18:21:09             🧑  作者: Mango

图形矩阵是一种数据结构,可以帮助开发用于自动化路径测试的工具。图形矩阵的属性是开发测试工具的基础,因此图形矩阵对于理解软件测试的概念和理论非常有用。

什么是图矩阵?
图矩阵是一个正方形矩阵,其大小表示控制流图中的节点数。如果您不知道什么是控制流程图,请阅读本文。矩阵中的每一行和每一列都标识一个节点,矩阵中的条目表示这些节点之间的边或链接。通常,节点用数字表示,边缘用字母表示。

让我们举个例子。

让我们将此控制流图转换为图矩阵。由于图具有4个节点,因此图矩阵的尺寸为4 X4。矩阵条目将按以下方式填充:

  • (1,1)将填充’a’,因为从节点1到节点1存在一条边
  • (1,2)将填充’b’,因为存在从节点1到节点2的边缘。重要的是要注意,(2,1)将不填充,因为边缘是单向的而不是双向的
  • (1,3)将填充’c’,因为边缘c从节点1到节点3存在
  • (2,4)将填充’d’,因为从节点2到节点4存在边
  • (3,4)将填充’e’,因为从节点3到节点4存在边

形成的图形矩阵如下所示:

连接矩阵:
连接矩阵是用边权重定义的矩阵。以简单的形式,当控制流图的两个节点之间存在连接时,则边缘权重为1,否则为0。但是,通常不将0输入到矩阵单元中以降低复杂度。

例如,如果我们将上述控制流程图表示为连接矩阵,那么结果将是:

如我们所见,边缘的权重仅替换为1,之前保留为空的单元格保持原样,即表示0。

连接矩阵用于找到控制图的圈复杂度
尽管还有其他三种方法可以找到圈复杂度,但是这种方法也能很好地工作。

以下是计算圈复杂度的步骤:

  1. 计算每行中1的数量,并将其写入行的末尾
  2. 从每一行的此计数中减去1(如果该行的计数为0,则忽略该行)
  3. 添加先前计算的每一行的计数
  4. 将此总数加1
  5. 步骤4中的最终总和是控制流程图的圈复杂度

让我们将这些步骤应用于上图以计算圈复杂度。

我们可以使用其他方法来验证此值是否具有圈复杂度:

方法1:

Cyclomatic complexity
= e - n + 2 * P 

从这里开始

e = 5
n = 4
and, P = 1 

因此,圈复杂度

= 5 - 4 + 2 * 1 
= 3 

方法2:

Cyclomatic complexity 
= d + P 

这里,

d = 2 
and, P = 1 

因此,圈复杂度

= 2 + 1 
= 3 

方法3:

Cyclomatic complexity
= number of regions in the graph 

  • 区域1:以边b,c,d和e为边界
  • 区域2:以边a为边界(循环中)
  • 区域3:图表外

因此,圈复杂度

= 1 + 1 + 1 
= 3 

可以看出,所有其他方法都给出相同的结果。方法1、2和3已在此处详细讨论。