测试用例推定方法及系统的制作方法

文档序号:6492699阅读:187来源:国知局
测试用例推定方法及系统的制作方法
【专利摘要】本发明涉及软件测试【技术领域】,提供了一种测试用例推定方法及系统。该方法包括步骤:S1,获得测试用例与执行方法的关系;S2,获得新版本类包中方法间的调用关系图;S3,比较新旧两个测试版本,获得发生了变化的方法项名称;S4,利用步骤S2中获得的调用关系图,向上反算调用过所述发生了变化的方法项的方法名称;S5,利用步骤S1中获得的所述测试用例与执行方法的关系,推算出需要测试的用例信息。在本发明的技术方案中,通过新旧版本的比对和调用关系的反算,获得了与修改项相关联的方法,从而自动发现回归测试中需要进行测试的用例,提高了回归测试的执行效率。
【专利说明】测试用例推定方法及系统
【技术领域】
[0001]本发明涉及软件测试【技术领域】,特别涉及一种测试用例推定方法及系统。
【背景技术】
[0002]由于计算机软件程序主要由人工开发完成,通常还会由多名开发人员共同完成,不可避免地会存在各类意想不到的错误。因此,软件产品在正式发布前要经过多次测试和修改,软件测试的最根本目的就是在软件产品发布前尽可能多地发现软件中的缺陷,以保证正式产品的质量。其中黑盒测试是从用户角度出发,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序的输入输出进行测试,黑盒测试主要针对软件界面和软件功能进行测试,是最实用的软件测试方式之一。
[0003]现有的软件测试理论已经基本成熟,绝大多数测试方式均可以通过自动手段来实现测试过程,对于黑盒测试来说,如果能为每个测试过程选择适当的测试用例,可有效地设计出高效的自动测试过程。但是,随着待测试软件系统的日益庞大,测试的工作量呈指数级增长,为软件黑盒测试工作带来了很多新的问题。比如大型软件在发布前后均会进行多次修改BUG (或增加功能)的版本更替,每次修改都会给软件程序带来一系列的变化;相应地,如何确定版本更替过程中所产生的变化,如何针对这些变化来筛选测试用例,均是黑盒测试需要考虑的问题。
[0004]现有技术中,针对上述问题目前的通常做法是在版本更替后对前一版本的BUG进行回归测试,重复以前的全部或部分的相同测试。但是现有的黑盒回归测试相对而言比较主观,只是为测试用例划分了优先级,如果时间允许就进行全集执行,如果时间不允许就按优先级执行优先级高的测试。但实际情况中,软件版本更替会产生许多新的未知问题,如修改BUG的同时会引出的新BUG,因此测试时不仅需要检测前一版本的BUG是否已修复,还要检测更替后软件中是否存在新的BUG。为达到此目的,现有的回归测试方法需要对已经测试的用例全部进行复测,导致测试工作的循环往复,效率不高。

【发明内容】

