求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
目录
软件测试
1.教程
2. 软件测试原则
3. 软件开发生命周期(SDLC)
4. 软件测试命周期(STLC)
5. 软件测试的类型
6. 测试成熟度模型
7. 测试级别
SDLC 模型
1.瀑布模型
2.螺旋模型
3.混合模型
4.原型模型
5. V模型/V和V模型/验证和验证模型
测试的类型
1.手动测试
2.自动化测试
手册的类型
1.白盒测试
2.黑盒测试
3.灰盒测试
白盒技术
1.数据流测试
2.控制流测试
3.分支覆盖测试
4.语句覆盖率测试
5.决策覆盖率测试
黑盒技术
1.决策表
2.全对测试
3.黑盒测试中的因果图
4.状态转换技术
5.用例技术
黑盒的类型
1.功能测试
2.非功能性测试
功能类型
1.单元测试
2.集成测试
3.系统测试
非功能性的类型
1.性能测试
2.易用性测试
3.兼容性测试
测试用例开发
1.测试文档
2.测试场景
3.测试用例
测试技术
1.错误猜测技术
2.等效分区技术
3.边界值分析
测试管理
1.测试计划
2.测试用例审查过程
3.需求可追溯性矩阵
缺陷跟踪
1.软件测试中的错误
2.Bug生命周期
3.测试中bug的严重性和优先级
4.测试环境
5.缺陷管理过程
其他类型的测试
1.回归测试
2.冒烟测试
3.健全性测试
4.静态测试
5.动态测试
6.负载测试
7.压力测试
8.恢复测试
9.探索性测试
10.可视化测试
11.验收测试
12.Alpha 测试
13.Beta 测试
14.数据库测试
15.主机测试
16.Adhoc测试
17.全球化测试
18.变异测试
19.安全测试
20.可访问性测试
21.结构测试
22.批量测试
23.可伸缩性测试
24.稳定性测试
25.峰值测试
26.负面测试
27.正面测试
28.耐久性测试
29.可靠性测试
30.Monkey测试
31.敏捷测试
32.组件测试
33.GUI测试
34.测试策略
软件测试工具
1.软件测试工具
2.测试管理工具
3.缺陷/Bug跟踪工具
4.自动化测试工具
5.性能测试工具
6.跨浏览器测试工具
7.集成测试工具
8.单元测试工具
9.移动测试工具
10.GUI测试工具
11.安全测试工具
12.渗透测试工具
差异
1.自动化测试与手动测试
2.负载测试与压力测试
3.冒烟测试和健全性测试之间的差异
4.系统测试和验收测试之间的差异
5.质量保证与质量控制
6.静态测试与动态测试
7.验证和确认测试
8.Alpha 测试和 Beta 测试
9.黑盒测试与白盒测试与灰盒测试
10.全球化测试和本地化测试之间的区别
11.测试用例与测试场景
12.测试计划 VS.测试策略
13.边界值分析和等价划分之间的差异
14.SDLC VS.STLC
15.Bug, Defect, Error, Fault 和 Failure之间的区别
16.测试和调试之间的区别
17.前端测试 VS.后端测试
18.HLD和LLD的区别
19.BRS vs SRS
20.正面测试和负面测试之间的区别
21.自上而下和自下而上的集成测试之间的区别
22.用例和测试用例之间的区别
23.Monkey 测试 VS Gorilla 测试
24.Stubs和Drivers之间的区别
25.组件测试和单元测试之间的区别
26.软件测试和嵌入式测试之间的区别
27.GUI 测试和可用性测试之间的差异
28.SDET和Tester的区别
29.桌面应用程序测试、客户端-服务器应用程序测试和 Web 应用程序测试之间的区别
30.主动测试
31.什么是API
32.自动化测试
 
 
目录
数据流测试
来源:Javatpoint     翻译:Alice (火龙果软件)
1680 次浏览
4次  

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

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

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

  • 如果在未初始化的情况下使用变量。
  • 如果初始化的变量未至少使用一次。

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

白盒测试中的数据流测试 链接

在此代码中,我们总共有 8 个语句,我们将选择一条涵盖所有 8 个语句的路径。正如代码中很明显的那样,我们不能在单个路径中涵盖所有语句,因为如果语句 2 为真,则不覆盖语句 4、5、6、7,如果语句 4 为真,则不覆盖语句 2 和 3。

因此,我们采取两条途径来涵盖所有陈述。

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

输出 = 2

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

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

2. 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)。由于 false 条件,它不会出现在语句 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,所以条件为 false,它将来到 else 部分表示语句 7(a=x+1,其中 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)。

如何在数据流测试中建立关联<链接>

