如何在未使用的变量赋值上实现数据流覆盖?
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 是一个需要以同样方式纠正的错误。
因此,在您的示例中,我们消除了所有未使用的赋值,发现没有剩余代码,没有可测试的内容,并且可以内联函数!
在数据流覆盖中,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 是一个需要以同样方式纠正的错误。
因此,在您的示例中,我们消除了所有未使用的赋值,发现没有剩余代码,没有可测试的内容,并且可以内联函数!