白盒测试技术:控制流与数据流覆盖
需积分: 31 163 浏览量
更新于2024-07-12
收藏 810KB PPT 举报
"新建项目向导-软件测试教程-宫云战_第3章"
本章节主要探讨了软件测试中的几种重要技术,包括白盒测试的控制流测试、数据流测试,程序插装以及程序变异测试。以下是这些知识点的详细说明:
**1. 控制流测试**
控制流测试是白盒测试的一种,它关注程序的控制结构,尤其是流程图中的路径。以下是控制流测试的一些关键概念:
- **有向图**:表示程序的控制流结构,其中节点代表程序的逻辑单元,边代表控制转移。
- **路径**:在有向图中,从一个节点到另一个节点的一系列边。
- **完整路径**:从程序开始到结束的路径。
- **简单路径**:不包含重复节点的路径。
- **基本路径**:控制流图中无法再分解为更短路径的简单路径。
- **子路径**:基本路径的一部分。
- **回路**:在有向图中形成循环的路径。
- **无回路路径**:不包含回路的路径。
- **连接**:确保程序中每个节点至少有一个进入和一个离开的路径。
- **覆盖**:通过一组测试用例实现对程序特定部分的执行,如语句覆盖、分支覆盖、路径覆盖等。
**2. 控制流覆盖准则**
- **语句覆盖准则**:每个语句至少被执行一次。
- **分支覆盖准则**:每个条件分支至少被取真和取假执行一次。
- **谓词测试**:针对复杂的条件组合,如原子谓词、分支-谓词覆盖和复合谓词覆盖。
- **原子谓词覆盖准则**:每个独立的逻辑操作至少有一次为真和一次为假。
- **分支-谓词覆盖准则**:每个条件和每个嵌套条件的组合都被测试。
- **复合谓词覆盖准则**:考虑多个条件的组合,确保所有可能的组合都被覆盖。
- **路径覆盖准则**:确保每个基本路径都至少被执行一次。
**3. 数据流测试**
数据流测试关注程序中数据的流动,包括变量的定义和引用:
- **定义性出现**:变量赋值的地方。
- **引用性出现**:变量被使用的(或其值被引用)地方。
- **定义覆盖测试准则**:确保每个变量的定义都被测试。
- **引用覆盖测试准则**:确保每个变量的引用都被测试。
- **定义-引用覆盖测试准则**:每个变量的定义和引用都被测试。
**4. 程序插装**
程序插装是在程序中插入额外代码以收集信息,例如覆盖率和测试用例的有效性度量,或进行断言检测。这涉及到确定插入点、所需探测点的数量等。
**5. 程序变异测试**
- **程序变异测试**:通过创建程序的变异版本(假设存在的错误),并比较原程序和变异版本的输出差异来评估测试用例的有效性。
- **程序强变异测试**:要求每个变异版本的输出都与原始程序不同,以此来确认测试用例的全面性。但这种方法可能消耗大量计算资源。
- **程序弱变异测试**:与强变异类似,但只关注那些能导致输出差异的特定部分的变异,减少了计算资源的需求。
通过理解和应用这些测试技术,软件测试工程师可以更有效地发现和定位代码中的错误,提高软件的质量和可靠性。
691 浏览量
1352 浏览量
939 浏览量
234 浏览量
231 浏览量
886 浏览量
299 浏览量
琳琅破碎
- 粉丝: 21
- 资源: 2万+
最新资源
- 格式转换工具,视频,音频类互相无损转换
- 雅马哈本
- 基于Jetty+Servlet+Jsp+MySQL+MyBatis技术实现的简单博客系统
- plant-help:我需要跟踪何时在家浇水
- EXP1_ngc.rar
- docker-angular:带有节点14的Docker上的Angular 11.2.9
- biketracking:BikeTracking是一个Android应用程序,用于跟踪您的自行车活动
- 基于PCA算法的图像融合matlab源码
- MiniGameOne:Minigame Apple Road Unity 3D
- 汉王唐人笔TR-TP618手写板驱动程序 官方版
- diospratama.github.io
- 维控电子HMI互锁的应用例子.rar
- EDU:一个包含我公开的项目,任务和其他作品的回购
- 用u-ns检查
- 测量目标之间的距离
- 黑苹果MAC变频查看,Hackintosh查看CPU频率的软件---Intel Power Gadget v3.0.3