CN105302710B - 一种确定需要回归测试的测试用例的方法和装置 - Google Patents
一种确定需要回归测试的测试用例的方法和装置 Download PDFInfo
- Publication number
- CN105302710B CN105302710B CN201410317129.5A CN201410317129A CN105302710B CN 105302710 B CN105302710 B CN 105302710B CN 201410317129 A CN201410317129 A CN 201410317129A CN 105302710 B CN105302710 B CN 105302710B
- Authority
- CN
- China
- Prior art keywords
- function
- software code
- version software
- test case
- measured
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种确定需要回归测试的测试用例的方法和装置,涉及软件测试技术领域。能够提高确定需要回归测试的测试用例的效率以及准确度。其方法为:获取待测版本软件代码和基准版本软件代码;比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
Description
技术领域
本发明涉及软件测试技术领域,尤其涉及一种确定需要回归测试的测试用例的方法和装置。
背景技术
随着软件规模的不断扩大,回归测试在测试中占据越来越大的比例。回归测试是指修改了旧代码后,重新进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。那么如何合理的确认回归测试的范围,如何在对质量提供保证的同时提高测试的效率,就成为人们很关注的话题。就目前而言,通常都是通过测试人员的经验来确定回归测试的范围。
发明人在发明过程中,发现现有的技术方案至少存在以下缺点:
测试回归的范围主观因素很大,范围估计太小会有可能出现测试遗漏和质量问题,范围估计面太大会降低测试效率,很大程度上依赖于测试人员本身的素质和对代码的了解。
发明内容
本发明的实施例提供一种确定需要回归测试的测试用例的方法和装置,以提高确定需要回归测试的测试用例的效率以及准确度。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,本发明实施例提供了一种确定需要回归测试的测试用例的方法,所述方法包括:
获取待测版本软件代码和基准版本软件代码;
比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个所述函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
另一方面,本发明实施例还提供了一种确定需要回归测试的测试用例的装置,所述装置包括:
软件代码获取模块,用于获取待测版本软件代码和基准版本软件代码;
变更函数列表获取模块,用于比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个所述函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
测试用例获取模块,用于根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
由此可见,本发明实施例提供的确定需要回归测试的测试用例的方法和装置,根据待测版本软件代码中相对于基准版本软件代码变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例,避免通过测试人员的经验来确认回归测试的范围导致的效率低下的问题,而且,一方面,能够保证获取的测试用例包含发生变化的函数影响到的测试用例,避免可能出现测试遗漏和质量问题;另一方面,因为函数是根据预设规则定义的,且每个函数在待测版本软件代码或者基准版本软件代码中互不相同,提高函数定义的精度,减小了获取测试用例的冗余。所以,可以提高确定需要回归测试的测试用例的效率以及准确度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用场景示意图;
图2为本发明实施例提供的一种后台服务器的硬件结构图;
图3为本发明实施例提供的一种确定需要回归测试的测试用例的方法流程图;
图4为图3中步骤302的流程图;
图5为本发明实施例提供的另一种确定需要回归测试的测试用例的方法流程图;
图6为本发明实施例提供的一种确定需要回归测试的测试用例的装置框图;
图7为本发明实施例提供的另一种确定需要回归测试的测试用例的装置框图;
图8为本发明实施例提供的又一种确定需要回归测试的测试用例的装置框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,示出了本发明确定需要回归测试的测试用例的方法的实施环境的网络架构。该实施环境的系统可包括用户终端10、后台服务器20及版本管理服务器30。其中,后台服务器20与版本管理服务器30形成无线或有线连接。版本管理服务器30中存储有软件版本信息,例如软件版本号、不同版本软件的源代码文件等。后台服务器20可以通过版本管理服务器30获取待测版本软件代码和基准版本软件代码,当然,也可以接收用户输入的待测版本软件代码和基准版本软件代码。后台服务器20用于执行确定需要回归测试的测试用例的方法,并获取需要进行回归测试的测试用例。用户终端10与后台服务器20形成无线或有线连接,且用户终端10上具有相应的应用客户端或网页客户端,用户终端10通过应用客户端或网页客户端接收用户输入的测试请求,并将该测试请求发送给后台服务器20,从而可以触发后台服务器20执行确定需要回归测试的测试用例的方法,并获取需要进行回归测试的测试用例,用户终端10通过应用客户端或网页客户端从后台服务器20获取需要进行回归测试的测试用例,并对该需要进行回归测试的测试用例进行回归测试。其中,用户终端10可以为PC、手机、iPAD,平板电脑、笔记本电脑、个人数字助理、可穿戴式移动电子终端如智能手表、眼镜等终端。
图2示出了上述后台服务器10的一种硬件结构图。如图2所示,该后台服务器20包括一个或多个(图中仅示出一个)处理器201、存储器202、用户接口203、网络接口204以及通信总线205。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对后台服务器20的结构造成限定。例如,后台服务器20还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
通信总线205用于后台服务器20中各组成部件之间的通信。用户接口203用于插接外部设备,例如触摸屏、鼠标及键盘等,以接收用户输入的信息。网络接口204用于后台服务器20与外部进行互相通信,该网络接口204主要包括有线接口和无线接口,例如RS232模块、射频模块、WIFI模块等等。
存储器202可用于存储软件程序以及模块,数据库,如本发明实施例中的确定需要回归测试的测试用例的方法及装置对应的程序指令/模块。存储器202可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器202可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至后台服务器20。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器201通过运行存储在存储器202内的软件程序以及模块,从而执行各种功能应用以及数据处理,例如,处理器201通过调用存储器202中的确定需要回归测试的测试用例的应用程序,以实现快速而准确的确定需要进行回归测试的测试用例。
图3为第一实施例提供的确定需要回归测试的测试用例的方法的流程图。如图3所示,该方法包括:
步骤301、后台服务器获取待测版本软件代码和基准版本软件代码。
其中,基准版本软件代码为预先采集测试用例和函数的对应关系的依据,优选的,基准版本软件代码为功能较稳定的一个版本的软件代码。
其中,后台服务器20可以接收用户设备10发送的待测软件的测试请求,一种实现方式中,该测试请求中包含待测版本软件代码和基准版本软件代码;另一种实现方式中,该测试请求中包含待测版本软件版本号和基准版本软件版本号;再一种实现方式中,该测试请求中包含待测版本软件和基准版本软件中其中一个版本号,以及另外一个的软件代码。
具体的,测试人员可以通过向用户设备10的应用客户端或者网页客户端输入同一个软件的两个不同版本的版本号或者软件代码,以发起待测软件的测试请求,其中一个版本为基准版本,另一个版本为待测版本。用户设备10的应用客户端或者网页客户端向后台服务器20转发测试请求。后台服务器20接收到测试请求后,若该测试请求中包含待测版本软件代码和基准版本软件代码,则直接从该请求中获取待测版本软件代码和基准版本软件代码;若该测试请求中包含待测版本软件版本号和基准版本软件版本号;则从该测试请求中获取待测版本软件版本号和基准版本软件版本号,并从版本管理服务器30中获取待测版本软件版本代码和基准版本软件版本代码;若该测试请求中包含待测版本软件和基准版本软件中其中一个版本号,以及另外一个的软件代码,则从该测试请求中获取该软件代码以及版本号,并从版本管理服务器30中获取该版本号的代码。
步骤302、比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同。
为了对软件代码中的函数进行更精确的定义,本发明实施例中根据预设规则定义的函数在软件代码中互不相同,换言之,定义的任意两个函数均是可以区分的,这样可以更精确的确定函数与测试用例之间的对应关系。
一种可实现的方式为:当软件代码的语言为面向对象的语言时,例如,JAVA,C++等,函数根据预设规则定义可以包括:函数根据该函数所属的文件包的包名,该函数所属的类的类名,该函数的函数名以及该函数的函数参数类型名定义。
例如,定义的函数:com.sample.class1.func1(int,int),包含4部分,分别为:
1.包名(com.sample);
2.类名(class1);
3.函数名(func1);
4.函数参数类型名(int,int),用于区别重载(overload)函数。
另一种可实现的方式为:当软件代码的语言为非面向对象的语言时,例如Shell脚本,根据预设规则定义函数可以包括:根据函数的文件路径,函数所属的文件的文件名以及函数的函数名定义函数。
例如,定义的函数:Src.filename.foo,包含3部分,分别为:
1.路径即目录src;
2.文件名filename;
3.函数名foo。
在一种可实现的实例中,参见图4,步骤302可以包括:
步骤401、将待测版本软件代码和基准版本软件代码进行差异化比较,获取待测版本软件代码相对于基准版本软件代码变更的行号。
其中,变更可以指增加,删除或修改。
可以使用多种工具对待测版本软件代码和基准版本软件代码进行差异化比较,获取待测版本软件代码相对于基准版本软件代码变更的行号,在此不进行一一列举,本发明实施例对此也不进行具体限定,下面仅以SVN.diff功能为例进行说明。
使用SVN Diff命令:svn diff–r old_label1:new_label2ras,可以输出待测版本软件代码相对于基准版本软件代码变更的行号。其中,old_label1表示基准版本软件代码,new_label2表示待测版本软件代码。
例如,若基准版本软件代码的版本号为版本966,待测版本软件代码的版本号为版本1573。
输入SVN Diff命令:svn diff–r966:1573ras,输出结果为:
在输出结果中,Index表示改变的文件名,---表示老版本(基准版本软件代码),+++表示新版本(待测版本软件代码)。
@@-352,11+352,7@@中具体表示@@(基准版本软件代码)起始行,行数(待测版本软件代码)起始行,行数@@;-表示基准版本软件代码,+表示待测版本软件代码。
步骤402、对待测版本软件代码进行静态语法分析,获取待测版本软件的函数与起始行号以及结束行号的对应关系。
其中,静态语法分析是指不运行被测程序本身,仅分析或检查源程序的语法,过程或者接口等获取目标信息。
通过对待测版本软件代码的进行静态语法分析,可以按照上述预设规则定义的函数,以及每个函数与起始行号以及结束行号的对应关系。例如,可以通过逐行扫描的形式,获取预设规则定义的函数,例如,扫描至第一个文件包,获取第一个文件包的包名(com.sample),然后向下扫描,获取第一个文件包中第一个类的类名(class1),然后再向下扫描,获取第一个类中的第一个函数名(func1),以及函数参数类型名(int,int),所以,可以定义一个函数为com.sample.class1.func1(int,int),定义其他函数的过程相同或类似,在此不再赘述。
其中,函数与起始行号以及结束行号的对应关系可以以表格形式表示,当然,也可以以其他形式表示,本发明实施例对此不进行详细限定,例如,参见表1,为一种表格形式的函数与起始行号以及结束行号的对应关系。
表1
由表1可知,通过静态语法分析,可以定义待测版本软件代码中函数,每个函数的标识互不相同,通过函数的起始行和结束行可以确定该函数的代码覆盖范围。
步骤403、根据待测版本软件代码相对于基准版本软件代码变更的行号,查询待测版本软件的函数与起始行号以及结束行号的对应关系,获取待测版本软件代码中相对于所述基准版本软件代码变更的函数列表。
一种可实现的方式为:将变更的行号与函数的起始行号和结束行号进行比较,若变更的行号处于函数的起始行号和结束行号之间的范围,例如起始行号小于或等于变更的行号,且变更的行号小于或等于结束行号,则确定该函数为待测版本软件代码中相对于基准版本软件代码变更的函数。例如,若待测版本软件代码相对于基准版本软件代码变更的行号为90,将变更的行号90与函数的起始行号和结束行号进行比较,因为函数2的起始行号80小于90,且90小于函数2的结束行号150,所以,确定函数2为待测版本软件代码中相对于基准版本软件代码变更的函数。
确定的待测版本软件代码中相对于基准版本软件代码变更的所有函数可以组成变更的函数列表。假设函数列表如表2所示。
表2
函数1 |
函数2 |
函数3 |
函数9 |
函数12 |
需要说明的是,函数与行号的对应关系是动态变化的,因为在不同的版本中,相同的函数可能对应不同的行号,而函数本身并没有做修改,有可能是该函数之前的函数修改了或者加了注释导致该函数对应的行号发生变化,采用步骤401-步骤403可以准确获取变更的函数列表。
步骤303、根据变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
函数和测试用例的对应关系根据基准版本软件代码生成,其中,基准版本软件代码和待测版本软件代码中函数的定义规则相同,所以,基准版本软件代码和待测版本软件代码包含的函数相同,所以,根据变更的函数列表,查询预先生成的函数和测试用例的对应关系,可以准确获取需要回归测试的测试用例。
其中,函数和测试用例的对应关系可以如表3所示,当然,也可以为其他形式,本发明实施例对此不进行限制。
表3
如表3所示,对于每个函数关联的测试用例,标记为1;对于每个函数不关联的测试用例,标记为0。
优选的,步骤303具体包括:
根据变更的函数列表中每个函数,分别查询预先生成的函数和测试用例的对应关系,获取变更的函数列表中每个函数关联的测试用例,将每个函数关联的测试用例的并集作为需要回归测试的测试用例。
例如,将表2中包含的每个函数,分别查询表3所示函数和测试用例的对应关系,可得表2中每个函数关联的测试用例,如表4所示。
表4
将表2中包含的每个函数关联的测试用例的并集作为需要回归测试的测试用例,如表4所示,需要说明的是,可以通过对函数关联的测试用例取或,取或的结果即为函数关联的测试用例的并集。
为了消除所得的测试用例中的冗余测试用例,可以通过下述任意一种方式或多种方式的结合来实现。
具体的,在一种实例中,对于第一函数(第一函数为变更的函数列表中任意一个函数),若该第一函数为底层函数,则确定该第一函数关联的测试用例为空。
因为底层函数一般关联的测试用例比较多,有的底层函数甚至能够关联80%以上的测试用例,所以,如果将底层函数全部输出作为获取的需要回归的测试用例,则会导致测试用例冗余过大,所以,可以通过放弃底层函数关联的测试用例来实现,使得第一函数关联的测试用例为空。例如,若函数1为底层函数,则函数1关联的测试用例如表5所示,最终得到的并集相对于表4中并集包含的测试用例较少,能够有效避免变更的底层函数导致的冗余测试用例。
表5
在另一种实例中,对于第二函数(第二函数为变更的函数列表中任意一个函数),查询预先生成的函数和测试用例的对应关系,获取第二函数关联的测试用例,可以包括:
A、根据第二函数查询预先生成的函数和测试用例的对应关系,获取所述第二函数对应的测试用例;
B、若第二函数的对应的测试用例的数量大于或等于预设阈值,则查询测试用例信息库,获取第二函数对应的每个测试用例的优先级;
其中,预设阈值可以根据需要或者经验值确定,为采用根据测试用例的优先级去除测试用例冗余方法的临界值,若一个函数对应的测试用例的数量大于或等于该预设阈值,则只输出优先级最高的测试用例。后台服务器20可以维护每个测试用例的优先级,可以根据测试用例ID查询获取测试用例的优先级信息,测试用例的优先级为预先设置,例如,可以分为P0级,P1级,P2级,P3级等,其中,P0级,P1级,P2级,P3级的优先级依次降低。
C、将优先级最高的测试用例作为所述第二函数关联的测试用例。
参见图6,若函数3对应的测试用例大于预设阈值,则函数3关联的测试用例为优先级最高的测试用例,例如,参见表4和表6,因为函数3对应的测试用例3的优先级为P3级,所以,在表6中记为0,相应的,获取的交集相对于表4中交集包含的测试用例较少。
表6
在又一种实例中,对于第三函数(第三函数为变更的函数列表中任意一个函数),查询预先生成的函数和测试用例的对应关系,获取第一函数关联的测试用例,可以包括:
在函数列表中,在该第三函数的相邻函数中取N个函数,分别根据该N个函数以及该第三函数查询预先生成的函数和测试用例的对应关系,分别获取该N个函数以及该第三函数对应的测试用例;将该N个函数以及该第三函数对应的测试用例的交集作为该第三函数或者该N个函数中任意一个函数关联的测试用例。
采用这种方式,相当于将该N个函数以及该第三函数构成一个N+1的函数集合,以这个函数集合整体去查询预先生成的函数和测试用例的对应关系,在一个测试用例与该函数集合中所有函数都存在对应关系时,才能作为关联的测试用例输出,这样可以有效减小测试用例的冗余。
例如,若第三函数为函数2,N值为2,则可以取函数1,函数2和函数3作为一个函数集合,如表7所示,将函数1,函数2和函数3对应的测试用例取交集后,相对于直接将函数1,函数2和函数3的测试用例取并集能够有效减小测试用例的冗余输出。
表7
其中,通过调整N值可以调整测试用例的输出个数,例如,可以设置默认的N值为1,经验值为3。
由此可见,本发明实施例提供的确定需要回归测试的测试用例的方法,根据待测版本软件代码中相对于基准版本软件代码变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例,避免通过测试人员的经验来确认回归测试的范围导致的效率低下的问题,而且,一方面,能够保证获取的测试用例包含发生变化的函数影响到的测试用例,避免可能出现测试遗漏和质量问题;另一方面,因为函数是根据预设规则定义的,且每个函数在待测版本软件代码或者基准版本软件代码中互不相同,提高函数定义的精度,减小了获取测试用例的冗余。所以,可以提高确定需要回归测试的测试用例的效率以及准确度。
进一步的,参见图5,在步骤301之前,所述方法还包括:
步骤304、对基准版本软件代码进行静态语法分析,根据预设规则定义所述基准版本软件代码的函数,并获取定义的每个函数对应的起始行号以及结束行号;
其中,步骤304和步骤402原理相同,只是软件代码的版本不同,故在此不再赘述。
步骤305、在所述基准版本软件代码的每个函数对应的起始行添加插桩代码;
根据获取的每个函数对应的起始行号,在每个函数的起始行添加“打印该函数名”的代码,如,在函数com.sample.class1.func1(int,int)的起始行添加Log(“com.sample.class1.func1(int,int)”)。
需要说明的是,若软件代码为JAVA语言,由于JAVA语言要求在构造函数中对父类或本类的构造函数的调用必须放在函数体的第一句,否则编译不通过,所以插桩代码要放在构造函数的调用的下一句。
步骤306、执行添加插桩代码后的基准版本软件代码的测试用例,并采集每个测试用例执行期间的插桩代码的运行记录。
将插桩代码进行编译,生成可执行的目标文件,使得用户终端的应用客户端或者网页客户端对目标文件执行测试用例,在执行测试用例的过程中,用户终端的应用客户端或者网页客户端向后台服务器20反馈每个测试用例的ID以及执行的开始时间和结束时间,后台服务器采集每个测试用例执行期间的插桩代码的运行记录,以获取每个测试用例执行过程中调用的函数。
步骤307、根据每个测试用例执行期间的插桩代码的运行记录,生成函数和测试用例的对应关系。
生成的函数和测试用例的对应关系可如表3所示。
图6为本发明实施例提供的确定需要回归测试的测试用例的装置6。参见图6,该确定需要回归测试的测试用例的装置6包括:
软件代码获取模块61,用于获取待测版本软件代码和基准版本软件代码;
变更函数列表获取模块62,用于比较所述待测版本软件代码和基准版本软件代码,得到所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表,其中,所述函数根据预设规则定义,每个函数在所述待测版本软件代码或者所述基准版本软件代码中互不相同;
测试用例获取模块63,用于根据所述变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例。
进一步的,参见图7,变更函数列表获取模块62,包括:
差异化比较单元621,用于将所述待测版本软件代码和基准版本软件代码进行差异化比较,获取所述待测版本软件代码相对于所述基准版本软件代码变更的行号;
静态语法分析单元622,用于对所述待测版本软件代码进行静态语法分析,获取所述待测版本软件的函数与起始行号以及结束行号的对应关系;
查询单元623,用于根据所述待测版本软件代码相对于所述基准版本软件代码变更的行号,查询所述待测版本软件的函数与起始行号以及结束行号的对应关系,获取所述待测版本软件代码中相对于所述基准版本软件代码变更的函数列表。
进一步的,参见图8,所述静态语法分析单元622还用于:对所述基准版本软件代码进行静态语法分析,根据预设规则定义所述基准版本软件代码的函数,并获取定义的每个函数对应的起始行号以及结束行号;
所述装置6还包括:插桩模块64,用于在所述基准版本软件代码的每个函数对应的起始行添加插桩代码;
采集模块65,用于执行添加插桩代码后的基准版本软件代码的测试用例,并采集每个测试用例执行期间的插桩代码的运行记录;
函数和测试用例对应关系生成模块66,用于根据每个测试用例执行期间的插桩代码的运行记录,生成函数和测试用例的对应关系。
进一步的,所述静态语法分析单元622用于,当所述软件代码的语言为面向对象的语言时,根据函数所属的文件包的包名,所述函数所属的类的类名,所述函数的函数名以及所述函数的函数参数类型名定义所述函数;
或者,当所述软件代码的语言为非面向对象的语言时,根据函数的文件路径,所述函数所属的文件的文件名以及所述函数的函数名定义所述函数。
进一步的,所述测试用例获取模块63具体用于:
根据所述变更的函数列表中每个函数,分别查询预先生成的函数和测试用例的对应关系,获取变更的函数列表中每个函数关联的测试用例,将每个函数关联的测试用例的并集作为需要回归测试的测试用例。
进一步的,所述测试用例获取模块63还用于:对于第一函数,若所述第一函数为底层函数,则确定所述第一函数关联的测试用例为空,其中,所述第一函数为所述变更的函数列表中任意一个函数。
进一步的,所述测试用例获取模块63还用于:根据第二函数查询预先生成的函数和测试用例的对应关系,获取所述第二函数对应的测试用例;
若所述第二函数的对应的测试用例的数量大于或等于预设阈值,则查询测试用例信息库,获取所述第二函数对应的每个测试用例的优先级;
将优先级最高的测试用例作为所述第二函数关联的测试用例;
其中,所述第二函数为所述变更的函数列表中任意一个函数。
进一步的,所述测试用例获取模块63还用于:在所述函数列表中,在所述第三函数的相邻函数中取N个函数,分别根据所述N个函数以及所述第三函数查询预先生成的函数和测试用例的对应关系,分别获取所述N个函数以及所述第三函数对应的测试用例;
将所述N个函数以及所述第三函数对应的测试用例的交集作为所述第三函数或者所述N个函数中任意一个函数关联的测试用例;
其中,所述第三函数为所述变更的函数列表中任意一个函数。
由此可见,本发明实施例提供的确定需要回归测试的测试用例的装置60,根据待测版本软件代码中相对于基准版本软件代码变更的函数列表,查询预先生成的函数和测试用例的对应关系,获取需要回归测试的测试用例,避免通过测试人员的经验来确认回归测试的范围导致的效率低下的问题,而且,一方面,能够保证获取的测试用例包含发生变化的函数影响到的测试用例,避免可能出现测试遗漏和质量问题;另一方面,因为函数是根据预设规则定义的,且每个函数在待测版本软件代码或者基准版本软件代码中互不相同,提高函数定义的精度,减小了获取测试用例的冗余。所以,可以提高确定需要回归测试的测试用例的效率以及准确度
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
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任一项所述的装置,其特征在于,所述静态语法分析单元用于,当所述软件代码的语言为面向对象的语言时,根据函数所属的文件包的包名,所述函数所属的类的类名,所述函数的函数名以及所述函数的函数参数类型名定义所述函数;
或者,当所述软件代码的语言为非面向对象的语言时,根据函数的文件路径,所述函数所属的文件的文件名以及所述函数的函数名定义所述函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410317129.5A CN105302710B (zh) | 2014-07-03 | 2014-07-03 | 一种确定需要回归测试的测试用例的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410317129.5A CN105302710B (zh) | 2014-07-03 | 2014-07-03 | 一种确定需要回归测试的测试用例的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302710A CN105302710A (zh) | 2016-02-03 |
CN105302710B true CN105302710B (zh) | 2019-06-07 |
Family
ID=55199999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410317129.5A Active CN105302710B (zh) | 2014-07-03 | 2014-07-03 | 一种确定需要回归测试的测试用例的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302710B (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273281A (zh) * | 2016-04-06 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 基于代码变更的服务化接口测试方法、系统 |
CN105912467B (zh) * | 2016-04-08 | 2021-05-11 | 腾讯科技(深圳)有限公司 | 一种性能测试方法及装置 |
CN106407124B (zh) * | 2016-11-10 | 2019-03-12 | 中国工商银行股份有限公司 | 一种程序自动化测试方法及系统 |
CN106775911A (zh) * | 2016-11-25 | 2017-05-31 | 努比亚技术有限公司 | 一种用于应用开发的测试方法及装置 |
CN106776348B (zh) * | 2017-02-06 | 2022-09-09 | 腾讯科技(深圳)有限公司 | 测试用例管理方法和装置 |
CN108459949B (zh) * | 2017-02-17 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 一种测试方法及终端 |
CN106909510B (zh) * | 2017-03-02 | 2020-11-24 | 腾讯科技(深圳)有限公司 | 一种获取测试用例的方法以及服务器 |
CN108255699A (zh) * | 2017-03-27 | 2018-07-06 | 平安科技(深圳)有限公司 | 回归测试方法和装置 |
CN107423214A (zh) * | 2017-04-18 | 2017-12-01 | 恒生电子股份有限公司 | 软件回归测试用例获取方法、装置及存储介质和电子设备 |
CN107688531B (zh) * | 2017-06-20 | 2019-02-22 | 平安科技(深圳)有限公司 | 数据库集成测试方法、装置、计算机设备及存储介质 |
CN107436846A (zh) * | 2017-08-04 | 2017-12-05 | 网易(杭州)网络有限公司 | 测试方法、装置、计算可读存储介质和计算设备 |
CN107918586A (zh) * | 2017-10-25 | 2018-04-17 | 珠海金山网络游戏科技有限公司 | 一种基于日志的资源加载效率分析方法和装置 |
CN108268374B (zh) * | 2017-11-03 | 2019-03-05 | 平安科技(深圳)有限公司 | 软件版本测试方法、装置、终端设备及存储介质 |
CN108681504A (zh) * | 2018-04-13 | 2018-10-19 | 深圳壹账通智能科技有限公司 | 自动化测试方法、测试服务器及计算机可读存储介质 |
CN108664372A (zh) * | 2018-05-08 | 2018-10-16 | 平安科技(深圳)有限公司 | 测试过程的监控装置、方法及计算机可读存储介质 |
CN108694123B (zh) * | 2018-05-14 | 2023-07-21 | 中国平安人寿保险股份有限公司 | 一种回归测试方法、计算机可读存储介质及终端设备 |
CN108628749A (zh) * | 2018-05-15 | 2018-10-09 | 福建天晴在线互动科技有限公司 | Web工程自动化校验的测试方法、存储介质 |
CN108763091B (zh) * | 2018-05-31 | 2022-05-27 | 恒生电子股份有限公司 | 用于回归测试的方法、装置及系统 |
CN109240911A (zh) * | 2018-08-13 | 2019-01-18 | 腾讯科技(北京)有限公司 | 精准测试方法、装置和计算机设备 |
CN109388568B (zh) * | 2018-09-29 | 2020-05-15 | 百度在线网络技术(北京)有限公司 | 代码测试方法和装置 |
CN111124875A (zh) * | 2018-10-31 | 2020-05-08 | 北京金山云网络技术有限公司 | 测试用例确定方法、装置及电子设备 |
CN109446097A (zh) * | 2018-11-07 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种回归测试用例选择方法、装置、终端及存储介质 |
CN110008108B (zh) * | 2018-11-12 | 2022-10-18 | 创新先进技术有限公司 | 回归范围确定方法、装置、设备及计算机可读存储介质 |
CN109828911A (zh) * | 2018-12-26 | 2019-05-31 | 北京仁科互动网络技术有限公司 | 一种测试方法和装置 |
CN111382017A (zh) * | 2018-12-28 | 2020-07-07 | 北京字节跳动网络技术有限公司 | 故障查询方法、装置,服务器及存储介质 |
CN109933520B (zh) * | 2019-01-22 | 2022-04-08 | 平安科技(深圳)有限公司 | 软件开发测试方法、装置、计算机装置及存储介质 |
CN111611154B (zh) * | 2019-02-26 | 2024-03-01 | 北京新能源汽车股份有限公司 | 一种回归测试的方法、装置和设备 |
CN112052153B (zh) * | 2019-06-06 | 2023-05-16 | 腾讯科技(深圳)有限公司 | 产品版本测试方法及装置 |
CN110716859A (zh) * | 2019-08-30 | 2020-01-21 | 平安普惠企业管理有限公司 | 自动为修改的代码推送测试用例的方法及相关装置 |
CN110659293B (zh) * | 2019-09-24 | 2022-02-11 | 支付宝(杭州)信息技术有限公司 | 基于变更代码的数据表确定方法以及装置 |
CN110825620B (zh) * | 2019-10-16 | 2021-06-15 | 四川大学 | 回归测试中测试用例优先级计算方法 |
CN110928770B (zh) * | 2019-10-29 | 2023-11-28 | 航天信息股份有限公司 | 软件测试的方法、装置、系统、存储介质和电子设备 |
CN110990281B (zh) * | 2019-12-04 | 2023-11-07 | 中国直升机设计研究所 | 一种自动化静态分析方法 |
CN111124905B (zh) * | 2019-12-17 | 2023-07-18 | 中国银联股份有限公司 | 并行测试方法、装置、设备及存储介质 |
CN111538651A (zh) * | 2020-03-30 | 2020-08-14 | 中国平安人寿保险股份有限公司 | 接口测试方法、装置、服务器及存储介质 |
US11994979B2 (en) * | 2020-05-13 | 2024-05-28 | Synopsys, Inc. | Smart regression test selection for software development |
CN111737140A (zh) * | 2020-06-28 | 2020-10-02 | 深圳前海微众银行股份有限公司 | 接口自动化测试方法、装置、设备及计算机可读存储介质 |
CN111831564A (zh) * | 2020-07-09 | 2020-10-27 | 北京齐尔布莱特科技有限公司 | 一种回归测试方法、装置及计算设备 |
CN111831574B (zh) * | 2020-07-27 | 2023-09-05 | 中国工商银行股份有限公司 | 回归测试规划方法、装置、计算机系统和介质 |
CN111897727A (zh) * | 2020-07-30 | 2020-11-06 | 平安科技(深圳)有限公司 | 软件测试方法、装置、计算机设备及存储介质 |
CN112115042A (zh) * | 2020-08-12 | 2020-12-22 | 浙江大学 | 一种基于采集回放的软件测试方法和系统 |
CN114201353A (zh) * | 2020-09-02 | 2022-03-18 | 北京字节跳动网络技术有限公司 | 程序耗时数据的处理方法、设备和存储介质 |
CN113094283A (zh) * | 2021-04-29 | 2021-07-09 | 平安国际智慧城市科技股份有限公司 | 一种数据获取方法、装置、设备及存储介质 |
CN113138930A (zh) * | 2021-05-12 | 2021-07-20 | 上海云从企业发展有限公司 | 软件测试方法、装置及计算机存储介质 |
CN113641573B (zh) * | 2021-07-26 | 2024-05-07 | 安徽中科国创高可信软件有限公司 | 基于修订日志的程序分析软件自动化测试方法及系统 |
CN113609023A (zh) * | 2021-08-16 | 2021-11-05 | 未鲲(上海)科技服务有限公司 | 精准测试方法、装置、设备及存储介质 |
CN113656318A (zh) * | 2021-08-23 | 2021-11-16 | 上海哔哩哔哩科技有限公司 | 软件版本测试方法、装置及计算机设备 |
CN117215965B (zh) * | 2023-11-09 | 2024-02-27 | 恒生电子股份有限公司 | 基于测试用例识别的测试方法、装置、电子设备和介质 |
CN118170692A (zh) * | 2024-05-15 | 2024-06-11 | 阿里云计算有限公司 | 代码测试方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722436A (zh) * | 2012-05-29 | 2012-10-10 | 百度在线网络技术(北京)有限公司 | 一种增量覆盖信息的统计方法和装置 |
CN103092748A (zh) * | 2011-11-07 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种确定需要进行回归测试的测试用例的方法及系统 |
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN103198010A (zh) * | 2012-01-06 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 软件测试方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9037915B2 (en) * | 2011-12-08 | 2015-05-19 | International Business Machines Corporation | Analysis of tests of software programs based on classification of failed test cases |
-
2014
- 2014-07-03 CN CN201410317129.5A patent/CN105302710B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092748A (zh) * | 2011-11-07 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种确定需要进行回归测试的测试用例的方法及系统 |
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN103198010A (zh) * | 2012-01-06 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 软件测试方法、装置及系统 |
CN102722436A (zh) * | 2012-05-29 | 2012-10-10 | 百度在线网络技术(北京)有限公司 | 一种增量覆盖信息的统计方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105302710A (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105302710B (zh) | 一种确定需要回归测试的测试用例的方法和装置 | |
CN113688006B (zh) | 一种日志数据的校验方法及装置 | |
CN109117363B (zh) | 一种测试用例生成方法、装置及服务器 | |
US10348578B2 (en) | Software proof-of-concept platform, including simulation of production behavior and/or data | |
CN107111725B (zh) | 在输入理解系统中保护私有信息 | |
CN109446072A (zh) | 测试脚本的生成方法和装置 | |
US20200348921A1 (en) | Microservice update system | |
CN109408375A (zh) | 接口文档的生成方法和装置 | |
CN109783388A (zh) | Ui自动化测试方法、装置及电子设备 | |
CN101930400A (zh) | Sdk自动化测试系统及方法 | |
US9652368B2 (en) | Using linked data to determine package quality | |
WO2014204987A1 (en) | Method and apparatus for customized software development kit (sdk) generation | |
CN114981775B (zh) | 用于api综合管理的基于云的api元数据管理方法及系统 | |
US10452522B1 (en) | Synthetic data generation from a service description language model | |
CN107807841B (zh) | 服务器模拟方法、装置、设备及可读存储介质 | |
CN109815107A (zh) | 自动化测试的方法和装置 | |
CN108121742A (zh) | 用户分类模型的生成方法及装置 | |
WO2020211360A1 (zh) | Mock测试方法、系统、电子设备及计算机非易失性可读存储介质 | |
US9582270B2 (en) | Effective feature location in large legacy systems | |
KR20180061589A (ko) | 소프트웨어 빌드 시스템 및 이를 이용한 소프트웨어 빌드 방법 | |
JP2023036681A (ja) | タスク処理方法、処理装置、電子機器、記憶媒体及びコンピュータプログラム | |
CN106201865A (zh) | 一种应用程序编程接口api测试方法、装置及终端设备 | |
AU2014412020B2 (en) | Techniques to transform network resource requests to zero rated network requests | |
CN107133160A (zh) | 测试系统 | |
CN109062714A (zh) | 远程控制安卓设备的方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |