codecamp

软件测试 数据流测试

数据流测试用于分析程序中的数据流。它是收集有关变量如何在程序中流动数据的过程。它试图获得过程中每个特定点的特定信息。

数据流测试是一组测试策略,用于检查程序的控制流程,以便根据事件的顺序探索变量的顺序。它主要关注分配给变量的值和通过集中在两个点上使用这些值的点,可以测试数据流。

数据流测试使用控制流图来检测可能中断数据流的不合逻辑的事物。由于以下原因,在值和变量之间的关联时检测到数据流中的异常:

  • 如果使用变量而没有初始化。
  • 如果初始化变量至少未使用一次。

让我们通过一个例子来理解:

在这段代码中,总共有8个语句,将选择一个涵盖所有8个语句的路径。正如代码中显而易见的那样,无法覆盖单个路径中的所有语句,因为如果语句2为真,则语句4,5,6,7未被覆盖,如果语句4为真,则语句2和3不包括在内。

因此,采取两种方式来涵盖所有陈述。

x= 1
Path - 1, 2, 3, 8
Shell

输出结果为:

2

当首先将x的值设置为1时,它会在步骤1中读取并分配x的值(在路径中取1)然后来到语句2(x> 0(在路径中取2))它是真, 它来自语句3(a = x + 1(在路径中取3))最后它出现在语句8上以打印x的值(输出为2)。

对于第二条路径,取x的值为1 -

Set x= -1
Path = 1, 2, 4, 5, 6, 5, 6, 5, 7, 8

输出结果为:

2

当将x的值设置为1,然后是第一个时,它会在步骤1中读取并分配x的值(在路径中取1)然后来到第2步,它是假的,因为x不大于0 (x> 0,x = -1)。由于错误的条件,它不会出现在语句3上并且直接跳转到语句4(在路径中取4)并且4为真(x <= 0并且它们的x小于0)然后出现在语句5(x < 1(在路径中取5))这也是真的所以它将出现在语句6(x = x + 1(在路径中取6))并且这里x增加1。

所以,

x=-1+1 
x=0

x的值变为0。现在它转到语句5(x <1(在路径中取5))值为0且0小于1所以,它是真的。声明6(x = x + 1(在路径中取6))。

x=x+1 
x= 0+1 
x=1

将x变为1并再次转到语句5(x <1(在路径中取5))现在1不小于1因此,条件为假,它将来到其他部分时语句7(a = x +,其中x的值为1)并将值赋给a(a = 2)。最后,它出现在语句8上并打印出值(输出为2)。

为代码建立关联。在关联中,我们列出了所有定义及其所有用途。

(1, (2, f), x), (1, (2, t), x), (1, 3, x), (1, (4, t), x), (1, (4, f), x), (1, (5, t), x), (1, (5, f), x), (1, 6, x), (1, 7, x), (6,(5, f)x), (6,(5,t)x), (6, 6, x), (3, 8, a), (7, 8, a)





软件测试 白盒测试
软件测试 控制流程测试
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }