首页 / 专利库 / 软件 / 软件回归测试 / 一种确定需要回归测试的测试用例的方法和装置

一种确定需要回归测试的测试用例的方法和装置

阅读:722发布:2020-05-20

专利汇可以提供一种确定需要回归测试的测试用例的方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供一种确定需要回归测试的测试 用例 的方法和装置,涉及 软件 测试技术领域。能够提高确定需要回归测试的测试用例的效率以及准确度。其方法为:获取待测版本 软件代码 和基准版本软件代码;比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。,下面是一种确定需要回归测试的测试用例的方法和装置专利的具体信息内容。

1.一种确定需要回归测试的测试用例的方法,其特征在于,所述方法包括:
获取待测版本软件代码和基准版本软件代码
比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个所述函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例;
其中,所述根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例,包括:
根据所述变更的函数列表中每个函数,分别查询预先生成的函数和测试用例的对应关系,获取变更的函数列表中每个函数关联的测试用例,将每个函数关联的测试用例的并集作为需要回归测试的测试用例;
对于第三函数,查询预先生成的函数和测试用例的对应关系,获取第三函数关联的测试用例,包括:
在所述函数列表中,在所述第三函数的相邻函数中取N个函数,分别根据所述N个函数以及所述第三函数查询预先生成的函数和测试用例的对应关系,分别获取所述N个函数以及所述第三函数对应的测试用例;
将所述N个函数以及所述第三函数对应的测试用例的交集作为所述第三函数或者所述N个函数中任意一个函数关联的测试用例;
其中,所述第三函数为所述变更的函数列表中任意一个函数。
2.根据权利要求1所述的方法,其特征在于,所述比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,包括:
将所述待测版本软件代码和基准版本软件代码进行差异化比较,获取所述待测版本软件代码相对于所述基准版本软件代码变更的行号;
对所述待测版本软件代码进行静态语法分析,获取所述待测版本软件的函数与起始行号以及结束行号的对应关系;
根据所述待测版本软件代码相对于所述基准版本软件代码变更的行号,查询所述待测版本软件的函数与起始行号以及结束行号的对应关系,获取所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表。
3.根据权利要求1所述的方法,其特征在于,在所述比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表之前,所述方法还包括:
对所述基准版本软件代码进行静态语法分析,根据预设规则定义所述基准版本软件代码的函数,并获取定义的每个函数对应的起始行号以及结束行号;
在所述基准版本软件代码的每个函数对应的起始行添加插桩代码;
执行添加插桩代码后的基准版本软件代码的测试用例,并采集每个测试用例执行期间的插桩代码的运行记录;
根据每个测试用例执行期间的插桩代码的运行记录,生成函数和测试用例的对应关系。
4.根据权利要求1-3任一项所述的方法,其特征在于,当所述软件代码的语言为面向对象的语言时,所述函数根据预设规则定义包括:所述函数根据所述函数所属的文件包的包名,所述函数所属的类的类名,所述函数的函数名以及所述函数的函数参数类型名定义;
或者,当所述软件代码的语言为非面向对象的语言时,所述函数根据预设规则定义,包括:所述函数根据所述函数的文件路径,所述函数所属的文件的文件名以及所述函数的函数名定义。
5.一种需要回归测试的测试用例的装置,其特征在于,所述装置包括:
软件代码获取模,用于获取待测版本软件代码和基准版本软件代码;
变更函数列表获取模块,用于比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个所述函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
测试用例获取模块,用于根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例;
其中,所述测试用例获取模块具体用于:根据所述变更的函数列表中每个函数,分别查询预先生成的函数和测试用例的对应关系,获取变更的函数列表中每个函数关联的测试用例,将每个函数关联的测试用例的并集作为需要回归测试的测试用例;
对于第三函数,所述测试用例获取模块还用于,在所述函数列表中,在所述第三函数的相邻函数中取N个函数,分别根据所述N个函数以及所述第三函数查询预先生成的函数和测试用例的对应关系,分别获取所述N个函数以及所述第三函数对应的测试用例;将所述N个函数以及所述第三函数对应的测试用例的交集作为所述第三函数或者所述N个函数中任意一个函数关联的测试用例;其中,所述第三函数为所述变更的函数列表中任意一个函数。
6.根据权利要求5所述的装置,其特征在于,所述变更函数列表获取模块,包括:
差异化比较单元,用于将所述待测版本软件代码和基准版本软件代码进行差异化比较,获取所述待测版本软件代码相对于所述基准版本软件代码变更的行号;
静态语法分析单元,用于对所述待测版本软件代码进行静态语法分析,获取所述待测版本软件的函数与起始行号以及结束行号的对应关系;
查询单元,用于根据所述待测版本软件代码相对于所述基准版本软件代码变更的行号,查询所述待测版本软件的函数与起始行号以及结束行号的对应关系,获取所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表。
7.根据权利要求6所述的装置,其特征在于,
所述静态语法分析单元还用于:对所述基准版本软件代码进行静态语法分析,根据预设规则定义所述基准版本软件代码的函数,并获取定义的每个函数对应的起始行号以及结束行号;
所述装置还包括:插桩模块,用于在所述基准版本软件代码的每个函数对应的起始行添加插桩代码;
采集模块,用于执行添加插桩代码后的基准版本软件代码的测试用例,并采集每个测试用例执行期间的插桩代码的运行记录;
函数和测试用例对应关系生成模块,用于根据每个测试用例执行期间的插桩代码的运行记录,生成函数和测试用例的对应关系。
8.根据权利要求6-7任一项所述的装置,其特征在于,所述静态语法分析单元用于,当所述软件代码的语言为面向对象的语言时,根据函数所属的文件包的包名,所述函数所属的类的类名,所述函数的函数名以及所述函数的函数参数类型名定义所述函数;
或者,当所述软件代码的语言为非面向对象的语言时,根据函数的文件路径,所述函数所属的文件的文件名以及所述函数的函数名定义所述函数。

