软件修改影响分析对软件文护和回归测试有着重要作用,得到了业内人士的大量研究,在20多年的发展中,产生了很多软件修改影响分析方法和技术,为实践人员在实际软件文护时提供了参考。
1 面向过程的CIA 27212
关于修改影响分析的最早讨论是在1988年,[3]介绍了一种关于模型的修改影响分析技术,主要基于程序的数据流图进行研究,之后又出现了一些基于程序/功能控制流图的研究。后来,Leung和White提出了防火墙(Firewall)方法[4],防火墙可以用来将受程序修改影响的部分与其它部分分离,将受修改影响的部分放在防火墙内。1992年,他们又提出了关于数据防火墙概念[5],这种防火墙隔离的是受影响的数据相关模块。Agrawal等人使用一种名为程序切片[6]的方法,提出可以利用程序切片技术进行修改影响分析。2003年,文献[7]中提出了以状态模型为基础的切片技术,文中主要是关于系统测试方面的讨论,利用形式化语言基于模型测试来测试软件系统模型。论文网
目前常用的修改影响分析技术有基于模型的影响分析,基于静态语法依赖关系的影响分析,基于耦合关系的影响分析,基于执行的影响分析,基于修改历史库挖掘的影响分析等[1]。在传统软件中,依赖分析技术是一种主要的分析技术,一般基于程序依赖关系可以建立适当的修改影响分析模型,比如调用图,控制调用图,依赖图等。
2 面向对象的CIA
由于面向对象语言的发展,相应的回归测试技术需要得到进一步的关注和提升。在面向对象的回归测试中,修改影响分析主要研究对象是类和对象。在面向对象软件中,研究人员基于面向对象模型建立了对象关系图、模块分支图等,并提出了类防火墙的算法进行修改影响分析。Rothermel等人[8]首先在面向对象环境中使用CIA技术,他们用算法构造一个程序依赖图(PDG)来表示数据和控制依赖。Abdulla等人[9]则将防火墙概念引入到了面向对象软件的CIA过程中,将程序中的模块具体化到类和对象,把修改的和与之关联的类、对象放到防火墙内。由于类之间关系和对象之间的关系不同,所以类防火墙和对象防火墙的构造方法有所不同。YKJane等人描述了一种在类层次上的CIA方法[10],这种方法基于类防火墙但有一些差别,它是以成员函数作为一个测试单元进行修改影响分析。2001年,BG.Ryder和F.Tip[11]认为CIA能够为程序修改在语义上产生的影响有一种反馈机制,为了简化分析,他们用类、方法、域和相互关系作为修改的原子单位,利用调用图(CG)来分析面向对象的各种复杂关系。此外,还有研究人员提出通过对象依赖关系和程序切片技术等进行影响分析等方法。
总之,现在主流的方法是利用类之间的关系鉴别修改和修改影响,这样实现容易,但是重测的子集并不是最小的,一个类的修改会重测与该类相关的所有测试用例,但其中很多用例并没有涉及到修改和修改影响的部分。所以有研究将面向对象修改影响分析的粒度细化到语句级别,分析每一个语句与方法之间的数据依赖和控制依赖,但这样无疑复杂度非常高。
总的来说,经过20多年的研究,软件修改影响分析取得了丰硕的研究成果和发展,但其还远不能达到成熟的标准,修改影响分析仍在基础理论支撑、工具支持、评价机制、拓展性和跟踪性、精确性与安全性之间的权衡等方面面临一些挑战和问题,需要更加深入的研究 修改影响分析国内外研究现状:http://www.751com.cn/yanjiu/lunwen_21641.html