📜  基于模块耦合片的测试用例优先级

📅  最后修改于: 2021-08-27 16:54:19             🧑  作者: Mango

基于模块耦合片的测试案例优先级排序是一种技术,该技术使用模块耦合值来识别软件中的关键模块,从而基于这些关键模块对测试套件中的测试用例进行优先级排序。

由于大多数测试用例的优先级排序技术都没有考虑到一个模块中的更改也可能在软件的其他模块中传播的事实。因此,与其根据诸如覆盖范围,风险,需求等简单标准对测试案例进行优先级排序,不如根据可以对测试案例进行优先级排序的方式来确定关键模块。以下是用于执行基于模块耦合片的测试用例优先级划分的算法:

基于模块耦合切片的测试用例优先级划分算法

  1. 首先,我们创建一个模块耦合矩阵C ,该矩阵表示程序中所有模块之间的耦合。构造一个m X m模块耦合矩阵,其中m是程序中模块的数量。使用模块耦合值填充矩阵,即C ij表示模块i与模块j之间的耦合。模块耦合矩阵本质上是对称的,即C ij = C ji,所有对角元素即C ii对于所有i都等于1。
  2. 通过使用每个模块的内聚类型和每个内聚类型的对应值来构造模块内聚矩阵S。这是一个1 X m的矩阵,其中m是程序中的模块数。
  3. 最后一步是创建一个模块依存关系矩阵D,它是一个m X m矩阵,其中m是程序中模块的数量。它使用以下方程式构造:
Dij = 0.15 * ( Si + Sj ) + 0.7 * Cij

where, Cij is not equal to 0
Also, 
Dij = 0 where Cij = 0
Dii = 1 for all i

如我们所见,模块耦合矩阵C和模块内聚矩阵S用于构建模块依赖矩阵D。在模块依赖矩阵中具有最高值的链接被赋予最高优先级,并且测试用例的优先级相同。与这些链接关联的模块。

解决的例子

问题:使用以下调用图和表,构造模块耦合,模块内聚性和模块依赖性矩阵:

通话图耦合值和内聚值耦合和内聚类型

解决方案

使用上述算法,我们可以如下计算矩阵:

1.模块耦合矩阵(C)

创建一个mx m矩阵,其中m是模块数。在这里,从给定的调用图中我们可以看到有八个模块,因此m = 8的值。因此,创建一个8 x 8矩阵,并根据与之间的耦合类型相关联的值开始填充它模块ij

Example 1:  

For the link 1-2 in call graph,
the coupling type = Data Coupling (Refer given table in the Question)
i = 1 and j = 2
C12  =  0.50 since value associated with Data Coupling Type is 0.50

Example 2:

For the link 3-7 in call graph,
the coupling type = Stamp Coupling (Refer given table in the Question)
i = 3 and j = 7
C37 = 0.60 since value associated with Stamp Coupling Type is 0.60

以类似的方式填充整个矩阵,完整的模块耦合矩阵如下所示:

模块耦合矩阵

2.模块内聚矩阵(S)

它是一个1 x m的矩阵,使用问题中提供的表格很容易创建。使用模块内聚类型和与内聚类型相关联的值来填充此矩阵。

Example 1: 

For the module 1 in call graph,
the cohesion type = Coincidental (Refer given table in the Question)
S1 = 0.80 since value associated with Coincidental Cohesion Type is 0.80

Example 2: 

For the module 4 in call graph,
the cohesion type = Temporal (Refer given table in the Question)
S4 = 0.20 since value associated with Temporal Cohesion Type is 0.20

如上所述填充整个内聚矩阵,完整的模块内聚矩阵将为:

模块内聚矩阵

3.模块依赖性矩阵(D)

它是使用模块耦合和模块内聚矩阵构建的m X m矩阵。使用算法中规定的公式。

Example 1:

For the link 1-2 in call graph,
D12 = 0.15 * ( S1 + S2 ) + 0.7 * C12
Since S1 = 0.80, S2 = 0.30 and C12 = 0.50
Therefore, 
D12 = 0.15 * ( 0.80 + 0.30 ) + 0.7 * 0.50
    = 0.515 = 0.52 (round off to 2 decimal places)

Example 2: 

For the link 4-6 in call graph,
D46 = 0.15 * ( S4 + S6 ) + 0.7 * C46
Since S4 = 0.20, S6 = 0.40 and C46 = 0.70
Therefore, 
D46 = 0.15 * ( 0.20 + 0.40 ) + 0.7 * 0.70
    = 0.58

填充整个矩阵后,模块相关性矩阵将为:

模块依赖矩阵

从上面显示的模块依赖性矩阵中,我们可以看到模块4、5、6和8在获得的依赖性矩阵中具有最高的值,因此,与其他模块相比,应该为这些模块的测试用例赋予更高的优先级。