软件测试教程(华为培训专用)
第3章 白盒测试 3.1控制流测试 一、基本概念 有向图 路径 完整路径 简单路径 基本路径 子路径 回路 无回路路径 连接 覆盖 二、控制流覆盖准则 语句覆盖准则 分支覆盖准则 谓词测试 原子谓词覆盖准则 分支-谓词覆盖准则 复合谓词覆盖准则 路径覆盖准则 部分覆盖准则间的关系 3.2数据流测试 一、基本概念 变量的定义性出现:若一个变量在程序中的某处出现使数据与该变量相绑定,则称该出现是定义性出现。 变量的引用性出现:若一个变量在程序中的某处出现使与该变量相绑定的数据被引用,则称该出现是引用性出现。 二、数据流覆盖准则 定义覆盖测试准则 引用覆盖测试准则 定义-引用覆盖测试准则 3.3程序插装 程序插装技术的研究涉及下列几个问题: (1)探测哪些信息? (2)程序的什么位置设置探测点? (3)需要多少探测点? 程序插装类型: 用于测试覆盖率和测试用例有效性度量的程序插装 用于断言检测的程序插装 3.4程序变异测试 程序变异测试技术的基本思想是: 对于给定的程序P,先假定程序中存在一些小错误,每假设一个错误, 程序P就变成P′,如果假设了n个错误:e1,e2,…,en,则对应有 n个不同的程序:P1,P2,…,Pn,这里Pi称为P的变异因子。 存在测试数据Ci,使得P和Pi的输出结果是不同的。因此,根据程序P 和每个变异的程序,可以求得P1,P2…,Pn的测试数据集C={C1,C2,…,Cn}。运行C,如果对每一个Ci,P都是正确的,而Pi都是 错误的,这说明P的正确性较高。如果对某个Ci,P是错误的,而Pi是 正确的,这说明P存在错误,而错误就是ei。 程序强变异测试 变异测试的缺点是它需要大量的计算机资源来完成测试充分性分析。 对于一个中等规模的软件,所需的存储空间也是巨大的,运行大量 变异因子也导致了时间上巨大的开销。 程序弱变异测试 弱变异和强变异有很多相似之处。其主要差别在于:弱变异强调的 是变动程序的组成部分,根据弱变异准则,只要事先确定导致C与C′ 产生不同值的测试数据组,则可将程序在此测试数据组上运行,而 并不实际产生其变异因子。 弱变异测试方法的主要优点是开销较小,效率较高。 3.5白盒测试工具 一、静态工具 静态测试工具类型: 1.代码审查 2.一致性检查 3.错误检查 4.接口分析 5.输入/输出规格说明分析检查 6.数据流分析 7.类型分析 8.单元分析 9.复杂度分析 静态工具应用实例 1. Logiscope的软件质量分析工具 Audit应用: Audit是审查程序代码质量的,它通过一个文本文件来定义质量模 型。文件中首先定义了若干个度量元,并为这些度量元设定了数 值范围,接着通过组合若干个度量元形成质量标准,最后又通过 组合质量标准,形成最后的质量因素。这个过程与软件质量模型 中由底层到高层、由细节到概括的结构恰好对应。 (1)在Logiscope studio中建立Audit项目 Logiscope studio环境 点击[File|New]菜单项, 并根据新建项目向导建立项目: 新建项目对话框 (2)查看检测结果 选择[ Browse | Quality | Factor Level ]菜单项,Logisciop会显示Audit 对所检测源程序质量水平的评价结果,评价结果包括系统的质量、类 的质量、函数的质量。 2. Logiscope的代码规范性检测工具 RuleChecker应用 : 使用RuleChecker来检查代码的规范性分为两个步骤:首先是建立 被检测代码的RuleChecker项目,然后是分析RuleChecker给出的代 码书写规范性检测结果,得出报告。 (2)查看检测结果 选择[ Browse | Rule | Rule Violations ]菜单命令,RuleChecker会在 树状视图中列出代码中所有违反编码规范的地方。 二、动态工具 静态测试工具类型: 1.功能确认与接口测试 测试包括对各模块功能、模块间的接口、局部数据结构、主要执 行路径、错误处理等方面进行的测试。 2.覆盖测试 覆盖分析对所涉及的程序结构元素进行度量,以确定测试执行的 充分性。 动态工具应用实例 Rational PureCoverage 应用: Rational PureCoverage是面向VC、VB或者Java开发的测 试覆盖程度检测工具,它可以自动检测测试的完整性和 那些无法达到的部分。作为一个质量控制工程,可以使 用PureCoverage在每一个测试阶段产生详尽的测试覆盖 程度报告 3.6软件缺陷分析 一、软件缺陷的种类