1、软件工程软件工程 Software EngineeringSoftware Engineering 成都信息工程学院成都信息工程学院 计算机系计算机系 软件工程软件工程 Software Engineering1软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院基本路径测试方法把覆盖的路径数压缩到一定限基本路径测试方法把覆盖的路径数压缩到一定限度内,使得度内,使得程序中的循环体最多只执行一次程序中的循环体最多只执行一次。它是在程序控制流程图的基础上,它是在程序控制流程图的基础上,分析控制构造分析控制构造的环路复杂性的环路复
2、杂性,导出基本可执行路径集合导出基本可执行路径集合,设计设计测试用例的测试用例的方法。设计出的测试用例要保证在测方法。设计出的测试用例要保证在测试中,程序的试中,程序的每一个可执行语句至少要执行一次每一个可执行语句至少要执行一次。基本路径测试基本路径测试白盒测试用例设计之二白盒测试用例设计之二基本路径测试基本路径测试步骤步骤:1.绘制程序的控制流图绘制程序的控制流图 2.由环路复杂性得到基本路径集由环路复杂性得到基本路径集 3.导出测试用例导出测试用例2软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院 1.绘制程序的控制
3、流程图绘制程序的控制流程图(复习)(复习)基本路径测试基本路径测试(续续1)213687549101112,34,5111098763软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院2.程序环路复杂性、基本路径集程序环路复杂性、基本路径集程序的环路复杂性给出了程序的环路复杂性给出了程序基本路径程序基本路径集中的独立路径条数集中的独立路径条数。从控制流程图来看,从控制流程图来看,一条独立路径一条独立路径是是至至少包含有一条在其它独立路径中从未有少包含有一条在其它独立路径中从未有过的边的路径过的边的路径。基本路径测试基本路径
4、测试(续续2)4软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院环路复杂性度量V(G)(复习复习)环路复杂性度量环路复杂性度量V(G)V(G)的意义的意义:等等于程序中独立路径的条数。于程序中独立路径的条数。三种计算方法:三种计算方法:1.1.V(G)V(G)控制流程图中区域的个数控制流程图中区域的个数2.2.V(G)V(G)m-n+2p m-n+2p(m m和和n n分别是控分别是控制流程图中的边数和节点数制流程图中的边数和节点数,p,p为为强连通分量)强连通分量)3.3.V(G)V(G)P+1P+1(P P是控制流程
5、图中的是控制流程图中的谓词节点数)谓词节点数)谓词结点:代表条件判断的结点基本路径测试基本路径测试(续续3)12,34,5111098765软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院例如,在图示的控制流图中,例如,在图示的控制流图中,一组独立的路径是一组独立的路径是path1:1 11path2:1-2-3-4-5-10-1 11path3:1-2-3-6-8-9-10-1 11path4:1-2-3-6-7-9-10-1-11路径路径 path1,path2,path3,path4组成了控组成了控制流图的一个基本
6、路径集。制流图的一个基本路径集。2,34,5111098761基本路径测试基本路径测试(续续4)6软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院3.导出测试用例导出测试用例导出测试用例,导出测试用例,确保基本路径集中的每一确保基本路径集中的每一条路径的执行条路径的执行。根据判断结点给出的条件,选择适当的数根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到据以保证某一条路径可以被测试到 用逻用逻辑覆盖方法辑覆盖方法。每个每个测试用例执行之后测试用例执行之后,与预期结果进行与预期结果进行比较比较。基本路径测
7、试基本路径测试(续续5)7软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院从小到大排序从小到大排序:Void SelectSort(datalist&list)for(int i=0;ilist.n-1;i+)int k=i;for(int j=i+1;jlist.n;j+)if(list.Vj.getKey()list.Vk.getKey()k=j;if(k!=i)Swap(list.Vi,list.Vk);举例:基本路径测试举例:基本路径测试(1)8软件工程 Software Engineering 第七章 软件测试
8、成都信息工程学院成都信息工程学院 计算机学院计算机学院程序流程图中程序流程图中:list.Vj.getKey 简写为简写为Vj;list.n简写为简写为n.下同下同.环路复杂性环路复杂性5举例:基本路径测试举例:基本路径测试(2)9软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院基本路径集基本路径集:Path1:123Path2:12459101123Path3:124591123Path4:1245678 59101123(或或1245678 591123)Path5:1245 68 59101123(或或1-2-4-
9、5-6-8-5-9-11-2-3)举例:基本路径测试举例:基本路径测试(3)10软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院举例:基本路径测试举例:基本路径测试(4)测试用例测试用例Path1:123 取取n=1Path2:124591011 23 取取n=2 预期结果:路径预期结果:路径5-9-10-11-2-3不可达不可达Path3:1245911-2-3 取取n=2,预期结果:路径预期结果:路径5-9-11-2-3不可达不可达11软件工程 Software Engineering 第七章 软件测试成都信息工程学
10、院成都信息工程学院 计算机学院计算机学院举例:基本路径测试举例:基本路径测试(5)Path4 路径路径A:1-2-4-5-6-7-8-5-9-10-11-2-3 取取n=2,V0=2,V1=1 预期结果预期结果:k=1,V0=1,V1=212软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院举例:基本路径测试举例:基本路径测试(6)Path4:路径路径B:1-2-4-5-6-7-8-5-9-11-2-3 取取n=2,V0=2,V1=1 预期结果预期结果:k=1,路径路径9-11-3不可到达不可到达13软件工程 Softwa
11、re Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院举例:基本路径测试举例:基本路径测试(7)Path5:路径路径A:1-2-4-5-6-8-5-9-10-11-2-3 取取n=2,V0=1,V1=2 预期结果预期结果:k=0,路径路径9-10-11-2-3不可到达不可到达路径路径B:1-2-4-5-6-8-5-9-11-2-3 取取n=2,V0=1,V1=2 预期结果预期结果:k=0,V0=1,V1=214软件工程 Software Engineering 第七章 软件测试成都信息工程学院成都信息工程学院 计算机学院计算机学院作业作业1.从小到大排序从小到大排序:Void SelectSort(datalist&list)for(int i=0;ilist.n-1;i+)int k=i;for(int j=i+1;jlist.n;j+)if(list.Vj.getKey()R0)Rj+1=Rj;j=j 1;Rj+1=R0;(1)试画出它的程序流程图(2)并计算它的环路复杂性;(3)用基本路径覆盖法给出测试路径。(4)为各测试路径设计测试用例(循环次数限定为0次、1次)。16