文档详情

第05章、白盒测试技术-基本路径测试(理论课).ppt

发布:2017-05-19约4.4千字共29页下载文档
文本预览下载声明
/ 白盒测试与OO测试 第五章、白盒测试技术-基本路径测试 上一章内容回顾 逻辑驱动测试 语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖 循环测试 本章学习目标 基本路径测试 画出程序的控制流图 程序环路复杂性 导出测试用例 执行测试用例 内容进度 控制流图 程序环路复杂性 导出测试用例 基本路径测试 前提条件 步骤一 控制流图符号 例子 绘制流程图 绘制控制流图 复合条件流图表示 内容进度 控制流图 程序环路复杂性 导出测试用例 步骤二 计算圈复杂度方法 计算圈复杂度 内容进度 控制流图 程序环路复杂性 导出测试用例 导出测试用例 导出基本路径集 根据上面的计算方法,可得出四个独立的路径: 路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-4-14 路径4:4-6-8-11-13-4-14 测试用例 执行测试用例 执行测试用例 驱动模块/主程序 工具实现策略 工具化:图形矩阵(graph matrix) 标记 小结 基本路径测试 画出控制流图 计算圈复杂度 设计测试用例 执行测试用例 辅助工具方法 课堂练习 把上一章的例子,把科学记数法转换为实数 代码参照上一章的正文。 本章内容总结 基本路径测试 画出程序的控制流图 程序环路复杂性 导出测试用例 执行测试用例 先讲一下控制流图的符号 在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图。流图使用下面的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流图符号。 图中O称为控制流图的一个结点,它表示一个或多个无分支的程序语句。 先分析该模块。 该模块是一个函数,有了整型参数。控制结构是有一个while循环,循环中有一个if嵌套语句。 为了讲解方便,我们把该函数体中的语句进行标上行号。 在上面的流程图中,我们假设用菱形表示的判断被没有复合条件。 程序设计中遇到复合条件时,生成的流图变得更为复杂。当条件语句中用到一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)时,就出现了复合条件。下图为语句if a or b中的每一个a和b创建了一个独立的结点,包含条件的结点被称为判定结点,从每一个判定结点发出两条或多条边。 为了绘制控制流图,最好先画出程序的流程图,再根据流程图映射成控制流图。 在上面的流程图中控制结构是使用行号来标记的,最后的14相当于出口。 圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。 通过控制流图,导出基本路径集。 从程序的环路复杂性可以导出程序基本路径中的独立路径条数,这是确保程序中每个可执行语句至少执行依次所必需的测试用例数目的上界。 基本路径集:是从程序环路复杂性导出程序的独立路径的条数。 独立路径是指包括一组以前没有处理的语句或条件的一条路径。强调:独立路径必须包含一条在定义该路径之前不曾用到的边。 在设计独立路径时的原则是: 确保程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。相当于语句覆盖和条件覆盖的准则。在设计路径时先以最简单的一个路径开始,每次引入一个新的边,同时只引入一个新的分支。 为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例。 因为被测试的模块是一个函数。要加载测试用例,必须编写一个驱动模块,即一个主程序来调用该函数,同时加载测试用例。为了采集结果,可以有两种方法,第一种是修改被测试函数,使其返回验证的预期结果;另一种是添加一个全局变量,在程序中通过把验证的值赋值给该全局变量。因为第一种方式修改程序对程序影响比较大,我们采用第二种方式。 本驱动程序列出了加载一个测试用例的情况,其它的测试用例情况同。 在这里演示提供的例子,在例子中主程序是同时加载了四个测试用例,可以同时加载运行。 在演示时可以修改其中的一个期望值不正确,运行看测试结果。 本例子中,默认把最后一个测试用例的期望值修改了,正确为20,修改成了21,运行时报告失败,检查主程序可以查到判断条件中预期结果写错了。在设计测试用例时,也可能就设计错误了,如果不是设计错误,则可能算法不正确。其实基本路径集测试主要还是保证测试覆盖程序中的所有语句。 导出控制流图和决定基本测试路径的过程均可以工具化,为了开发辅助基本路径测试的软件工具,称为图形矩阵(graph matrix)的数据结构很有用。 利用图形矩阵可以实现自动地确定一个基本路径集。一个图形矩阵是一个方阵,其行/列数控制流图中的结点数,每行和每列依次对应到一个被标识的结点,矩阵元素对应到结点间的连接(即边)。在图中,控制流图的每一个
显示全部
相似文档