[0005](一)要解决的技术问题
[0006]为了解决现有技术中回归测试效率低的问题,本发明提供了一种测试用例推定方法及系统,通过筛选测试用例,避免了无关的重复测试。
[0007](二)技术方案
[0008]为解决上述技术问题,本发明采用如下的技术方案实施:
[0009]首先,本发明提供一种测试用例推定方法,所述方法包括步骤:
[0010]SI,获得测试用例与执行方法的关系;
[0011]S2,获得新测试版本类包中执行方法间的调用关系图;
[0012]S3,比较新旧两个测试版本类包,获得发生了变化的执行方法的名称;
[0013]S4,利用步骤S2中获得的调用关系图,向上反算调用过所述发生了变化的执行方法的执行方法的名称;
[0014]S5,利用步骤SI中获得的所述测试用例与执行方法的关系,推算出需要测试的测试用例的信息。
[0015]优选地,所述步骤S1、S2和S3可并行执行。
[0016]优选地,步骤SI中,在获得测试用例与执行方法的关系之前,还包括:将需要记录的类名以正则表达式的形式作为参数传入,使用自动测试工具或者手动测试方式执行测试用例;
[0017]所述获得测试用例与执行方法的关系的方法为:通过SOCKET通信获得所述测试用例与执行方法的关系。
[0018]优选地,步骤S2中,获得新测试版本类包中执行方法间的调用关系图的方法为:通过遍历类获得类的字节码,对所述字节码进行操作,获得新测试版本类包中执行方法间的所述调用关系图。
[0019]优选地,步骤S3的方法为:比较提交测试的新旧两个测试版本类包,通过遍历操作列出有改动的类和新增的类,获得类的字节码,通过对字节码的操作,获得并列出改动及新增的方法名称。
[0020]优选地,步骤S4的方法为:以所述发生了变化的执行方法的名称作为输入项,根据步骤S2获得的调用关系图,按照预定义的反算级次获得执行方法调用顺序向上对应级次里的所有执行方法的名称。
[0021]优选地,所述预定义的反算级次为三级。
[0022]优选地,步骤S5之后还包括步骤:
[0023]S6,利用所述需要测试的测试用例的信息,在测试用例管理系统中查找出对应的测试用例,将其分离从而直接进行测试。
[0024]另一方面,本发明还同时提供一种测试用例推定系统,所述系统包括:
[0025]执行分析模块,用于获得测试用例与执行方法的关系;
[0026]调用分析模块,用于获得新测试版本类包中执行方法间的调用关系图;
[0027]比较模块,用于比较新旧两个测试版本类包,获得发生了变化的执行方法的名称;
[0028]反算模块,用于利用调用分析模块中获得的调用关系图,向上反算调用过所述发生了变化的执行方法的执行方法的名称;
[0029]推定模块,用于利用执行分析模块中获得的所述测试用例与执行方法的关系,推算出需要测试的测试用例的信息。
[0030]优选地,所述系统还包括:分离测试模块,用于通过所述需要测试的测试用例的信息在测试用例管理系统中查找出对应的测试用例,将其分离从而直接进行测试。
[0031](三)有益效果
[0032]在本发明的技术方案中,通过新旧版本的比对和调用关系的反算,获得了与修改项相关联的方法,从而自动发现回归测试中需要进行测试的用例,提高了回归测试的执行效率。
【专利附图】

