论文部分内容阅读
软件系统规模和复杂性的不断增长,对软件质量保证技术提出了新的挑战。演化式软件开发过程被广泛用于控制软件系统的复杂性,它将复杂软件系统的开发过程分解成为一系列连续的迭代,在每次迭代中结合用户对已有软件系统的反馈和新的需求对软件系统的功能进行修正和增强。针对这类不断演化中的复杂软件系统,回归测试是保证其质量最重要的技术手段。与一般测试过程相比,回归测试过程即需要确认修改没有对软件功能和行为造成不利的影响,又需要确认新的功能已经被正确地实现,因而更加复杂,需要更多的测试资源。如何在不影响测试质量的基础上,提高回归测试的效率,降低测试开销,一直是回归测试技术研究的主要问题。针对这一问题,本文基于回归测试用例选取技术,研究了为回归测试自动生成测试用例的技术。引入活动图,对修改前后的软件进行建模,并通过对修改前后的模型进行自动比较,识别出软件修改的部分,从而选取出可重用用例并同时为修改部分生成新用例,最终生成有效的回归测试用例集合。进一步地,研究了基于修改后软件的动态运行轨迹,自动修订过时模型,生成修改后软件新模型的方法。以上两种方法结合在一起,就可以在很少人工干预的情况下,为回归测试自动地生成用例集合。具体来说,本文的主要工作如下:(1)提出了一种基于UML活动图比较的回归测试用例生成方法。该方法使用活动图作为描述程序内部动态行为的模型,通过比较程序在修改前后不同版本的活动图模型,来找出程序修改前后的行为变化,以及对应的受影响路径。利用程序插桩技术与活动图路径覆盖分析技术,实际测试用例到活动图中路径之间的追踪关系能够自动地建立起来。根据找出的受影响路径以及所建立的追踪关系,覆盖受影响路径的回归测试用例能够自动地被生成出来。(2)为了进一步减少对人工模型更新的依赖,本文在前一种方法的基础之上进一步提出了基于活动图自动修订的回归测试用例生成方法。在只提供原始版本的活动图模型的情况下,它能够依据程序当前的执行轨迹对模型进行自动修订,使得修订完成的活动图模型符合被测程序的当前行为。而回归测试用例生成工作也能在修订完成的活动图的基础上进行。通过实现活动图模型的自动更新,能够省去人工模型更新的工作开销,有效地提高回归测试的效率。(3)基于上述研究工作,开发出了原型工具并进行了实例研究。实验表明:本文所提出的基于UML活动图比较的回归测试用例生成方法能够有效地找出活动图发生变化时受影响的路径,并据此进行回归测试用例的生成,实现整个回归测试用例生成过程的自动化;而基于活动图修订的回归测试用例生成方法能够依照程序当前行为正确地对原始版本活动图进行自动修订,并将修订后的活动图模型用以指导接下来的回归测试工作、实例研究证明了本文方法的实用性和有效性。