白盒测试中的数据流测试 链接

  • (1, (2, t), x), (1, (2, f), x)- 此关联与语句 1(读作 x;)和语句 2 (If(x>0)),其中 x 在第 1 行定义,并在第 2 行使用,因此 x 是变量。

    语句 2 是合乎逻辑的,它可以是真或假,这就是为什么以两种方式定义关联的原因;一个是(1,(2,t),x)表示真,另一个是(1,(2,f),x)表示假。

  • (1, 3, x)- 此关联与语句 1(读作 x;)和语句 3 (a= x+1),其中 x 在语句 1 中定义并在语句 3 中使用。这是一种计算用途。
  • (1, (4, t), x), ( 1, (4, f), x)- 此关联与语句 1(读作 x;)和语句 4 (If(x<=0)),其中 x 在第 1 行定义,在第 4 行使用,因此 x 是变量。语句 4 是合乎逻辑的,它可以是真或假,这就是为什么以两种方式定义关联的原因,一种是 (1, (4, t), x) 表示真,另一种是 (1, (4, f), x) 表示假。
  • (1, (5, t), x), ( 1, (5, f), x)- 此关联与语句 1(读作 x;)和语句 5(if (x<1)),其中 x 在第 1 行定义,在第 5 行使用,因此 x 是变量。

    语句 5 是合乎逻辑的,它可以是真的或假的,这就是为什么以两种方式定义关联的原因;一个是(1,(5,t),x)表示真,另一个是(1,(5,f),x)表示假。

  • (1, 6, x)- 此关联与语句 1(读作 x;)和语句 6 (x=x+1)。x 在语句 1 中定义,在语句 6 中使用。这是一种计算用途。
  • (1, 7, x)- 这种关联与语句 1(读取 x)和语句 7 (a=x+1) 相关联。x 在语句 1 中定义,当语句 5 为 false 时在语句 7 中使用。这是一种计算用途。
  • (6, (5, f) x ), (6, (5, t) x)- 此关联与语句 6 (x=x+1;) 一起建立和语句 5 如果 (x<1),因为 x 在语句 6 中定义并在语句 5 中使用。语句 5 是合乎逻辑的,它可以是真或假,这就是为什么以两种方式定义关联的原因,一种是 (6, (5, f) x) 表示真,另一种是 (6, (5, t) x) 表示假。这是预测的用途。
  • (6, 6, x)- 此关联与语句 6 建立,语句 6 使用变量 x 的值,然后定义 x 的新值。 x=x+1 x= (-1+1) 语句 6 使用变量 x 的值为 ?1,然后定义新值 x [

    x= (-1+1)

    = 0],即 0。

  • (3, 8, a)- 此关联与语句 3(a= x+1) 和语句 8 建立,其中变量 a 在语句 3 中定义并在语句 8 中使用。
  • (7, 8, a)- 此关联与语句 7(a=x+1) 和语句 8 建立,其中变量 a 在语句 7 中定义并在语句 8 中使用。

定义,c-use,p-use,c-use 一些p-use覆盖率,p-使用一些c-use覆盖率在数据流测试中<链接>

下一个任务是将所有关联分组到定义、c 使用、p 使用、c-use 一些 p 使用覆盖率、p 使用一些 c 使用覆盖率类别中。

请参阅下面的代码:

白盒测试中的数据流测试 链接

因此,这些是包含定义,谓词使用(p-use),计算使用(c-use)的所有关联

(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), (7, 8, a)

定义

变量的定义是当值绑定到变量时变量的出现。在上面的代码中,值在第一个语句中绑定,然后开始流动。

  • If(x>0) 是语句 2,其中 x 的值与其绑定。

    语句 2 的关联是 (1, (2, f), x), (1, (2, t.)

  • a= x+1 是语句 3,以 x 的值为界 语句 3 的关联是 (1, 3, x

所有定义覆盖范围

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

谓语用法(p-用法)

如果变量的值用于确定执行路径,则被视为谓词使用 (p-use)。在控制流语句中有两个

语句 4 if (x<=0) 是谓词使用,因为它可以是谓词 true 或 false。如果为真,则如果 (x<1),6x=x+1;否则将执行路径,否则将执行路径。

计算使用(c-use)

如果变量的值用于计算输出值或定义另一个变量。

语句 3 a= x+1 (1, 3, x) 语句 7 a=x+1 (1, 7, x)

语句 8 打印 a (3, 8, a), ( 7 , 8, a)。

这些是 计算用途 ,因为 x 的值用于计算,a 的值用于输出。

所有c-use覆盖

(1, 3, x), (1, 6, x), (1, 7, x), (6, 6, x), (6, 7, x), (3, 8, a), (7, 8, a).

所有 c 使用一些 p 用途覆盖率

(1, 3, x), (1, 6, x), (1, 7, x), (6, 6, x), (6, 7, x), (3, 8, a), (7, 8, a).

所有 p 使用一些 c 用途覆盖

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

收集这些组后,(通过检查每个点是否至少使用一次变量)测试人员可以看到所有语句和变量都被使用。未使用但存在于代码中的语句和变量将从代码中删除。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



1680 次浏览
4次