说明书全文

一种确定需要回归测试的测试用例的方法和装置

技术领域

[0001] 本发明涉及软件测试技术领域,尤其涉及一种确定需要回归测试的测试用例的方法和装置。

背景技术

[0002] 随着软件规模的不断扩大,回归测试在测试中占据越来越大的比例。回归测试是指修改了旧代码后,重新进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。那么如何合理的确认回归测试的范围,如何在对质量提供保证的同时提高测试的效率,就成为人们很关注的话题。就目前而言,通常都是通过测试人员的经验来确定回归测试的范围。
[0003] 发明人在发明过程中,发现现有的技术方案至少存在以下缺点:
[0004] 测试回归的范围主观因素很大,范围估计太小会有可能出现测试遗漏和质量问题,范围估计面太大会降低测试效率,很大程度上依赖于测试人员本身的素质和对代码的了解。

发明内容

[0005] 本发明的实施例提供一种确定需要回归测试的测试用例的方法和装置,以提高确定需要回归测试的测试用例的效率以及准确度。
[0006] 为达到上述目的,本发明的实施例采用如下技术方案:
[0007] 一方面,本发明实施例提供了一种确定需要回归测试的测试用例的方法,所述方法包括:
[0008] 获取待测版本软件代码和基准版本软件代码;
[0009] 比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个所述函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
[0010] 根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
[0011] 另一方面,本发明实施例还提供了一种确定需要回归测试的测试用例的装置,所述装置包括:
[0012] 软件代码获取模,用于获取待测版本软件代码和基准版本软件代码;
[0013] 变更函数列表获取模块,用于比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个所述函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
[0014] 测试用例获取模块,用于根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
[0015] 由此可见,本发明实施例提供的确定需要回归测试的测试用例的方法和装置,根据待测版本软件代码中相对于基准版本软件代码变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例,避免通过测试人员的经验来确认回归测试的范围导致的效率低下的问题,而且,一方面,能够保证获取的测试用例包含发生变化的函数影响到的测试用例,避免可能出现测试遗漏和质量问题;另一方面,因为函数是根据预设规则定义的,且每个函数在待测版本软件代码或者基准版本软件代码中互不相同,提高函数定义的精度,减小了获取测试用例的冗余。所以,可以提高确定需要回归测试的测试用例的效率以及准确度。附图说明
[0016] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017] 图1为本发明实施例提供的一种应用场景示意图;
[0018] 图2为本发明实施例提供的一种后台服务器硬件结构图;
[0019] 图3为本发明实施例提供的一种确定需要回归测试的测试用例的方法流程图
[0020] 图4为图3中步骤302的流程图;
[0021] 图5为本发明实施例提供的另一种确定需要回归测试的测试用例的方法流程图;
[0022] 图6为本发明实施例提供的一种确定需要回归测试的测试用例的装置框图
[0023] 图7为本发明实施例提供的另一种确定需要回归测试的测试用例的装置框图;
[0024] 图8为本发明实施例提供的又一种确定需要回归测试的测试用例的装置框图。

