APP下载

白盒测试之基本路径测试技术探析

2014-05-25仝海燕吕洪善

关键词:白盒控制流测试用例

仝海燕,吕洪善,贾 爽

(1.亳州师范高等专科学校理化系,安徽 亳州 236800;2.亳州职业技术学院电子与电气工程系,安徽 亳州 236800)

白盒测试之基本路径测试技术探析

仝海燕1,吕洪善2,贾 爽1

(1.亳州师范高等专科学校理化系,安徽 亳州 236800;2.亳州职业技术学院电子与电气工程系,安徽 亳州 236800)

结合教学过程中的内容,分析了白盒测试技术中覆盖率较强的测试技术——基本路径测试方法的相关概念,阐述了利用基本路径测试设计测试用例的过程,最后通过实例说明基本路径测试方法的使用。

软件测试;软件质量保证;白盒测试;基本路径测试

目前,各种类型软件的使用无处不在,已经涉及人们生活的各个方面,如日常生活中的手机、智能冰箱、新一代数字电视、电子商务等等。在软件的使用过程中,或多或少的会碰到一些不愉快的事情,如信息显示不对、数据不完整、操作不灵活等,这些都是软件质量问题,另外由软件问题有时会引起其他问题,特别是经济、医学、军事等领域有关的软件,一旦软件质量出现异常将会造成很严重的后果。软件质量的优劣日益受到人们的重视,为减少乃至避免软件故障的问题,软件测试是保证软件质量的最有效手段,在软件正式上市之前,要对软件进行相关的测试,以保证软件正常运行。软件测试技术包括很多,本文结合在软件测试课程授课的一些经验,主要对白盒测试技术中覆盖率较强的基本路径测试技术进行了介绍,包括基本路径测试的相关概念、测试用例设计过程,最后结合实例介绍基本路径测试方法的使用。

1 基本路径测试技术的相关概念

1.1 软件测试的定义

随着人们对软件质量认识和重视的程度,不同的阶段软件测试的定义也不同。1972年软件测试的宗师Bill Hetzel博士在其论著《The Complete Guide to Software Testing》(《软件测试完全指导书》)中指出:“软件测试就是建立一种信心,认为程序能够按预期的设想运行。”1979年,Glen ford J.Myers的《软件测试的艺术》中将软件测试定义为“测试是为发现错误而执行的一个程序或者系统的过程。[1]”1983年,Bill Hetzel在《软件测试完全指南》一书中指出:“测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量”。到了2002年,Rick和Stefan在《系统的软件测试》中对软件测试做了进一步定义:“测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程”[2]。

1.2 白盒测试

白盒测试是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试一般用来分析程序的内部结构,对测试者而言是透明的,测试者可以看到被测程序源代码,并分析其内部结构[3]。因此,白盒测试也叫结构测试或逻辑驱动测试。

白盒测试要求对被测程序的结构特性做到一定程度的覆盖,并以软件中某类成分是否都已得到测试来判断软件测试的充分性。覆盖的标准主要有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖6种[4]。其中覆盖强度最强的是路径覆盖,但由于软件程序的复杂性,要达到理想的路径测试是完全不可能的,因此在进行路径测试时需要把覆盖的路径数进行缩减,实际测试时往往采用的是基本路径测试技术。

1.3 基本路径测试

基本路径测试是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,然后据此设计测试用例[4,5]。设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次。

1.4 程序控制流图

在进行软件(程序)测试的设计时,对程序的流程图进行简化,图1中每个处理都退化成一个结点,流线变成连接不同结点的有向弧,简化之后所得的图形称为程序控制流图,即控制流图是退化的程序流程图[5]。控制流图将程序流程图中结构化构件改用一般有向图的形式表示。

在软件(程序)的控制流图中对应的图形符号如图1所示。图1中的圆圈称为结点,代表程序代码中的一个或多个无分支语句,箭头表示控制流的方向,也称为边。出度大于1的结点称为判定结点或分支结点,对应的是代码中的条件。由边和结点所围成的封闭部分叫区域,对控制流图中的区域进行计数时注意将图形外的部分也要算一个区域统计进去。

图1 控制流图中的图形符号

1.5 程序环形复杂性

程序的环路复杂性也称为McCabe复杂性度量或圈复杂度[5]。环形复杂性是为软件逻辑复杂度进行度量的一种尺度,在进行程序的基本路径测试时,从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,根据独立路径数目可确保程序中每个可执行语句至少执行一次的测试用例数目。

1.6 独立路径

独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序的控制流图来看,一条独立路径至少包含有一条在其他独立路径中从未有过的边的路径[5,6]。对于给定的控制流图,由独立路径构成的基本路径集合不是唯一的,在设计测试用例时只要能够确保基本路径集中的执行,就可以使得程序中的每个可执行语句至少执行一次。

2 基本路径测试法设计测试用例的过程

