浅谈白盒测试之基本路径测试方法研究
2014-12-13佘凤
佘凤
摘 要:本文分析了白盒测试中基本路径测试方法的相关概念,阐述了利用基本路径测试方法设计测试用例的过程,最后通过实例说明基本路径测试方法的使用。
关键词:软件测试;白盒测试;基本路径测试
中图分类号:TP311.52 文献标识码:A
1 引言(Introduction)
白盒测试[1]是基于程序的测试,它根据程序的控制结构设计测试用例,主要用于软件或程序验证,测试产品的内部结构是否合理以及内部操作是否按规定执行。白盒测试要求对被测程序的结构特性达到一定程度测试覆盖[2],并以软件中某类成分(如语句、判定、条件、判定/条件、条件组合、路径)是否都已得到测试来判断软件测试的充分性。基本路径测试[3]是白盒测试技术中测试覆盖率较强的一种测试方法。
2 基本路径测试方法的相关概念(The concept of
the basic path testing method)
在实践中,一个不太复杂的程序,其路径都是一个庞大的数字,要在测试中覆盖所有的路径是不现实的。为了解决这一难题,只得把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行一次。基本路径测试就是这样一种测试方法,在控制流图的基础上,通过分析控制结构的环形复杂度,导出执行路径的基本集,再从该基本集设计测试用例。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
3 基本路径测试方法的测试步骤(The step of the
basic path testing method)
3.1 画出程序的控制流图
程序流程图(简称框图)是一种程序控制结构的图形表示。控制流图(简称流图)是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。控制流图中包括两种图形符号:结点和控制流线。结点由带标号的圆圈“○”表示,可代表一个或多个无分支的语句、一个处理框序列和一个条件判定框(不包含复合条件)。控制流线由带箭头的弧或线表示,可称为边,它代表程序中的控制流。一条边必须终止于一个结点,即使该结点并不代表任何语句。由边和结点限定的范围称为区域。
如果判断中的条件表达式是由一个或多个逻辑运算符(OR、AND、NAND、NOR)连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断,如图1所示。
图1 复合条件流图
Fig.1 Composite condition flow chart
3.2 计算程序的环形复杂度
环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度量。用来衡量一个模块逻辑结构的复杂程度,在数量上表现为独立路径条数,是需要测试的基本路径数目的上限。有以下三种方法计算环形复杂度V(G)。
方法1:V(G)=控制流图中区域的数量。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
方法2:V(G)=E(控制流图中边的数量)-N(控制流图中结点的数量)+2。
方法3:V(G)=P(流图中判定结点的数量)+1。
3.3 确定基本路径集合
导出基本路径集,列出程序的独立路径。一条独立路径是指和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径条数。
3.4 设计测试用例
为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,设计测试用例的输入数据和预期输出,确保基本路径集中的每一条路径的执行。
4 基本路径测试方法的应用(The application of the
basic path testing method)
三角形问题:输入三个整数a、b和c分别作为三角形的三条边,通过程序判断有这三条边构成的三角形类型是:等边三角形、等腰三角形、一般三角形或非三角形。利用基本路径测试法对三角形问题进行测试用例设计。主要代码如下所示(注:数字1-16是语句编号,方便绘制控制流图,编程时不用写入) 。
1. if ((a>;=b+c)
2. ||(b>;=a+c)
3. ||(c>;=b+a))
4. cout<;<; "非三角形";
5. else
6. if ((a==b)
7. &;&;(b==c))
8. cout<;<; "等边三角形";
9. else
10. if ((a==b)endprint
11. ||(a==c)
12. ||(c==b) )
13. cout<;<;"等腰三角形";
14. else
15. cout<;<; "一般三角形";
16. cout<;<;endl;
第一步:绘制控制流图,如图2所示。(注意:复合条件语句,需改复合条件的判断为一系列单个条件的嵌套)
图2 程序控制流图
Fig.2 Program control flow chart
第二步:计算程序的环形复杂度V(G),分析如下:
1.控制流图中有9个区域。
2.V(G)=20条边-13结点+2=9。
3.V(G)=8个判定结点+1=9。
所以,程序的环形复杂度V(G)=9。
第三步:确定基本路径集合。根据环形复杂性V(G)的计算,导出基本路径集,列出程序的独立路径(用题中给出的语句编号表示)。设计时注意要点:从较短路径顺序增加,每个分支尽可能走一次。可得出基本路径集中独立路径如下:
P1: 1-4-16
P2: 1-2-4-16
P3: 1-2-3-4-16
P4: 1-2-3-6-7-8-16
P5: 1-2-3-6-10-13-16
P6: 1-2-3-6-10-11-13-16
P7: 1-2-3-6-10-11-12-13-16
P8: 1-2-3-6-10-11-12-15-16
P9: 1-2-3-6-7-10-11-12-15-16
第四步:设计测试用例。根据基本路径集中9条独立的路径,设计满足上面基本路径集的测试用例,详见表1。
表1 测试用例
Tab.1 Test case
5 结论(Conclusion)
白盒测试又称为结构测试,逻辑驱动测试。测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面程序的内部结构。基本路径测试是白盒测试技术中测试覆盖率较强的一种测试方法。本文重点介绍了基本路径测试方法的相关概念,分析了使用基本路径测试方法设计测试用例的过程,最后结合实例说明使用基本路径测试方法设计测试用例的应用。
参考文献(References)
[1] 陈卫卫.软件测试[M].西安:西安电子科技大学出版社,2011.
[2] 魏琴,梅佳.软件测试技术(基于工作过程)[M].北京:电子工业
出版社,2012.
[3] 于艳华,王素华,吴艳平.软件测试技术与项目实训[M].北京:
中国人民大学出版社,2013.
作者简介:
佘 凤(1976-),女,硕士,软件设计师,高校讲师.研究领
域:软件测试.endprint
11. ||(a==c)
12. ||(c==b) )
13. cout<;<;"等腰三角形";
14. else
15. cout<;<; "一般三角形";
16. cout<;<;endl;
第一步:绘制控制流图,如图2所示。(注意:复合条件语句,需改复合条件的判断为一系列单个条件的嵌套)
图2 程序控制流图
Fig.2 Program control flow chart
第二步:计算程序的环形复杂度V(G),分析如下:
1.控制流图中有9个区域。
2.V(G)=20条边-13结点+2=9。
3.V(G)=8个判定结点+1=9。
所以,程序的环形复杂度V(G)=9。
第三步:确定基本路径集合。根据环形复杂性V(G)的计算,导出基本路径集,列出程序的独立路径(用题中给出的语句编号表示)。设计时注意要点:从较短路径顺序增加,每个分支尽可能走一次。可得出基本路径集中独立路径如下:
P1: 1-4-16
P2: 1-2-4-16
P3: 1-2-3-4-16
P4: 1-2-3-6-7-8-16
P5: 1-2-3-6-10-13-16
P6: 1-2-3-6-10-11-13-16
P7: 1-2-3-6-10-11-12-13-16
P8: 1-2-3-6-10-11-12-15-16
P9: 1-2-3-6-7-10-11-12-15-16
第四步:设计测试用例。根据基本路径集中9条独立的路径,设计满足上面基本路径集的测试用例,详见表1。
表1 测试用例
Tab.1 Test case
5 结论(Conclusion)
白盒测试又称为结构测试,逻辑驱动测试。测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面程序的内部结构。基本路径测试是白盒测试技术中测试覆盖率较强的一种测试方法。本文重点介绍了基本路径测试方法的相关概念,分析了使用基本路径测试方法设计测试用例的过程,最后结合实例说明使用基本路径测试方法设计测试用例的应用。
参考文献(References)
[1] 陈卫卫.软件测试[M].西安:西安电子科技大学出版社,2011.
[2] 魏琴,梅佳.软件测试技术(基于工作过程)[M].北京:电子工业
出版社,2012.
[3] 于艳华,王素华,吴艳平.软件测试技术与项目实训[M].北京:
中国人民大学出版社,2013.
作者简介:
佘 凤(1976-),女,硕士,软件设计师,高校讲师.研究领
域:软件测试.endprint
11. ||(a==c)
12. ||(c==b) )
13. cout<;<;"等腰三角形";
14. else
15. cout<;<; "一般三角形";
16. cout<;<;endl;
第一步:绘制控制流图,如图2所示。(注意:复合条件语句,需改复合条件的判断为一系列单个条件的嵌套)
图2 程序控制流图
Fig.2 Program control flow chart
第二步:计算程序的环形复杂度V(G),分析如下:
1.控制流图中有9个区域。
2.V(G)=20条边-13结点+2=9。
3.V(G)=8个判定结点+1=9。
所以,程序的环形复杂度V(G)=9。
第三步:确定基本路径集合。根据环形复杂性V(G)的计算,导出基本路径集,列出程序的独立路径(用题中给出的语句编号表示)。设计时注意要点:从较短路径顺序增加,每个分支尽可能走一次。可得出基本路径集中独立路径如下:
P1: 1-4-16
P2: 1-2-4-16
P3: 1-2-3-4-16
P4: 1-2-3-6-7-8-16
P5: 1-2-3-6-10-13-16
P6: 1-2-3-6-10-11-13-16
P7: 1-2-3-6-10-11-12-13-16
P8: 1-2-3-6-10-11-12-15-16
P9: 1-2-3-6-7-10-11-12-15-16
第四步:设计测试用例。根据基本路径集中9条独立的路径,设计满足上面基本路径集的测试用例,详见表1。
表1 测试用例
Tab.1 Test case
5 结论(Conclusion)
白盒测试又称为结构测试,逻辑驱动测试。测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面程序的内部结构。基本路径测试是白盒测试技术中测试覆盖率较强的一种测试方法。本文重点介绍了基本路径测试方法的相关概念,分析了使用基本路径测试方法设计测试用例的过程,最后结合实例说明使用基本路径测试方法设计测试用例的应用。
参考文献(References)
[1] 陈卫卫.软件测试[M].西安:西安电子科技大学出版社,2011.
[2] 魏琴,梅佳.软件测试技术(基于工作过程)[M].北京:电子工业
出版社,2012.
[3] 于艳华,王素华,吴艳平.软件测试技术与项目实训[M].北京:
中国人民大学出版社,2013.
作者简介:
佘 凤(1976-),女,硕士,软件设计师,高校讲师.研究领
域:软件测试.endprint