(2)循环覆盖 要覆盖含有循环结构的所有路径是不可能的,可通过限制循 环次数来测试。给出以下设计原则 单循环 设n为允许执行循环的最大次数,作以下测试 ①跳过循环; ②仅循环一次 ③循环m次,m<n ④分别循环n-1次,n次,n+1次 嵌套循环 ①置外循环处于最小循环计数值,对内层进行单循环测试; 由里向外,回退到上一层循环测试 并置循环 若完全独立,采用单循环策略;若第一个循环的计数器作 为第二个循环的初值,用嵌套循环策略。 西安交通大学刘海
西安交通大学 刘海岩 16 (2)循环覆盖 要覆盖含有循环结构的所有路径是不可能的,可通过限制循 环次数来测试。给出以下设计原则: • 单循环 设n为允许执行循环的最大次数,作以下测试: ① 跳过循环; ② 仅循环一次; ③ 循环m次,m<n; ④ 分别循环n-1次,n次,n+1次。 • 嵌套循环 ① 置外循环处于最小循环计数值,对内层进行单循环测试; ② 由里向外,回退到上一层循环测试。 • 并置循环 若完全独立,采用单循环策略;若第一个循环的计数器作 为第二个循环的初值,用嵌套循环策略
(3)基本路径测试 主要思想 该方法把要覆盖的路径数压缩到一定限度内,程序中 的循环体最多只执行一次 ·它是在程序控制流图的基础上,分析控制结构的环路 复杂性,导出基本可执行路径集,由此设计一组测试 用例,保证对程序中的每一个可执行语句至少执行 次 西安交通大学刘海
西安交通大学 刘海岩 17 (3)基本路径测试 主要思想: • 该方法把要覆盖的路径数压缩到一定限度内,程序中 的循环体最多只执行一次。 • 它是在程序控制流图的基础上,分析控制结构的环路 复杂性,导出基本可执行路径集,由此设计一组测试 用例,保证对程序中的每一个可执行语句至少执行一 次
基本路径测试的步骤为: ①以详细设计或源程序为基础导出程序的控制流图,简称 为流图( flow graph),它是反映控制流程的有向图。其中 小圆圈○为控制流图的一个结点,表示一个或多个无分支 的PD语句或源程序语句,表示控制流的箭头称为边或路径 左图中显示了程序流 程图及对应的流图 西安交通大学刘海
西安交通大学 刘海岩 18 基本路径测试的步骤为: ① 以详细设计或源程序为基础导出程序的控制流图,简称 为流图(flow graph),它是反映控制流程的有向图。其中 小圆圈○为控制流图的一个结点,表示一个或多个无分支 的PDL语句或源程序语句,表示控制流的箭头称为边或路径。 左图中显示了程序流 程图及对应的流图: 1 2,3 7 6 8 9 10 11 4,5 1 2 3 4 5 6 7 8 . . 11 9
转换时注意: 条边必须终止于一个结点,在选择结构中分支汇聚 处即使无语句也应有一个汇聚结点。 如果判断中的条件 判断结点 表达式是复合条件, 判断结点 则需改为一系列只有Qb 单个条件的嵌套判断a男 如右图所示: (al (b) 西安交通大学刘海
西安交通大学 刘海岩 19 转换时注意: • 一条边必须终止于一个结点,在选择结构中分支汇聚 处即使无语句也应有一个汇聚结点。 • 如果判断中的条件 表达式是复合条件, 则需改为一系列只有 单个条件的嵌套判断。 如右图所示:
②计算流图G的环路复杂性V(G)。 Mccabe定义: V(G)=封闭区域数+1 其中封闭区域为边和结点圈定的区域,1为图形外的区 域。 也可按另一种方法计算:V(G)=判定结点数+1 例如,18页的流图V(G)=4。 ③确定只包含独立路径的基本路径集 条独立路径是至少包含一条在其它独立路径中从未 有过的边的路径,即至少包含一条新边。 程序的环路复杂性给出了程序基本路径集中的独立路 径条数,这是确保程序中每个可执行语句至少执行一次所 必需的测试用例数目的上界。 基本路径集不唯一。对于给定的流图,可以得到不同 的基本路径。 西安交通大学刘海
西安交通大学 刘海岩 20 ② 计算流图G的环路复杂性V(G)。Mccabe定义: V(G)=封闭区域数+1 其中封闭区域为边和结点圈定的区域,1为图形外的区 域。 也可按另一种方法计算:V(G)=判定结点数+1 例如,18页的流图V(G)=4。 ③ 确定只包含独立路径的基本路径集。 一条独立路径是至少包含一条在其它独立路径中从未 有过的边的路径,即至少包含一条新边。 程序的环路复杂性给出了程序基本路径集中的独立路 径条数,这是确保程序中每个可执行语句至少执行一次所 必需的测试用例数目的上界。 基本路径集不唯一。对于给定的流图,可以得到不同 的基本路径