基本路径测试方法是根据程序的控制流图,计算出相应的环形复杂性,通过环形复杂性的值确定独立路径的数目,从而导出控制流图的基本路径集,然后结合基本路径集对程序或软件进行测试用例的设计。这种方法适合于模块的详细设计及源程序,测试的主要步骤如下:以项目或软件测详细设计或代码为基础,导出程序的控制流图;根据控制流图,采用环形复杂性的计算方法得到的相应控制流图的环形复杂性,环形复杂性的计算方法在后面有所描述;根据程序的环型复杂性,确定程序的独立路径数目,导出程序的独立路径,从而得出基本路径集;根据基本路径集设计测试用例,确保路径集中每条独立路径的执行。

3 基本路径测试技术的实例应用

下面结合软件测试课程的教学内容,来说明使用基本路径测试技术设计测试用例的应用。

3.1 实例代码描述

3.2 基本路径测试技术方法来设计测试用例

根据代码画程序的控制流图时,若是连续的顺序执行语句在控制流图中可以压缩为一个结点,若代码中的条件是复合条件时,要在画控制流图时注意先将复合条件转化为单条件。根据前面介绍的基本路径测试技术生成测试用例的方法。

第一步,依据程序代码导出该实例对应的控制流图,如图2所示。

第二步,根据程序的控制流图计算程序的环形复杂性。环形复杂性的计算方法可以根据控制流图的结点和边数进行计算,也可以根据控制流图的判定结点数目来计算,还可以根据控制流图的区域数来计算。给定控制流图的环形复杂性的值为控制流图的边数减去控制流图的结点数后再加上2或者是控制流图的区域数目或者是判定结点的数目加1。本文采用结点和边数来计算,该实例中控制流图的边数为11,结点数目为9,边数减去结点数后为2,将该数字再加上2即可得到该控制流图的复杂性为4。

图2 实例的控制流图

第三步,根据程序控制流图的复杂性,确定程序的独立路径数目,导出相应的独立路径,得出程序的基本路径集。通过第二步可知程序控制流图的环形复杂性为4,找出控制流图的独立路径数目为4,下面给出本例的具体独立路径:

路径1:1-8->9->17

路径2:1-8->9->10->11->15->16->9>17

路径3:1-8->9->10->12->15->16->9->17

路径4:1-8->9->10>12->13-14->15->16->9->17

第四步,上面的4条独立路径构成的基本路基集,依据这个基本路基集可设计4个相应的测试用例数据,如表1所示。用这些数据作为测试输入数据,可以确保这4条独立路径的执行,使程序能够达到基本路径覆盖的标准。对于源程序中的循环体,设计的测试数据遵循简化的Z路径覆盖,也就是说测试的输入数据使程序的循环体执行零次或1次。

4 结束语

软件测试是软件质量保证的最有效手段,软件测试的技术主要分为黑盒测试和白盒测试,在白盒测试中,基本路径测试是白盒测试技术中覆盖较强的测试技术。本文结合软件测试课程的教学内容,介绍了白盒测试之基本路径测试技术的相关概念,分析了基本路径测试技术设计测试用例的过程,最后结合实例给出了基本路径测试技术的应用,希望对学习基本路径测试技术的学者有所帮助和启发。

[1]刘竹林.软件测试技术与案例实践[M].北京:北京师范大学出版社,2011

[2]柳纯录.软件评测师教程[M].北京:清华大学出版社,2005年

[3]王冠.基本路径测试中的McCabe算法改进及应用[J].哈尔滨理工大学学报,2010,15(1):48

[4]仝春灵.基本路径法测试_典型排序程度的测试用例设计[J].山西师范大学学报:自然科学版,2004,19(1):92

[5]高春艳.基本路径测试法的应用[J].开封大学学报,2012,26(2):81

[6]贾晓强.基于白盒测试的基本路径测试[J].渭南师范学院学报,2008,23(2):72-73

[7]张永刚.浅析软件测试技术及用例构造方法[J].科技信息,2012(36):561

[8]杜庆峰.基本路径测试技术研究[J].信息与电脑,2010(6):129

Analysis of Basic Path Testing Technique Based on White Box Test

TONG Hai-yan1,LU Hong-shan2,JIA Shuang1
(1.Department of Physics and Chemistry,Bozhou Teachers College,Anhui Bozhou 236800,China;2.Department of Electronics and Electric Engineering,Vocational and Technical College,Anhui Bozhou 236800,China)

By combining the contents in teaching,this paper analyzes the related concepts of the basic test method,the test technology with relatively strong covering rate in white box test technique,elaborates the process for the design of test examples by using basic path tests,and finally illustrates the application of the basic path test method by practical examples.

software test;software quality guarantee;white box test;basic path test

TP374

A

1672-058X(2014)01-0065-05

责任编辑:代小红

2013-08-01;

2013-09-12.

仝海燕(1979-),女,安徽砀山人,讲师,硕士,从事软件测试、办公自动化等课程教学研究、模式识别与智能系统研究.

猜你喜欢

白盒控制流测试用例
面向未来网络的白盒交换机体系综述
抵御控制流分析的Python 程序混淆算法
DWB-AES:基于AES 的动态白盒实现方法
抵御控制流分析的程序混淆算法
基于SmartUnit的安全通信系统单元测试用例自动生成
基于控制流的盒图动态建模与测试
网络“黑”“白”之争
基于Petri网数据流约束下的业务流程变化域分析
基于需求模型的航天软件测试用例生成方法
基于依赖结构的测试用例优先级技术