论文部分内容阅读
摘要:在当前的社会发展中,静态测试技术的应用越来越广泛,已成为社会各行业测试工作中经常采用的一种测试新技术。在工作中,为了提高测试精确度、解决代码缺陷问题,以应用函数后置信息软件来进行测试就显得格外关键,这一软件技术的采用有效的改善了原有测试工作中存在的本地修改、全局修改集以及返回数据流问题。本文从静态测试的概念入手,函数副作用产生的软件测试影响进行分析,着重探讨了其在软件静态测试中的应用优势。
关键词:软件测试;静态测试;函数后置信息
伴随信息技术、计算机技术的飞速发展以及应用的日趋普及,软件技术的应用也越来越广泛,这也使得软件技术变得越来越复杂和繁琐。而在这些软件工作中,一旦出现质量问题,其产生的影响和造成的损失将是不可估量的,因此保障软件质量已成为目前软件工程领域中一个极为重要的内容,也是工程人员最为关心的内容。软件静态测试作为衡量软件质量的主要途径,如何保证其检测的精确度深受人们的重视与关注,函数后置信息技术就是基于这种时代背景下产生的一种测量新方法,其产生为软件测试技术指明了发展新方向。
一、静态测试概述
软件测试是目前软件工作中不可忽视的重要内容之一,是保证软件质量的主要途径。一般来说,软件故障通常都表现在计算结果的误差以及系统崩溃两个方面。其中,计算结果错误是一个很容易就被检测出来的问题;而导致系统崩溃的故障不仅无法及时的检测出来,同时其造成的后果也是非常严重的。这类故障在检测中被检测出来的概率很低,而采用静态测试技术对这些故障进行测试的话,则只需要分析源码而需要运行程序,这就避免了由于软件问题而造成的计算机故障隐患,同时对于缺陷的针对性处理优势高。
1、软件测试分析
所谓的软件测试主要指的是在工作中采用有关测试工具和测试方案对软件产品的性能、功能进行全面测试,甚至是根据编写者的不同来采取不同的测试工具来进行软件质量判断,从而实现软件性能和功能的评估。软件测试工作在软件领域有着举足轻重的地位,是设计和维护测试系统、提高软件质量的主要手段。
2、静态测试
静态测试主要是不运行被检测的软件,仅仅通过分析、检查和测量源程序的语法、结构、过程、接口等环节来检测软件中存在的问题以及正确性,对需求规格的说明书、源文件、流程图、符号执行采用找错、编审的方式来进行研究,从而实现软件质量的检测。这种方法的应用对于系统崩溃故障而言有着重要的意义,是可用于进一步差错、测试用例的一种现代化测试手段。
二、函数副作用对测试的影响
基于缺陷模式下的软件测试工作是近年来应用极为广泛的一种测试技术,是通过对程序执行信息化、抽象画处理的基础上,分析软件故障匹配模式,从而实现测试工作的正常、持续开展。对于某些函数调用分析,其函数以及子函数很有可能受到内外因素的影响而需要进行及时的修改,并且返回特定的信息。这些内容的存在极容易对调用者上下产生一定的影响,如果在静态测试工作中将这一问题忽略不计,则很有可能导致变量或者表达方式的区间值发生误差,进而造成软件测量工作的缺陷。
三、函数后置信息概述
函数后置信息软件技术在目前的软件测试工作中经常遇到,尤其是在静态测试中,更是极为常见。在工作中如果我们忽略掉函数副作用的影响,那么很容易对相关变量产生一定的影响,将会造成整个软件检测出现质量隐患。为此在这里利用函数后置信息软件检测技术就显得格外重要,将其用于区间计算和缺陷检测中所发挥出的优势十分明显。
1、后置信息描述
PFI是函数执行后对其调用者的影响,包括函数体内修改的外部变量、函数体内修改的指针型参数、引用型参数以及函数的返回值等,可描述为一个四元组M=(L,G,P,R).
L是一个集合,表示函数中直接修改的外部变量及其取值区间.若函数F中的某条语句.s修改了若干外部变量,则这些外部变量及其取值区间构成语句s的本地更改集合。
P是一个集合,表示函数参数列表中具有指针或引用特性的参数及其取值区间,它们构成函数F的可更改参数集合。
R是一个集合,若函数F中的某条语句S返回到某个变量或表达式的取值区间,则该取值区间构成语句S的返回值。
G是一个集合,若函数F及其子函数中更改了若干外部变量,则这些变量及其取值区间构成函数F的后置信息。
2、生成算法
在现有的一些故障分析系统中,采用的故障查找及区间计算的算法大多数是基于路径的,即首先产生一条路径,然后针对该路径的控制流进行分析,该类算法的复杂性至少是O(P)(P为路径数).为提高分析效率,本文应用对控制流图进行迭代的方法计算后置信息,在控制流图上对当前节点包含变量的可能取值区间进行迭代。本算法中要计算的相关变量取值区间是沿着控制流正向进行的,基本数据流方程形式为:
其中:其中,n为控制流节点;i[n]为到达控制流节点n前的所有相关变量区间集合;O[n]为到达节点n后所有相关变量区间集合;g[n]为节点n中新产生或“被改变”得到的变量区间集合;k[n]为节点n中“注销”或“被改变”的变量区间集合;P[n]为控制流中节点n的所有前驱节点集合。
3、算法分析
因为所有定义的集合是有穷的,最终一定存在1次while循环,使每个控制流节点n都满足结束条件,从而计算出当前函数的后置信息.在最坏情况下,算法的时间复杂度是O(n4),但如果按照深度优先顺序安排节点的计算顺序,则实际迭代的平均数将小于5,这样算法的效率较高,对于算法的输出结果,如果集合L(f)、G(f)、P(f)、R(f)中对应的变量存在交集,则理论上交集中的变量取值在不同后置成员中应一致,否则会影响测试的准确度,这主要依赖于函数内抽象表示及计算部分对别名问题的处理准确度。
四、结束语
目前市场上的主流静态测试产品存在的主要问题是缺陷的误报率较高,有漏报现象.为提高这种软件测试技术的精度,将PFI应用于DTS中,并提出一种应用控制流迭代技术生成函数后置信息的算法.该算法以较低的计算复杂性得到程序中所有函数的后置信息,并可将其用于各种缺陷检测算法中.通过对不同的DTS以及其他同类产品的对比测试,结果表明,该技术可有效地缓解缺陷误报及漏报情况。
参考文献
[1] 吕金和. 函数副作用在软件静态测试中的应用[J]. 软件导刊. 2010(04)
[2] 朱剑林. 基于PAT树的程序静态分析方法[J]. 咸宁学院学报. 2007(06)
关键词:软件测试;静态测试;函数后置信息
伴随信息技术、计算机技术的飞速发展以及应用的日趋普及,软件技术的应用也越来越广泛,这也使得软件技术变得越来越复杂和繁琐。而在这些软件工作中,一旦出现质量问题,其产生的影响和造成的损失将是不可估量的,因此保障软件质量已成为目前软件工程领域中一个极为重要的内容,也是工程人员最为关心的内容。软件静态测试作为衡量软件质量的主要途径,如何保证其检测的精确度深受人们的重视与关注,函数后置信息技术就是基于这种时代背景下产生的一种测量新方法,其产生为软件测试技术指明了发展新方向。
一、静态测试概述
软件测试是目前软件工作中不可忽视的重要内容之一,是保证软件质量的主要途径。一般来说,软件故障通常都表现在计算结果的误差以及系统崩溃两个方面。其中,计算结果错误是一个很容易就被检测出来的问题;而导致系统崩溃的故障不仅无法及时的检测出来,同时其造成的后果也是非常严重的。这类故障在检测中被检测出来的概率很低,而采用静态测试技术对这些故障进行测试的话,则只需要分析源码而需要运行程序,这就避免了由于软件问题而造成的计算机故障隐患,同时对于缺陷的针对性处理优势高。
1、软件测试分析
所谓的软件测试主要指的是在工作中采用有关测试工具和测试方案对软件产品的性能、功能进行全面测试,甚至是根据编写者的不同来采取不同的测试工具来进行软件质量判断,从而实现软件性能和功能的评估。软件测试工作在软件领域有着举足轻重的地位,是设计和维护测试系统、提高软件质量的主要手段。
2、静态测试
静态测试主要是不运行被检测的软件,仅仅通过分析、检查和测量源程序的语法、结构、过程、接口等环节来检测软件中存在的问题以及正确性,对需求规格的说明书、源文件、流程图、符号执行采用找错、编审的方式来进行研究,从而实现软件质量的检测。这种方法的应用对于系统崩溃故障而言有着重要的意义,是可用于进一步差错、测试用例的一种现代化测试手段。
二、函数副作用对测试的影响
基于缺陷模式下的软件测试工作是近年来应用极为广泛的一种测试技术,是通过对程序执行信息化、抽象画处理的基础上,分析软件故障匹配模式,从而实现测试工作的正常、持续开展。对于某些函数调用分析,其函数以及子函数很有可能受到内外因素的影响而需要进行及时的修改,并且返回特定的信息。这些内容的存在极容易对调用者上下产生一定的影响,如果在静态测试工作中将这一问题忽略不计,则很有可能导致变量或者表达方式的区间值发生误差,进而造成软件测量工作的缺陷。
三、函数后置信息概述
函数后置信息软件技术在目前的软件测试工作中经常遇到,尤其是在静态测试中,更是极为常见。在工作中如果我们忽略掉函数副作用的影响,那么很容易对相关变量产生一定的影响,将会造成整个软件检测出现质量隐患。为此在这里利用函数后置信息软件检测技术就显得格外重要,将其用于区间计算和缺陷检测中所发挥出的优势十分明显。
1、后置信息描述
PFI是函数执行后对其调用者的影响,包括函数体内修改的外部变量、函数体内修改的指针型参数、引用型参数以及函数的返回值等,可描述为一个四元组M=(L,G,P,R).
L是一个集合,表示函数中直接修改的外部变量及其取值区间.若函数F中的某条语句.s修改了若干外部变量,则这些外部变量及其取值区间构成语句s的本地更改集合。
P是一个集合,表示函数参数列表中具有指针或引用特性的参数及其取值区间,它们构成函数F的可更改参数集合。
R是一个集合,若函数F中的某条语句S返回到某个变量或表达式的取值区间,则该取值区间构成语句S的返回值。
G是一个集合,若函数F及其子函数中更改了若干外部变量,则这些变量及其取值区间构成函数F的后置信息。
2、生成算法
在现有的一些故障分析系统中,采用的故障查找及区间计算的算法大多数是基于路径的,即首先产生一条路径,然后针对该路径的控制流进行分析,该类算法的复杂性至少是O(P)(P为路径数).为提高分析效率,本文应用对控制流图进行迭代的方法计算后置信息,在控制流图上对当前节点包含变量的可能取值区间进行迭代。本算法中要计算的相关变量取值区间是沿着控制流正向进行的,基本数据流方程形式为:
其中:其中,n为控制流节点;i[n]为到达控制流节点n前的所有相关变量区间集合;O[n]为到达节点n后所有相关变量区间集合;g[n]为节点n中新产生或“被改变”得到的变量区间集合;k[n]为节点n中“注销”或“被改变”的变量区间集合;P[n]为控制流中节点n的所有前驱节点集合。
3、算法分析
因为所有定义的集合是有穷的,最终一定存在1次while循环,使每个控制流节点n都满足结束条件,从而计算出当前函数的后置信息.在最坏情况下,算法的时间复杂度是O(n4),但如果按照深度优先顺序安排节点的计算顺序,则实际迭代的平均数将小于5,这样算法的效率较高,对于算法的输出结果,如果集合L(f)、G(f)、P(f)、R(f)中对应的变量存在交集,则理论上交集中的变量取值在不同后置成员中应一致,否则会影响测试的准确度,这主要依赖于函数内抽象表示及计算部分对别名问题的处理准确度。
四、结束语
目前市场上的主流静态测试产品存在的主要问题是缺陷的误报率较高,有漏报现象.为提高这种软件测试技术的精度,将PFI应用于DTS中,并提出一种应用控制流迭代技术生成函数后置信息的算法.该算法以较低的计算复杂性得到程序中所有函数的后置信息,并可将其用于各种缺陷检测算法中.通过对不同的DTS以及其他同类产品的对比测试,结果表明,该技术可有效地缓解缺陷误报及漏报情况。
参考文献
[1] 吕金和. 函数副作用在软件静态测试中的应用[J]. 软件导刊. 2010(04)
[2] 朱剑林. 基于PAT树的程序静态分析方法[J]. 咸宁学院学报. 2007(06)