白盒测试技术:控制流与数据流覆盖

需积分: 31 0 下载量 64 浏览量 更新于2024-07-12 收藏 810KB PPT 举报
"新建项目向导-软件测试教程-宫云战_第3章" 本章节主要探讨了软件测试中的几种重要技术,包括白盒测试的控制流测试、数据流测试,程序插装以及程序变异测试。以下是这些知识点的详细说明: **1. 控制流测试** 控制流测试是白盒测试的一种,它关注程序的控制结构,尤其是流程图中的路径。以下是控制流测试的一些关键概念: - **有向图**:表示程序的控制流结构,其中节点代表程序的逻辑单元,边代表控制转移。 - **路径**:在有向图中,从一个节点到另一个节点的一系列边。 - **完整路径**:从程序开始到结束的路径。 - **简单路径**:不包含重复节点的路径。 - **基本路径**:控制流图中无法再分解为更短路径的简单路径。 - **子路径**:基本路径的一部分。 - **回路**:在有向图中形成循环的路径。 - **无回路路径**:不包含回路的路径。 - **连接**:确保程序中每个节点至少有一个进入和一个离开的路径。 - **覆盖**:通过一组测试用例实现对程序特定部分的执行,如语句覆盖、分支覆盖、路径覆盖等。 **2. 控制流覆盖准则** - **语句覆盖准则**:每个语句至少被执行一次。 - **分支覆盖准则**:每个条件分支至少被取真和取假执行一次。 - **谓词测试**:针对复杂的条件组合,如原子谓词、分支-谓词覆盖和复合谓词覆盖。 - **原子谓词覆盖准则**:每个独立的逻辑操作至少有一次为真和一次为假。 - **分支-谓词覆盖准则**:每个条件和每个嵌套条件的组合都被测试。 - **复合谓词覆盖准则**:考虑多个条件的组合,确保所有可能的组合都被覆盖。 - **路径覆盖准则**:确保每个基本路径都至少被执行一次。 **3. 数据流测试** 数据流测试关注程序中数据的流动,包括变量的定义和引用: - **定义性出现**:变量赋值的地方。 - **引用性出现**:变量被使用的(或其值被引用)地方。 - **定义覆盖测试准则**:确保每个变量的定义都被测试。 - **引用覆盖测试准则**:确保每个变量的引用都被测试。 - **定义-引用覆盖测试准则**:每个变量的定义和引用都被测试。 **4. 程序插装** 程序插装是在程序中插入额外代码以收集信息,例如覆盖率和测试用例的有效性度量,或进行断言检测。这涉及到确定插入点、所需探测点的数量等。 **5. 程序变异测试** - **程序变异测试**:通过创建程序的变异版本(假设存在的错误),并比较原程序和变异版本的输出差异来评估测试用例的有效性。 - **程序强变异测试**:要求每个变异版本的输出都与原始程序不同,以此来确认测试用例的全面性。但这种方法可能消耗大量计算资源。 - **程序弱变异测试**:与强变异类似,但只关注那些能导致输出差异的特定部分的变异,减少了计算资源的需求。 通过理解和应用这些测试技术,软件测试工程师可以更有效地发现和定位代码中的错误,提高软件的质量和可靠性。