数据流测试
数据流测试是一种结构测试。它是一种根据程序中变量定义的位置和使用情况来查找程序的测试路径的方法。它与数据流图无关。
它涉及:
- 变量接收值的语句,
- 使用或引用这些值的语句。
为了说明数据流测试的方法,假设程序中的每个语句都分配了一个唯一的语句编号。对于报表编号 S-
DEF(S) = {X | statement S contains the definition of X}
USE(S) = {X | statement S contains the use of X}
如果语句是循环或 if 条件,则其 DEF 集为空,而 USE 集基于语句 s 的条件。
数据流测试使用控制流图来查找可能中断程序流程的情况。
在值和变量之间的关联时检测到数据流中的引用或定义异常。这些异常是:
- 变量已定义但未使用或引用,
- 一个变量被使用但从未定义,
- 变量在使用前被定义两次
数据流测试的优势:
数据流测试用于发现以下问题-
- 要查找已使用但从未定义的变量,
- 要查找已定义但从未使用过的变量,
- 要查找在使用前多次定义的变量,
- 在使用变量之前释放它。
数据流测试的缺点
- 耗时且昂贵的过程
- 需要编程语言知识
例子:
1. read x, y;
2. if(x>y)
3. a = x+1
else
4. a = y-1
5. print a;
上例的控制流程图:
定义/使用上述示例的变量:
Variable | Defined at node | Used at node |
---|---|---|
x | 1 | 2, 3 |
y | 1 | 2, 4 |
a | 3, 4 | 5 |