具体实施方式

[0025] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026] 如图1所示,示出了本发明确定需要回归测试的测试用例的方法的实施环境的网络架构。该实施环境的系统可包括用户终端10、后台服务器20及版本管理服务器30。其中,后台服务器20与版本管理服务器30形成无线或有线连接。版本管理服务器30中存储有软件版本信息,例如软件版本号、不同版本软件的源代码文件等。后台服务器20可以通过版本管理服务器30获取待测版本软件代码和基准版本软件代码,当然,也可以接收用户输入的待测版本软件代码和基准版本软件代码。后台服务器20用于执行确定需要回归测试的测试用例的方法,并获取需要进行回归测试的测试用例。用户终端10与后台服务器20形成无线或有线连接,且用户终端10上具有相应的应用客户端或网页客户端,用户终端10通过应用客户端或网页客户端接收用户输入的测试请求,并将该测试请求发送给后台服务器20,从而可以触发后台服务器20执行确定需要回归测试的测试用例的方法,并获取需要进行回归测试的测试用例,用户终端10通过应用客户端或网页客户端从后台服务器20获取需要进行回归测试的测试用例,并对该需要进行回归测试的测试用例进行回归测试。其中,用户终端10可以为PC、手机、iPAD,平板电脑笔记本电脑个人数字助理、可穿戴式移动电子终端如智能手表、眼镜等终端。
[0027] 图2示出了上述后台服务器10的一种硬件结构图。如图2所示,该后台服务器20包括一个或多个(图中仅示出一个)处理器201、存储器202、用户接口203、网络接口204以及通信总线205。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对后台服务器20的结构造成限定。例如,后台服务器20还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
[0028] 通信总线205用于后台服务器20中各组成部件之间的通信。用户接口203用于插接外部设备,例如触摸屏鼠标键盘等,以接收用户输入的信息。网络接口204用于后台服务器20与外部进行互相通信,该网络接口204主要包括有线接口和无线接口,例如RS232模块、射频模块、WIFI模块等等。
[0029] 存储器202可用于存储软件程序以及模块,数据库,如本发明实施例中的确定需要回归测试的测试用例的方法及装置对应的程序指令/模块。存储器202可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器202可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至后台服务器20。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0030] 处理器201通过运行存储在存储器202内的软件程序以及模块,从而执行各种功能应用以及数据处理,例如,处理器201通过调用存储器202中的确定需要回归测试的测试用例的应用程序,以实现快速而准确的确定需要进行回归测试的测试用例。
[0031] 图3为第一实施例提供的确定需要回归测试的测试用例的方法的流程图。如图3所示,该方法包括:
[0032] 步骤301、后台服务器获取待测版本软件代码和基准版本软件代码。
[0033] 其中,基准版本软件代码为预先采集测试用例和函数的对应关系的依据,优选的,基准版本软件代码为功能较稳定的一个版本的软件代码。
[0034] 其中,后台服务器20可以接收用户设备10发送的待测软件的测试请求,一种实现方式中,该测试请求中包含待测版本软件代码和基准版本软件代码;另一种实现方式中,该测试请求中包含待测版本软件版本号和基准版本软件版本号;再一种实现方式中,该测试请求中包含待测版本软件和基准版本软件中其中一个版本号,以及另外一个的软件代码。
[0035] 具体的,测试人员可以通过向用户设备10的应用客户端或者网页客户端输入同一个软件的两个不同版本的版本号或者软件代码,以发起待测软件的测试请求,其中一个版本为基准版本,另一个版本为待测版本。用户设备10的应用客户端或者网页客户端向后台服务器20转发测试请求。后台服务器20接收到测试请求后,若该测试请求中包含待测版本软件代码和基准版本软件代码,则直接从该请求中获取待测版本软件代码和基准版本软件代码;若该测试请求中包含待测版本软件版本号和基准版本软件版本号;则从该测试请求中获取待测版本软件版本号和基准版本软件版本号,并从版本管理服务器30中获取待测版本软件版本代码和基准版本软件版本代码;若该测试请求中包含待测版本软件和基准版本软件中其中一个版本号,以及另外一个的软件代码,则从该测试请求中获取该软件代码以及版本号,并从版本管理服务器30中获取该版本号的代码。
[0036] 步骤302、比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同。
[0037] 为了对软件代码中的函数进行更精确的定义,本发明实施例中根据预设规则定义的函数在软件代码中互不相同,换言之,定义的任意两个函数均是可以区分的,这样可以更精确的确定函数与测试用例之间的对应关系。
[0038] 一种可实现的方式为:当软件代码的语言为面向对象的语言时,例如,JAVA,C++等,函数根据预设规则定义可以包括:函数根据该函数所属的文件包的包名,该函数所属的类的类名,该函数的函数名以及该函数的函数参数类型名定义。
[0039] 例如,定义的函数:com.sample.class1.func1(int,int),包含4部分,分别为:
[0040] 1.包名(com.sample);
[0041] 2.类名(class1);
[0042] 3.函数名(func1);
[0043] 4.函数参数类型名(int,int),用于区别重载(overload)函数。
[0044] 另一种可实现的方式为:当软件代码的语言为非面向对象的语言时,例如Shell脚本,根据预设规则定义函数可以包括:根据函数的文件路径,函数所属的文件的文件名以及函数的函数名定义函数。
[0045] 例如,定义的函数:Src.filename.foo,包含3部分,分别为:
[0046] 1.路径即目录src;
[0047] 2.文件名filename;
[0048] 3.函数名foo。
[0049] 在一种可实现的实例中,参见图4,步骤302可以包括:
[0050] 步骤401、将待测版本软件代码和基准版本软件代码进行差异化比较,获取待测版本软件代码相对于基准版本软件代码变更的行号。
[0051] 其中,变更可以指增加,删除或修改。
[0052] 可以使用多种工具对待测版本软件代码和基准版本软件代码进行差异化比较,获取待测版本软件代码相对于基准版本软件代码变更的行号,在此不进行一一列举,本发明实施例对此也不进行具体限定,下面仅以SVN.diff功能为例进行说明。
[0053] 使用SVN Diff命令:svn diff–r old_label1:new_label2ras,可以输出待测版本软件代码相对于基准版本软件代码变更的行号。其中,old_label1表示基准版本软件代码,new_label2表示待测版本软件代码。
[0054] 例如,若基准版本软件代码的版本号为版本966,待测版本软件代码的版本号为版本1573。
[0055] 输入SVN Diff命令:svn diff–r966:1573ras,输出结果为:
[0056]
[0057] 在输出结果中,Index表示改变的文件名,---表示老版本(基准版本软件代码),+++表示新版本(待测版本软件代码)。
[0058] @@-352,11+352,7@@中具体表示@@(基准版本软件代码)起始行,行数(待测版本软件代码)起始行,行数@@;-表示基准版本软件代码,+表示待测版本软件代码。
[0059] 步骤402、对待测版本软件代码进行静态语法分析,获取待测版本软件的函数与起始行号以及结束行号的对应关系。
[0060] 其中,静态语法分析是指不运行被测程序本身,仅分析或检查源程序的语法,过程或者接口等获取目标信息。
[0061] 通过对待测版本软件代码的进行静态语法分析,可以按照上述预设规则定义的函数,以及每个函数与起始行号以及结束行号的对应关系。例如,可以通过逐行扫描的形式,获取预设规则定义的函数,例如,扫描至第一个文件包,获取第一个文件包的包名(com.sample),然后向下扫描,获取第一个文件包中第一个类的类名(class1),然后再向下扫描,获取第一个类中的第一个函数名(func1),以及函数参数类型名(int,int),所以,可以定义一个函数为com.sample.class1.func1(int,int),定义其他函数的过程相同或类似,在此不再赘述。
[0062] 其中,函数与起始行号以及结束行号的对应关系可以以表格形式表示,当然,也可以以其他形式表示,本发明实施例对此不进行详细限定,例如,参见表1,为一种表格形式的函数与起始行号以及结束行号的对应关系。
[0063] 表1
[0064]
[0065] 由表1可知,通过静态语法分析,可以定义待测版本软件代码中函数,每个函数的标识互不相同,通过函数的起始行和结束行可以确定该函数的代码覆盖范围。
[0066] 步骤403、根据待测版本软件代码相对于基准版本软件代码变更的行号,查询待测版本软件的函数与起始行号以及结束行号的对应关系,获取待测版本软件代码中相对于所述基准版本软件代码变更的函数列表。
[0067] 一种可实现的方式为:将变更的行号与函数的起始行号和结束行号进行比较,若变更的行号处于函数的起始行号和结束行号之间的范围,例如起始行号小于或等于变更的行号,且变更的行号小于或等于结束行号,则确定该函数为待测版本软件代码中相对于基准版本软件代码变更的函数。例如,若待测版本软件代码相对于基准版本软件代码变更的行号为90,将变更的行号90与函数的起始行号和结束行号进行比较,因为函数2的起始行号80小于90,且90小于函数2的结束行号150,所以,确定函数2为待测版本软件代码中相对于基准版本软件代码变更的函数。
[0068] 确定的待测版本软件代码中相对于基准版本软件代码变更的所有函数可以组成变更的函数列表。假设函数列表如表2所示。
[0069] 表2
[0070]函数1
函数2
函数3
函数9
函数12
[0071] 需要说明的是,函数与行号的对应关系是动态变化的,因为在不同的版本中,相同的函数可能对应不同的行号,而函数本身并没有做修改,有可能是该函数之前的函数修改了或者加了注释导致该函数对应的行号发生变化,采用步骤401-步骤403可以准确获取变更的函数列表。
[0072] 步骤303、根据变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
[0073] 函数和测试用例的对应关系根据基准版本软件代码生成,其中,基准版本软件代码和待测版本软件代码中函数的定义规则相同,所以,基准版本软件代码和待测版本软件代码包含的函数相同,所以,根据变更的函数列表,查询预先生成的函数和测试用例的对应关系,可以准确获取需要回归测试的测试用例。
[0074] 其中,函数和测试用例的对应关系可以如表3所示,当然,也可以为其他形式,本发明实施例对此不进行限制。
[0075] 表3
[0076]
[0077] 如表3所示,对于每个函数关联的测试用例,标记为1;对于每个函数不关联的测试用例,标记为0。
[0078] 优选的,步骤303具体包括:
[0079] 根据变更的函数列表中每个函数,分别查询预先生成的函数和测试用例的对应关系,获取变更的函数列表中每个函数关联的测试用例,将每个函数关联的测试用例的并集作为需要回归测试的测试用例。
[0080] 例如,将表2中包含的每个函数,分别查询表3所示函数和测试用例的对应关系,可得表2中每个函数关联的测试用例,如表4所示。
[0081] 表4
[0082]
[0083] 将表2中包含的每个函数关联的测试用例的并集作为需要回归测试的测试用例,如表4所示,需要说明的是,可以通过对函数关联的测试用例取或,取或的结果即为函数关联的测试用例的并集。
[0084] 为了消除所得的测试用例中的冗余测试用例,可以通过下述任意一种方式或多种方式的结合来实现。
[0085] 具体的,在一种实例中,对于第一函数(第一函数为变更的函数列表中任意一个函数),若该第一函数为底层函数,则确定该第一函数关联的测试用例为空。
[0086] 因为底层函数一般关联的测试用例比较多,有的底层函数甚至能够关联80%以上的测试用例,所以,如果将底层函数全部输出作为获取的需要回归的测试用例,则会导致测试用例冗余过大,所以,可以通过放弃底层函数关联的测试用例来实现,使得第一函数关联的测试用例为空。例如,若函数1为底层函数,则函数1关联的测试用例如表5所示,最终得到的并集相对于表4中并集包含的测试用例较少,能够有效避免变更的底层函数导致的冗余测试用例。
[0087] 表5
[0088]
[0089] 在另一种实例中,对于第二函数(第二函数为变更的函数列表中任意一个函数),查询预先生成的函数和测试用例的对应关系,获取第二函数关联的测试用例,可以包括:
[0090] A、根据第二函数查询预先生成的函数和测试用例的对应关系,获取所述第二函数对应的测试用例;
[0091] B、若第二函数的对应的测试用例的数量大于或等于预设阈值,则查询测试用例信息库,获取第二函数对应的每个测试用例的优先级;
[0092] 其中,预设阈值可以根据需要或者经验值确定,为采用根据测试用例的优先级去除测试用例冗余方法的临界值,若一个函数对应的测试用例的数量大于或等于该预设阈值,则只输出优先级最高的测试用例。后台服务器20可以维护每个测试用例的优先级,可以根据测试用例ID查询获取测试用例的优先级信息,测试用例的优先级为预先设置,例如,可以分为P0级,P1级,P2级,P3级等,其中,P0级,P1级,P2级,P3级的优先级依次降低。
[0093] C、将优先级最高的测试用例作为所述第二函数关联的测试用例。
[0094] 参见图6,若函数3对应的测试用例大于预设阈值,则函数3关联的测试用例为优先级最高的测试用例,例如,参见表4和表6,因为函数3对应的测试用例3的优先级为P3级,所以,在表6中记为0,相应的,获取的交集相对于表4中交集包含的测试用例较少。
[0095] 表6
[0096]
[0097] 在又一种实例中,对于第三函数(第三函数为变更的函数列表中任意一个函数),查询预先生成的函数和测试用例的对应关系,获取第一函数关联的测试用例,可以包括:
[0098] 在函数列表中,在该第三函数的相邻函数中取N个函数,分别根据该N个函数以及该第三函数查询预先生成的函数和测试用例的对应关系,分别获取该N个函数以及该第三函数对应的测试用例;将该N个函数以及该第三函数对应的测试用例的交集作为该第三函数或者该N个函数中任意一个函数关联的测试用例。
[0099] 采用这种方式,相当于将该N个函数以及该第三函数构成一个N+1的函数集合,以这个函数集合整体去查询预先生成的函数和测试用例的对应关系,在一个测试用例与该函数集合中所有函数都存在对应关系时,才能作为关联的测试用例输出,这样可以有效减小测试用例的冗余。
[0100] 例如,若第三函数为函数2,N值为2,则可以取函数1,函数2和函数3作为一个函数集合,如表7所示,将函数1,函数2和函数3对应的测试用例取交集后,相对于直接将函数1,函数2和函数3的测试用例取并集能够有效减小测试用例的冗余输出。
[0101] 表7
[0102]
[0103] 其中,通过调整N值可以调整测试用例的输出个数,例如,可以设置默认的N值为1,经验值为3。
[0104] 由此可见,本发明实施例提供的确定需要回归测试的测试用例的方法,根据待测版本软件代码中相对于基准版本软件代码变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例,避免通过测试人员的经验来确认回归测试的范围导致的效率低下的问题,而且,一方面,能够保证获取的测试用例包含发生变化的函数影响到的测试用例,避免可能出现测试遗漏和质量问题;另一方面,因为函数是根据预设规则定义的,且每个函数在待测版本软件代码或者基准版本软件代码中互不相同,提高函数定义的精度,减小了获取测试用例的冗余。所以,可以提高确定需要回归测试的测试用例的效率以及准确度。
[0105] 进一步的,参见图5,在步骤301之前,所述方法还包括:
[0106] 步骤304、对基准版本软件代码进行静态语法分析,根据预设规则定义所述基准版本软件代码的函数,并获取定义的每个函数对应的起始行号以及结束行号;
[0107] 其中,步骤304和步骤402原理相同,只是软件代码的版本不同,故在此不再赘述。
[0108] 步骤305、在所述基准版本软件代码的每个函数对应的起始行添加插桩代码;
[0109] 根据获取的每个函数对应的起始行号,在每个函数的起始行添加“打印该函数名”的代码,如,在函数com.sample.class1.func1(int,int)的起始行添加Log(“com.sample.class1.func1(int,int)”)。
[0110] 需要说明的是,若软件代码为JAVA语言,由于JAVA语言要求在构造函数中对父类或本类的构造函数的调用必须放在函数体的第一句,否则编译不通过,所以插桩代码要放在构造函数的调用的下一句。
[0111] 步骤306、执行添加插桩代码后的基准版本软件代码的测试用例,并采集每个测试用例执行期间的插桩代码的运行记录。
[0112] 将插桩代码进行编译,生成可执行的目标文件,使得用户终端的应用客户端或者网页客户端对目标文件执行测试用例,在执行测试用例的过程中,用户终端的应用客户端或者网页客户端向后台服务器20反馈每个测试用例的ID以及执行的开始时间和结束时间,后台服务器采集每个测试用例执行期间的插桩代码的运行记录,以获取每个测试用例执行过程中调用的函数。
[0113] 步骤307、根据每个测试用例执行期间的插桩代码的运行记录,生成函数和测试用例的对应关系。
[0114] 生成的函数和测试用例的对应关系可如表3所示。
[0115] 图6为本发明实施例提供的确定需要回归测试的测试用例的装置6。参见图6,该确定需要回归测试的测试用例的装置6包括:
[0116] 软件代码获取模块61,用于获取待测版本软件代码和基准版本软件代码;
[0117] 变更函数列表获取模块62,用于比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
[0118] 测试用例获取模块63,用于根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
[0119] 进一步的,参见图7,变更函数列表获取模块62,包括:
[0120] 差异化比较单元621,用于将所述待测版本软件代码和基准版本软件代码进行差异化比较,获取所述待测版本软件代码相对于所述基准版本软件代码变更的行号;
[0121] 静态语法分析单元622,用于对所述待测版本软件代码进行静态语法分析,获取所述待测版本软件的函数与起始行号以及结束行号的对应关系;
[0122] 查询单元623,用于根据所述待测版本软件代码相对于所述基准版本软件代码变更的行号,查询所述待测版本软件的函数与起始行号以及结束行号的对应关系,获取所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表。
[0123] 进一步的,参见图8,所述静态语法分析单元622还用于:对所述基准版本软件代码进行静态语法分析,根据预设规则定义所述基准版本软件代码的函数,并获取定义的每个函数对应的起始行号以及结束行号;
[0124] 所述装置6还包括:插桩模块64,用于在所述基准版本软件代码的每个函数对应的起始行添加插桩代码;
[0125] 采集模块65,用于执行添加插桩代码后的基准版本软件代码的测试用例,并采集每个测试用例执行期间的插桩代码的运行记录;
[0126] 函数和测试用例对应关系生成模块66,用于根据每个测试用例执行期间的插桩代码的运行记录,生成函数和测试用例的对应关系。
[0127] 进一步的,所述静态语法分析单元622用于,当所述软件代码的语言为面向对象的语言时,根据函数所属的文件包的包名,所述函数所属的类的类名,所述函数的函数名以及所述函数的函数参数类型名定义所述函数;
[0128] 或者,当所述软件代码的语言为非面向对象的语言时,根据函数的文件路径,所述函数所属的文件的文件名以及所述函数的函数名定义所述函数。
[0129] 进一步的,所述测试用例获取模块63具体用于:
[0130] 根据所述变更的函数列表中每个函数,分别查询预先生成的函数和测试用例的对应关系,获取变更的函数列表中每个函数关联的测试用例,将每个函数关联的测试用例的并集作为需要回归测试的测试用例。
[0131] 进一步的,所述测试用例获取模块63还用于:对于第一函数,若所述第一函数为底层函数,则确定所述第一函数关联的测试用例为空,其中,所述第一函数为所述变更的函数列表中任意一个函数。
[0132] 进一步的,所述测试用例获取模块63还用于:根据第二函数查询预先生成的函数和测试用例的对应关系,获取所述第二函数对应的测试用例;
[0133] 若所述第二函数的对应的测试用例的数量大于或等于预设阈值,则查询测试用例信息库,获取所述第二函数对应的每个测试用例的优先级;
[0134] 将优先级最高的测试用例作为所述第二函数关联的测试用例;
[0135] 其中,所述第二函数为所述变更的函数列表中任意一个函数。
[0136] 进一步的,所述测试用例获取模块63还用于:在所述函数列表中,在所述第三函数的相邻函数中取N个函数,分别根据所述N个函数以及所述第三函数查询预先生成的函数和测试用例的对应关系,分别获取所述N个函数以及所述第三函数对应的测试用例;
[0137] 将所述N个函数以及所述第三函数对应的测试用例的交集作为所述第三函数或者所述N个函数中任意一个函数关联的测试用例;
[0138] 其中,所述第三函数为所述变更的函数列表中任意一个函数。
[0139] 由此可见,本发明实施例提供的确定需要回归测试的测试用例的装置60,根据待测版本软件代码中相对于基准版本软件代码变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例,避免通过测试人员的经验来确认回归测试的范围导致的效率低下的问题,而且,一方面,能够保证获取的测试用例包含发生变化的函数影响到的测试用例,避免可能出现测试遗漏和质量问题;另一方面,因为函数是根据预设规则定义的,且每个函数在待测版本软件代码或者基准版本软件代码中互不相同,提高函数定义的精度,减小了获取测试用例的冗余。所以,可以提高确定需要回归测试的测试用例的效率以及准确度
[0140] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0141] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0142] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用硬件加软件功能单元的形式实现。
[0143] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0144] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