一种基于规范和基于程序域分析的软件测试方法

文档序号:9810439阅读:365来源:国知局
一种基于规范和基于程序域分析的软件测试方法
【技术领域】
[0001]本发明涉及软件测试技术领域,具体地说是一种基于规范和基于程序域分析的软件测试方法。
【背景技术】
[0002]面向对象软件的分析、设计方法有助于构造良好的软件系统结构,其程序设计语言有利于提高软件的可重用性、可扩展性、互操作性及可行性,但如何提高软件质量仍然是软件工程学的一个主要问题。由于面向对象的程序设计语言提供了数据抽象、继承、多态和动态绑定等机制,传统的软件测试方法以及测试工具已不能为面向对象的软件提供良好的支持虹31111'1(192,1(111^93〕。急需开发适应于类、继承和动态绑定的面向对象的软件测试方法。本文针对面向对象软件的特征,介绍了一种基于外部类规范的软件测试方法,讨论了如何构造类的测试需求目录,以及类、类的继承操作的测试用例生成,并用此方法实现了一个具体的软件的测试,为进一步探讨面向对象的软件测试方法奠定了基础。

【发明内容】

[0003]本发明的目的是克服现有技术中存在的不足,提供一种基于规范和基于程序域分析的软件测试方法。
[0004]本发明的技术方案是按以下方式实现的,通过对源程序进行数据流分析和相关性分析,确定其输入变量运行域;采用程序切片技术,进行基于输入变量的静态程序切片,将与输入变量无关的语句和函数剔除,简化了源程序,提高了分析效率;
同时,对一些特殊表达式,与输入变量有关并有特殊取值要求的表达式,表达式作除数或作一些标准函数sqrt(),log(),acos(),asin()的实参等,要求输入变量在一定范围内取值,我们研制的C程序运行域自动确定系统ADSOD,可以实现程序运行域的自动确定;
该系统由四个模块组成,即模块cerat_l ist (),program_sl icing () , domain_determinat1n(MPbase_express1n_q(),其输入为被测程序,输出为被测程序的运行Dp。
[0005]本发明的优点是:
本发明的一种基于规范和基于程序域分析的软件测试方法和现有技术相比,该方法有广泛的适用性,是确实可行的。该系统的实现为本文后续研究奠定了基础,而且本发明还具有设计合理、结构简单、使用方便等特点,因而,具有很好的使用价值。
[0006]实施方式下面对本发明的一种基于规范和基于程序域分析的软件测试方法作以下详细说明。
[0007]本发明的一种基于规范和基于程序域分析的软件测试方法,通过对源程序进行数据流分析和相关性分析,确定其输入变量运行域。采用程序切片技术,进行基于输入变量的静态程序切片,将与输入变量无关的语句和函数剔除,简化了源程序,提高了分析效率。同时,对一些特殊表达式(与输入变量有关并有特殊取值要求的表达式,如表达式作除数或作一些标准函数sqrt(),log(),acos(),asin()的实参等,要求输入变量在一定范围内取值,我们研制的C程序运行域自动确定系统ADSOD,可以实现程序运行域的自动确定。该系统由四个模块组成,即模块cerat_list (), program_s licing (), domain_determinat1n()和base_express1n_q(),其输入为被测程序,输出为被测程序的运行Dp。
[0008]为验证本系统的有效性,我们对多个C语言程序,进行了运行域模拟求取实验。虽然每个程序仅由几十行语句组成,但却涉及了复杂的控制关系以及单输入变量、多输入变量、字符串输入变量、有特殊取值要求的表达式等情形,实验结果与预期结果相同,表明该系统有广泛的适用性,是确实可行的。该系统的实现为本文后续研究奠定了基础。
[0009]基于规范的功能测试和基于程序的结构测试是两类常用的软件测试方法。功能测试根据规格说明书设计测试用例,检查程序的每一功能是否按照规范的要求正确地执行。它以软件规范为依据选取测试数据,其正确性依赖于规范的正确性。事实上,我们不能保证规范说明完全正确。很明显,如果程序的外部特性本身有问题或规格说明的规定有误,如规范中规定了多余的功能或是漏掉了某些功能,这对于功能测试是无能为力的。再者,由于规范本身的高度抽象或存在二义性,实际工程中,详尽的功能测试也可能会遗漏代码中的一些重要部分,因而可能会漏掉其中的一些故障H[orgam96]。结构测试则根据程序的内部结构设计测试用例,检测程序的每条路径是否都按照预定的要求正确地执行。结构测试提供了评价测试的充分性标准,但Howdne认为结构测试是不完全的H[owden80]。理论上,可以构造出一些程序实例证明:每种基于结构的测试最终都将达到极限而不能发现所有的故障[Hogram%]。如果程序结构本身有问题,比如程序逻辑有错,或是遗漏了某些规格说明己有规定的功能,那么,无论哪一种结构测试,即使其覆盖率达到百分之百,也是检查不出来的[郑人杰92]。因此,从规范说明和程序实现两方面出发,探讨软件测试数据的生成方法,非常必要。
[0010]实质上,规范是对软件输入、输出的定义,而程序则表明实现规范的算法和数据结构。虽然软件规范规定了输入变量的定义域(输入域),但程序实现本身也定义了其定义域。L四认为系统在需求阶段是由功能来给定的,而在开发和运作中是由运行来描述的。软件规范给定的功能是定义在输入空间的一个所谓功能域上,而被测程序本身规定了输入空间的一个运行域。如果二者不能完全重合,那么某些软件故障就可检测出来。因此,对功能域和运行域进行域分析,探讨软件测试数据的生成方法,是本文研究的重点。当然,功能域和运行域重合,并不能说明软件没有故障。对于那些不能从定义域中反映出来的故障,可采用等价划分、逻辑覆盖、故障推断等测试方法进行检测。另一方面,目前关于域测试策略的大多文献,只提及域测试策略的基本思想及ON-OFF测试点的选取原则[Clakre82,Hajnal98,Jeng94,White80]。虽然Ha jnal给出了一个ON-OFF测试点产生算法,但也只考虑了数值谓词边界测试点的产生,未涉及字符串谓词边界测试点的产生。因而,只适应于一类纯数值计算的程序。但在实际应用中,字符串谓词使用相当普遍,这在一定程度上限制了域测试策略的应用及推广。因此,针对字符串谓词边界,探讨其测试数据的自动生成方法是本文研究的另一重点。
[0011]要检验开发的软件是否符合规格说明书的要求,可以采取各种不同的测试策略。但是,不论采取哪一种测试策略,设计测试方案都是测试阶段最关键的技术问题[Marikc95,we抖ker80,郑人杰92]。测试以前都需要从程序定义域中选取有代表性的测试数据。因此,程序定义域对于测试数据的选取,尤其对边界值分析,有着直接的指导作用。就目前而言,大多是以软件规范说明的输入变量的取值范围为其定义域,其正确性依赖于规范的正确性。事实上,我们不能保证规范说明完全正确。虽然程序规范规定了输入变量的定义域(功能域D)f,但程序实现本身也定义了其定义域(运行域马)。如果两者不能完全重合,那么某些软件故障就可诊断出来。
[0012]一般而言,输入空间可以划分为四部分,S卩:E=E1UE2UE3UE4,其中:Ε1 = {χ|χΕ2|;η Dp}
Ε2={χ x^Df Π Dp}
Ε3={χ I x^Df Π Dp}
E4={x|xeDf Π?ρ}
El,表明规范和程序有相同的输入子域,但实现与说明是否一致,还需进一步研究。Ε2表明程序产生了一个结果,但规范并没有要求。对于这种情况,要么补充规范,要么缩小其程序的运行域。E3表明规范的某些要求,程序没有处理。这显然是不允许的,应该修改程序。E4关于例外处理,即规范既未要求,程序也无从处理。对于规范未指明的输入,程序可能产生不可预料的结果。因此,在高可靠的软件中,例外处理必不可少。
[0013]如果我们能够得到被测程序的定义域,那么不仅可以进行程序定义域的重合验证,而且还可以得到输入子域E1、E2、E3、E4。根据其规范说明与程序实现之间的差异,设计测试用例,可以克服测试的盲目性,提高测试效率。因此,从程序本身出发,探讨其输入变量的运行域,非常必要,然而对于这一重要问题,目前很少有文献提及。
[0014]本发明的一种基于规范和基于程序域分析的软件测试方法其加工制作非常简单方便,按照说明书所示即可加工。
[0015]除说明书所述的技术特征外,均为本专业技术人员的已知技术。
【主权项】
1.一种基于规范和基于程序域分析的软件测试方法,其特征在于通过对源程序进行数据流分析和相关性分析,确定其输入变量运行域;采用程序切片技术,进行基于输入变量的静态程序切片,将与输入变量无关的语句和函数剔除,简化了源程序,提高了分析效率; 同时,对一些特殊表达式,与输入变量有关并有特殊取值要求的表达式,表达式作除数或作一些标准函数SqrtO,log(),acos(),asin()的实参等,要求输入变量在一定范围内取值,我们研制的C程序运行域自动确定系统ADSOD,可以实现程序运行域的自动确定; 该系统由四个模块组成,即模块cerat_l ist (),program_sI icing () , domain_determinat1n(MPbase_express1n_q(),其输入为被测程序,输出为被测程序的运行Dp。
【专利摘要】本发明提供一种基于规范和基于程序域分析的软件测试方法,通过对源程序进行数据流分析和相关性分析,确定其输入变量运行域;采用程序切片技术,进行基于输入变量的静态程序切片,将与输入变量无关的语句和函数剔除,简化了源程序,提高了分析效率;对一些特殊表达式,与输入变量有关并有特殊取值要求的表达式,要求输入变量在一定范围内取值。本发明和现有技术相比,该方法有广泛的适用性,是确实可行的。该系统的实现为本文后续研究奠定了基础。
【IPC分类】G06F11/36
【公开号】CN105573909
【申请号】CN201510915343
【发明人】牛圆圆
【申请人】浪潮电子信息产业股份有限公司
【公开日】2016年5月11日
【申请日】2015年12月11日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1