如何在未使用的变量赋值上实现数据流覆盖?

How to achieve data flow coverage on unused variable assignments?

在数据流覆盖中,DU 路径用于隔离在整个代码部分定义和使用的变量。

在这样的功能场景下,如何编写覆盖变量x所有定义的测试用例?

因为它每次只赋一个新值,但没有在这个函数的任何地方使用:

Function x (int y, int z) {
   int x = 0;
   M = y + z;
   My_Array = [1,2,3];        
   if (0 < M < 10)
       x = My_Array[1];
   else if (10 < M < 20)
       x = My_Array[2];
   else
       x = 0;
}

在测试中使用数据流分析的方法是

  • 分析代码
  • 如果数据流分析在代码中发现任何问题,构建一个没有这些问题的理想数据流
  • 根据理想的数据流编写测试。测试将会通过,因为我们是根据代码的清理视图来设计它们的。
  • 更正代码中的任何问题以匹配理想的数据流。只要您在更正代码时不出错,测试仍然会通过。

DU-路径分析假定所有变量都已定义,然后使用。如果在代码结束之前未使用变量,则代码中存在错误,我们将按上述方式进行更正。 DUK-路径分析考虑了"kills"(变量被重新赋值或退出程序的地方),但它认为kill without a use 是一个需要以同样方式纠正的错误。

因此,在您的示例中,我们消除了所有未使用的赋值,发现没有剩余代码,没有可测试的内容,并且可以内联函数!