【附图说明】[0033]图1为本发明中测试用例推定方法的流程示意图;
[0034]图2为本发明的一个实施例中java示例待测试包的结构示意图;
[0035]图3为本发明的一个实施例中java示例的原始类代码;
[0036]图4为本发明的一个实施例中java示例的版本更替后新类代码;
[0037]图5为本发明的一个实施例中java不例的XML格式表不的调用关系图;
[0038]图6为本发明的一个实施例中java示例的测试用例与执行方法的关系示意图;
[0039]图7为本发明的一个实施例中java不例的XML格式表不的输出结果。
【具体实施方式】
[0040]下面将结合各附图对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]回归测试面对的主要问题是软件程序代码修改后可能引起的连锁反应,即修改一处代码可能对调用该段代码的其他方法、实例等造成不确定的影响。为避免这类影响成为软件中的新BUG,回归测试不能只针对原BUG所在用例进行测试,而必须对全部测试用例进行复测。但实际情况中,代码修改可能涉及到的测试用例通常很少,现有的复测方式往往对很多无关用例进行了重复测试,导致了现有的回归测试方法效率低下,浪费了大量时间和物质成本。
[0042]由于现有技术中并不存在针对黑盒测试的用例分离方法,或者即使存在独立测试用例的方式,也只能通过测试人员的主观判断来确定用例的优先级,因而无法有效地从全部用例中自动发现修改相关的用例来进行针对性的测试。本发明针对这种情况,为回归测试提供了一种辅助决策工具,帮助测试人员自动发现实际需要测试的用例,从而可以分离用例进行独立测试,避免了无关用例的重复测试,加快了测试速度,提高了测试效率。
[0043]在本发明的实施例中,首先提供了一种测试用例推定方法,如图1所示,该方法具体包括步骤:
[0044]SI,获得测试用例与执行方法的关系;
[0045]S2,获得新测试版本类包中执行方法间的调用关系图;
[0046]S3,比较新旧两个测试版本类包,获得发生了变化的执行方法的名称;
[0047]S4,利用步骤S2中获得的调用关系图,向上反算调用过所述发生了变化的执行方法的执行方法的名称;
[0048]S5,利用步骤SI中获得的所述测试用例与执行方法的关系,推算出需要测试的测试用例的信息。
[0049]其中,上述方法的步骤S1、S2和S3可并行执行。为便于随时读取和使用,步骤SI中获得的测试用例与执行方法的关系可以存储在数据库中或以XML文档方式存储;步骤S2中获得的调用关系图也可存储为XML文档;步骤S5最后获得的需要测试的测试用例的信息也可以XML文档形式存储。
[0050]下面更进一步地以java程序为例具体说明本发明方法的各个步骤是如何实现的。首先,在给出的java示例中,待测试包的结构如图2所示,在待测试包testpackage下存在两个类TestClassA和TestClassB的代码。版本更替前的原始代码如图3所示,更替后的新代码如图4所示,从示例的代码可以看出,包中两个类的关系为=TestClassB类中的方法methodD中生成了一个TestClassA类的实例ta并调用了 TestClassA类中的方法methodB ;同时TestClassB类中的另一方法methodE进一步调用了方法methodD。而版本更替时修改了 TestClassA类中的方法methodB。当然,上述内容是人工阅读代码所识别到的信息,下面将进一步介绍如何通过本发明提供的辅助决策工具来自动发现回归测试时需要测试的测试用例的信息。
[0051]具体地,步骤SI中,在获得测试用例与执行方法的关系之前,还包括:本发明提供的辅助决策工具会随java —同启动,将需要记录的类名以正则表达式的形式作为参数传入,测试人员使用自动测试工具或者手动测试方式执行测试用例。另外,该步骤中,获得测试用例与执行方法的关系的方法为:通过SOCKET通信获得测试用例与执行方法的关系。这里的SOCKET通信为现有技术。
[0052]步骤S2中,获得新测试版本类包中执行方法间的调用关系图的方法为:在运行辅助决策工具后,通过遍历类获得类的字节码,对字节码进行操作,获得新测试版本类包中执行方法间的调用关系图。该步骤中,以XML格式文档存储的上述示例的调用关系图如图5所示,该XML文档以结构化的方式表述了上一段文字中所述的包中两个类的关系。
[0053]随后,步骤S3的方法为:比较提交测试的新旧两个测试版本类包,通过遍历操作列出有改动的类和新增的类,获得类的字节码,通过对字节码的操作,获得并列出改动及新增的方法名称,这样就获得了发生了变化的执行方法的名称。
[0054]步骤S4的方法为:以发生了变化的执行方法的名称作为输入项,根据步骤S2获得的调用关系图,按照预定义的反算级次获得执行方法调用顺序向上对应级次里的所有执行方法的名称,也就是向上反算调用过发生了变化的执行方法的执行方法的名称。该步骤中,反算级次的一个示例为:假设方法a中调用了方法b,方法b中调用了方法C,那么方法c反算一级是方法b,反算两级是方法a。本发明中预定义的反算级次默认是三级,本领域相关技术人员应能理解,目前预定义的级次是预估值,通常情况下反算三级应该可以反映出修改程序对相关程序的影响,实际情况中也可以根据具体的程序复杂度来调整该预定义的反算级次。
[0055]步骤S5中,利用步骤SI中获得的所述测试用例与执行方法的关系,推算出需要测试的测试用例的信息。比如,假定某个执行了 methodE方法,步骤SI中获得测试用例与执行方法的关系数测试用例teSt_caSe_l据库中结果如图6所示,步骤S4反算出了改动的方法methodB被methodD和methodE所调用,此时就可以推算出测试用例test_case_l涉及到了 TestClassA类中改动的方法methodB,是必须测试的用例,将其输出给测试人员并自动设置其优先级为最高优先级(priority=〃l"),输出的结果如图7所示。
[0056]更进一步地,在步骤S5得到需要测试的测试用例的信息后,还包括步骤S6:利用需要测试的测试用例的信息,在测试用例管理系统中查找出对应的测试用例,将其分离从而直接进行测试。比如图7中展示的用例ID(case id),该用例ID与测试用例管理系统中的Case_id字段相关联,通过该用例ID就可以在测试用例管理系统中查找出对应的测试用例,从而将其分离出直接用于测试。通过该方式,本发明的方法自动发现了需要测试的用例并将其分离进行独立测试,避免了全部用例的重复测试,提高了回归测试的执行效率。[0057]此外,本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是=ROM/RAM、磁碟、光盘、存储卡等。因此,与本发明的方法相对应的,本发明还同时包括一种测试用例推定,该系统包括:
[0058]执行分析模块,用于获得测试用例与执行方法的关系;
[0059]调用分析模块,用于获得新测试版本类包中执行方法间的调用关系图;
[0060]比较模块,用于比较新旧两个测试版本类包,获得发生了变化的执行方法的名称;
[0061]反算模块,用于利用调用分析模块中获得的调用关系图,向上反算调用过所述发生了变化的执行方法的执行方法的名称;
[0062]推定模块,用于利用执行分析模块中获得的所述测试用例与执行方法的关系,推算出需要测试的测试用例的信息。
[0063]更进一步地,该系统还包括:分离测试模块,用于通过所述需要测试的测试用例的信息在测试用例管理系统中查找出对应的测试用例,将其分离从而直接进行测试。
[0064]综上所述,在本发明的技术方案中,通过新旧版本的比对和调用关系的反算,获得了与修改项相关联的方法,从而自动发现回归测试中需要进行测试的用例。本发明的技术方案可以为测试人员筛选测试用例提供有力的参考,同时利用输出的调用关系图,可以使测试人员更好地理解系统的执行过程。最重要的是,本发明实现了测试用例的自动分析、发现和分离,避免了无关用例的重复测试,在保证准确性的前提下加快了测试速度,提高了测试的执行效率。
[0065]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关【技术领域】的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【权利要求】
1.一种测试用例推定方法,其特征在于,所述方法包括步骤: Si,获得测试用例与执行方法的关系; S2,获得新测试版本类包中执行方法间的调用关系图; S3,比较新旧两个测试版本类包,获得发生了变化的执行方法的名称; S4,利用步骤S2中获得的调用关系图,向上反算调用过所述发生了变化的执行方法的执行方法的名称; S5,利用步骤SI中获得的所述测试用例与执行方法的关系,推算出需要测试的测试用例的信息。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1、S2和S3可并行执行。
3.根据权利要求1所述的方法,其特征在于,步骤SI中,在获得测试用例与执行方法的关系之前,还包括:将需要记录的类名以正则表达式的形式作为参数传入,使用自动测试工具或者手动测试方式执行测试用例; 所述获得测试用例与执行方法的关系的方法为:通过SOCKET通信获得所述测试用例与执行方法的关系。
4.根据权利要求1所述的方法,其特征在于,步骤S2中,获得新测试版本类包中执行方法间的调用关系图的方法为:通过遍历类获得类的字节码,对所述字节码进行操作,获得新测试版本类包中执行方法间的所述调用关系图。
5.根据权利要求1所述的方法,其特征在于,步骤S3的方法为:比较提交测试的新旧两个测试版本类包,通过遍历操作列出有改动的类和新增的类,获得类的字节码,通过对字节码的操作,获得并列出改动及新增的方法名称。
6.根据权利要求1所述的方法,其特征在于,步骤S4的方法为:以所述发生了变化的执行方法的名称作为输入项,根据步骤S2获得的调用关系图,按照预定义的反算级次获得执行方法调用顺序向上对应级次里的所有执行方法的名称。
7.根据权利要求6所述的方法,其特征在于,所述预定义的反算级次为三级。
8.根据权利要求1-7中任一项所述的方法,其特征在于,步骤S5之后还包括步骤: S6,利用所述需要测试的测试用例的信息,在测试用例管理系统中查找出对应的测试用例,将其分离从而直接进行测试。
9.一种测试用例推定系统,其特征在于,所述系统包括: 执行分析模块,用于获得测试用例与执行方法的关系; 调用分析模块,用于获得新测试版本类包中执行方法间的调用关系图; 比较模块,用于比较新旧两个测试版本类包,获得发生了变化的执行方法的名称; 反算模块,用于利用调用分析模块中获得的调用关系图,向上反算调用过所述发生了变化的执行方法的执行方法的名称; 推定模块,用于利用执行分析模块中获得的所述测试用例与执行方法的关系,推算出需要测试的测试用例的信息。
10.根据权利要求9所述的系统,其特征在于,所述系统还包括:分离测试模块,用于通过所述需要测试的测试用例的信息在测试用例管理系统中查找出对应的测试用例,将其分离从而直接进行测试。
【文档编号】G06F11/36GK103870384SQ201210533665
【公开日】2014年6月18日 申请日期:2012年12月11日 优先权日:2012年12月11日
【发明者】吴旭, 胡骥 申请人:航天信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1