一种基于程序关联性分析的软件测试方法.doc
《一种基于程序关联性分析的软件测试方法.doc》由会员分享,可在线阅读,更多相关《一种基于程序关联性分析的软件测试方法.doc(12页珍藏版)》请在三一文库上搜索。
1、一种基于程序关联性分析的软件测试方法Software test approach based on analyzing program association SUN Yingying, ZHANG Yikun, YANG Kaifeng, ZHANG Baowei, XIA Hui (School of Computer Science & Engineering, Xian University of Technology, Xian710048, China) Abstract: Software testing is an importmant way to guarantee the
2、 product quality.The software testing approach based on analyzing program association established the associate connection among the modules and between the modules and tested case and it presented an expression and detecting mode. This approach is propitious to go to error fleetly, reduces testing
3、area, decreases the workload of repeatable testing and enhances the efficiency of regression testing and maintenance. Key words:association; test use case; regression testing; control flow diagram ? 0 引言 软件测试是人们发现、纠正、预防软件错误以及完善软件功能的重要手段。在实际的测试工作中,人们经常遇到这样的问题:对软件进行大规模测试后,需要修改出错的模块、添加新的模块或删除无用的模块,而这种改
4、动势必影响程序的其他部分,比如产生不一致性错误或导致软件未被修改的部分产生新的错误。如果采用传统的测试方法,就要对程序重新进行大规模测试1。但是,将所有的测试用例都重新运行一遍是费时费力和效率低下的。 针对上述问题,本文提出了一种基于程序关联性分析的测试方法。因为在软件开发各阶段或模块与模块之间存在着紧密的联系,基于这种联系建立模块与模块以及模块与测试用例之间的关联关系,加强关联性的分析与检测来实现软件错误和缺陷的快速跟踪和定位,以消除软件维护和软件修改后回归测试的盲目性,提高工作效率。 1 基于关联模式的软件测试基本思路 关联性是指软件模块与其相关的其他部分之间存在的相互联系和相互制约关系,
5、在软件测试中主要体现为模块和模块间的关联以及模块与测试用例间的关联。基于关联模式的软件测试方法主要是将这些关联关系用形式化的方法表述出来,并将其运用到测试方法中。 基于关联模式的软件测试模型是非线性的并具有正向和逆向关联的能力,主要思想是将需求文档、设计文档、功能模块、源代码和测试用例关联起来,这样就可以确定软件开发生命周期每个阶段产生的错误与其他阶段的关联性,保证整个系统从需求分析、设计、编码、测试到维护阶段的一致性修改。而且使用这种模型使得从任一阶段向其他任意阶段进行跟踪成为可能。 当对一个已经测试完成的程序进行了简单的修改后,程序员可以依据正向关联来判断修改可能会带来的副作用。另一方面,
6、如果在程序测试过程中发现了某个错误,一定要知道是谁制造了这个错误,也就是前面的哪个语句或模块产生了这个错误,并如何传播到发现它的地方,这就需要逆向关联。在修改和回归测试等场合,逆向关联十分有用。 2 关联性分析 21 模块间的关联 通过建立模块间的关联,就可以在某个模块被修改后根据相应的模块关联图检测与该模块相关的其他模块,以便程序员检查这些模块是否因受到被修改模块的影响而需要进行相应的修改,以确保克服修改程序后引起的不一致性;也可以在测试阶段将与错误相关的模块联系起来,根据反馈的信息进行测试和维护。例如在软件修改或维护过程中一些正被修改或被替代的模块,均可以作为开始进行程序分析和测试的起点。
7、 本文已建立程序的模块关联图如图1所示。其中模块B10产生错误需要修改,则根据关联图找出与B10直接相关的模块为B3、B7、B8和B13,如图2所示。然后确定它们是否会因此修改而受到影响,那些与此模块不相关的模块则忽略。 22 模块与测试用例之间的关联 当软件系统修改后,为了保证系统的正确性以及修改不会带来副作用,需要对其进行回归测试。此时已经存在一些测试用例供选择,必要时还需要设计新的测试用例。对于这些测试用例,如果完全重新测试会消耗大量的资源,并且大部分情况下只有一部分代码会受到修改的影响,因此只有那些受影响的代码需要重新测试。 建立模块与测试用例之间的关联关系可以帮助笔者找出与被测或被修
8、改模块相关的测试用例,以此为参考信息来选择重新测试的测试用例集,简化测试过程。当此模块的修改导致现有的测试用例不能对程序进行充分测试时,就需要设计新的测试用例。 例如有三个测试用例和已划分为m个模块的源程序,它们与模块之间的关联关系如图3所示。对于某个测试用例testcase2,根据模块与测试用例之间的关联关系,可以找出与它相关的模块共有六个,如图4所示。同理对于某一模块B9,可以找出与之相关的测试用例如图5所示。当笔者修改模块B9后,只需运行testcase1和testcase3即可重新测试,而无须运行所有的测试用例;对于模块B5,没有任何测试用例与之关联,就要设计新的测试用例重新测试。 3
9、 关联性的表达和检测 31 建立模块间的关联关系 建立模块间的关联关系首先对源程序文件进行静态分析,将源程序划分为基本模块,分析其间的关系并形成控制流图。它描述了模块间的数据依赖和控制依赖关系,能提供对目标系统一个全面静态的全局认识,帮助用户更好地理解被测软件。 基本模块是构造控制流图的基础。在程序中,通常有一些连续的多行代码,它们形成程序中一个个相对独立的构造,并且只能通过构造的第一条语句进入,通过最后一条语句离开2,因此,将基本模块定义如下: 定义1一个基本模块就是一组连贯的语句。其中的控制流在模块开始时进入,在模块结束时离开,而没有在除模块结束之外的地方停止或出现分支的可能。 每个基本模
10、块有且只有一个入口和出口,控制流只能从模块的入口进入,从模块的出口离开。通常,将程序的入口点、过程的第一条指令、分支指令的目标指令以及紧跟分支指令的指令作为特征指令用来识别和构造基本模块。这样,基本模块的构造步骤可以简化为: a)识别程序中的特征指令; b)包含所有后续指令直到下一个特征指令。 构造基本模块的算法描述如下: a)第一条指令是特征指令; b)对于i从1n,如果指令i是一个分支,则将指令i的所有潜在的目标指令集合加到特征指令集中; c)对每一个特征指令x,使得基本模块的列表blockx=x,i=x+1; d)对于in且i不是特征指令,使blockx=blockxi,i加1。 划分了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 基于 程序 关联性 分析 软件 测试 方法
链接地址:https://www.31doc.com/p-1592059.html