CN111831564A - 一种回归测试方法、装置及计算设备 - Google Patents
一种回归测试方法、装置及计算设备 Download PDFInfo
- Publication number
- CN111831564A CN111831564A CN202010658744.8A CN202010658744A CN111831564A CN 111831564 A CN111831564 A CN 111831564A CN 202010658744 A CN202010658744 A CN 202010658744A CN 111831564 A CN111831564 A CN 111831564A
- Authority
- CN
- China
- Prior art keywords
- code
- function
- test
- version
- test case
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 338
- 230000006870 function Effects 0.000 claims abstract description 208
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000004891 communication Methods 0.000 claims abstract description 19
- 238000010586 diagram Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000013514 software validation Methods 0.000 description 1
- 239000003826 tablet Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种回归测试方法,在计算设备中执行,计算设备与测试用例库及存储装置通信连接,测试用例库中包括多个测试用例,存储装置中存储有第一版本软件代码对应的函数与测试用例的对应关系,方法包括步骤:获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,所述功能代码包括一个或多个代码段,所述第二版本高于所述第一版本;确定每个代码段分别包括的函数,得到函数列表;基于第一版本软件代码函数与测试用例的对应关系,在测试用例库中选取与函数列表中的函数相对应的测试用例进行回归测试。
Description
技术领域
本发明涉及回归测试技术领域,特别涉及一种回归测试方法、装置及计算设备。
背景技术
回归测试是指修改了旧代码后重新对修改后的旧代码进行测试,以确认修改没有引入新的错误或导致其他未修改的代码产生错误。在软件快速迭代开发中,软件新版本的连续发布使回归测试进行得更加频繁。因此,提高回归测试的有效性及效率对于软件新版本发布是非常有意义的。
为了提高回归测试效率,目前多采用预先挑选出修改的功能代码的方式,并由测试人员挑选部分测试用例对修改的功能代码进行测试,但是由于人工挑选测试用例易受到测试人员的经验和状态等因素的影响,使得回归测试的有效性低,且易出现漏测修改的功能代码的情况。
因此,需要一种在保证回归测试效率的同时提高回归测试的有效性以及避免漏测的回归测试方法,以解决上述技术方案中存在的问题。
发明内容
为此,本发明提供一种回归测试方法、装置及计算设备,以解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种回归测试方法,在计算设备中执行,所述计算设备与测试用例库及存储装置通信连接,所述测试用例库中包括多个测试用例,所述存储装置中存储有第一版本软件代码对应的函数与测试用例的对应关系,所述方法包括步骤:
获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,所述功能代码包括一个或多个代码段,所述第二版本高于所述第一版本;
确定每个代码段分别包括的函数,得到函数列表;
基于所述函数与测试用例的对应关系,在所述测试用例库中选取与所述函数列表中的函数相对应的测试用例进行回归测试。
可选地,方法还包括:
根据回归测试的结果,判断已选取的测试用例是否覆盖所有修改的功能代码;
若否,则从所述修改的功能代码中确定已选取的测试用例未覆盖的功能代码;
分析未覆盖的功能代码对应的功能场景;
针对所述未覆盖的功能代码对应的功能场景,为所述未覆盖的功能代码设计测试用例进行回归测试,得到测试结果。
可选地,方法还包括:
判断所述测试结果是否不小于预设代码覆盖率,若是,则完成回归测试,所述测试结果为最终的回归测试结果;
若否,则从所述功能代码中确定所有测试用例未覆盖的功能代码,并执行分析未覆盖的功能代码对应的功能场景的步骤。
可选地,方法还包括:
若已选取的测试用例覆盖所有的功能代码,则基于已选取的测试用例进行回归测试后得到测试结果。
可选地,其中,采用如下方式建立所述第一版本软件代码对应的函数与测试用例的对应关系:
在所述第一版本软件代码中插桩;
在插桩后的所述第一版本软件代码中运行其在回归测试中用到的所有测试用例,生成各测试用例对应的代码报告;
根据代码报告,确定测试用例与所述第一版本软件代码的代码段的对应关系;
通过代码分析工具对代码段进行分析,得到代码段对应的函数;
基于代码段对应的函数,建立测试用例与所述第一版本软件代码的函数的对应关系;
基于测试用例与所述第一版本软件代码的函数的对应关系,确定所述第一版本软件代码对应的函数与测试用例的对应关系。
可选地,通过代码管理工具获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码。
可选地,通过代码分析工具确定每个代码段分别包括的函数。
可选地,方法还包括:
建立所述第二版本软件代码对应的函数与测试用例的对应关系,以供所述第二版本软件代码的下一版本软件代码在回归测试时使用。
可选地,所述建立所述第二版本软件代码对应的函数与测试用例的对应关系,包括:
在所述第二版本软件代码中插桩;
在插桩后的所述第二版本软件代码中运行其在回归测试中用到的所有测试用例,生成各测试用例的代码报告;
根据代码报告,确定测试用例与所述第二版本软件代码的代码段的对应关系;
通过代码分析工具对代码段进行分析,得到代码段对应的函数;
基于代码段对应的函数,建立测试用例与所述第二版本软件代码的函数的对应关系;
基于所述测试用例与所述第二版本软件代码的函数的对应关系,确定所述第二版本软件代码的函数与测试用例的对应关系。
根据本发明的一个方面,提供了一种回归测试装置在计算设备中执行,所述计算设备与测试用例库及存储装置通信连接,所述测试用例库中包括多个测试用例,所述存储装置中存储有第一版本软件代码对应的函数与测试用例的对应关系,所述装置包括:
获取模块,通过所述获取模块获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,所述功能代码包括一个或多个代码段,所述第二版本高于所述第一版本;
确定模块,通过所述确定模块确定每个代码段分别包括的函数,得到函数列表;
测试模块,基于所述的测试模块,以及基于所述函数与测试用例的对应关系,在所述测试用例库中选取与所述函数列表中的函数相对应的测试用例进行回归测试。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被移动终端读取并执行时,使得所述移动终端执行如上所述方法。
根据本发明的技术方案,提供了一种回归测试方法,该方法无需人工为修改的功能代码分配测试用例,而是计算设备200从待测试代码中确定修改的功能代码,以及修改的功能代码的代码段对应的函数,并基于第一版本软件代码对应的函数与测试用例的对应关系,在测试用例库中选取与代码段的函数相对应的测试用例进行回归测试,使得选取的测试用例更符合修改的功能代码对应的功能场景,进而提高回归测试的有效性,由于无需人工为修改的功能代码分配测试用例,从而不会受到测试人员的经验和状态等因素对回归测试的影响,进一步提高了回归测试的有效性,也能够有效避免漏测的情况出现。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根本发明一个实施例的回归测试系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图;
图3示出了根据本发明一个实施例的建立第一版本软件代码的函数与测试用例的对应关系的方法300的流程图;
图4示出了根据本发明一个实施例的一种回归测试方法400的流程图;
图5示出了根据本发明另一个实施例的一种回归测试方法500的流程图;
图6示出了根据本发明一个实施例的一种回归测试装置600的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在软件快速迭代开发中,为了保证软件新版本的发布不会影响到用户的正常使用,在发布软件新版本之前需要对软件更新的版本进行回归测试,以检测更新的版本是否存在问题,只有在回归测试后软件更新的版本不存在问题,才会发布软件新版本。因此,回归测试的有效性和效率对于软件更新版本的测试而言是十分重要的。
为了提高回归测试有效性和效率,目前多采用预先挑选出修改的功能代码的方式,并由测试人员挑选部分测试用例对修改的功能代码进行测试,但是由于人工挑选测试用例易受到测试人员的经验和状态等因素的影响,使得回归测试的有效性低,且易出现漏测修改的功能代码的情况。
为了解决上述问题,在本发明提出一种回归测试系统100,图1示出了根据本发明一个实施例的回归测试系统100的示意图。如图1所示,该回归测试系统100包括计算设备200、存储装置110和测试用例库120,计算设备200分别与存储装置110和测试用例库120通信连接,例如通过有线或无线的方式网络连接。存储装置110存储有当前待测试的第二版本软件代码的前一版本软件代码(即第一版本软件代码)的函数与测试用例的对应关系,在软件更新迭代的过程中,将当前更新版本软件中的所有代码作为当前待测试的第二版本软件代码。另外,测试用例库120中包括多个测试用例。
为了解决由于人工为修改的功能代码挑选测试用例使得回归测试的有效性低,且易出现漏测修改的功能代码的情况的问题,计算设备200从当前待测试的第二版本软件代码中确定修改的功能代码,并确定修改的功能代码中每个代码段分别包括的函数,得到函数列表,第一版本软件代码再基于存储装置110中存储的第一版本软件代码对应的函数与测试用例的对应关系,在测试用例库120中选取与函数列表中的函数相对应的测试用例进行回归测试。
在本发明的回归测试中,无需人工为修改的功能代码分配测试用例,而是计算设备200基于修改的功能代码对应的函数列表,利用第一软件版本代码对应的函数与测试用例的对应关系,选取与函数列表的函数对应的测试用例进行测试,使得选取的测试用例更符合修改的功能代码对应的功能场景,提高了回归测试的有效性,另外由于不会受到测试人员的经验和状态等因素对回归测试的影响,进一步提高了回归测试的有效性,同时也能够有效避免漏测的情况出现。
在一个实施例中,计算设备200可以实现为服务器,例如应用服务器、Web服务器等;也可以实现为桌面电脑、笔记本电脑、处理器芯片、平板电脑等,但不限于此。计算设备200可以与存储装置110连接,并获取数据存储装置110中所存储的数据。例如,计算设备200可以直接读取存储装置110中的数据(在存储装置110为计算设备200的本地数据库时),也可以通过有线或无线的方式接入互联网,并通过数据接口来获取存储装置110中的数据。
在一个实施例中,存储装置110可以是数据库,进一步地,数据库可以是关系型数据库,例如MYSQL、SqlServer、ACCESS等,存储装置110的数据库可以是驻留于计算设备200中的本地数据库,也可以作为分布式数据库例如Hbase等设置于多个地理位置处;存储装置110也可以是缓存,例如redis缓存等,总之存储装置110用于存储第一版本软件代码对应的函数与测试用例的对应关系,或用于存储当前待测试代码的前多个版本代码对应的函数与测试用例的对应关系。需要说明的是,存储装置110还可用于存储当前待测试的第二版本软件代码对应的函数与测试用例的对应关系,当前待测试的第二版本软件代码对应的函数与测试用例的对应关系,是为了供第二版本软件代码的下一版本软件代码在回归测试时使用。本发明对存储装置110的具体部署、配置情况不做限制。
本发明的回归测试方法可以在计算设备200中执行。图2示出了根据本发明一个实施例的计算设备200的结构图。如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备200中,应用222包括执行回归测试方法400的多条程序指令,这些程序指令可以指示处理器204执行本发明的回归测试方400,以便计算设备200通过执行本发明的回归测试方法,实现为修改的功能代码分配测试用例,而无需人工分配测试用例,从而提高了回归测试的有效性,同时也能够有效避免漏测的情况。
由于本发明的回归测试方法400中,是通过第一版本软件代码对应的函数与测试用例的对应关系,为修改的功能代码对应的函数选取对应的测试用例,因此在执行本发明的回归测试方法400之前,需要建立第一版本软件代码对应的函数与测试用例的对应关系。
图3为本发明一个实施例的建立第一版本软件代码对应的函数与测试用例的对应关系的方法300流程图。该方法300可以在计算设备200中执行。如图3所示,该方法始于步骤S310。
在步骤S310中,在第一版本软件代码中插桩。程序插桩是在保证被测试代码原有逻辑完整性的基础之上,在程序中植入一些采集信息的代码段(采集信息的代码段被称为探针或探测仪),执行代码段的代码,会得到代码运行的特征数据,通过分析特征数据获得测试用例在代码中的逻辑覆盖信息,从而通过对程序插桩能够得到测试用例与其覆盖的代码之间的关系。
在本发明的一个实施方式中,对第一版本软件代码利用java的jacoco工具+更改编译命令的方式进行插桩,且不需要变更源代码,或利用C++的kcov+更改编译命令的方式在不变更源码的情况下,对当第一版本软件代码进行插桩,或利用go的gotest+更改编译命令的方式在不变更源码的情况下,对第一版本软件代码进行插桩。
对第一版本软件代码中插桩后,通过步骤S320,在插桩后的第一版本软件代码中运行其在回归测试时用到的所有测试用例,生成测试用例的代码报告。具体地,在第一版本软件代码中,运行第一版本软件代码在回归测试时用到的所有测试用例,测试用例可为一个或多个,测试用例执行完毕后,代码管理工具会生成各测试用例对应的代码报告。代码管理工具能够记录软件的所有变化,可实现上述功能的所有代码管理工具均在本发明的保护范围之内。在本发明的一个实施例中,例如利用Github代码管理工具将测试用例覆盖的代码逻辑范围记录在测试用例的代码报告中。
生成测试用例的代码报告后,在步骤S330中,根据测试用例的代码报告,确定测试用例与第一版本软件代码的代码段的对应关系。随后在步骤S340中,通过代码分析工具对代码段进行分析,得到代码段对应的函数。
代码分析工具能够帮助人们方便浏览整个工程代码的关键点和入手点,以及学习代码整体框架,因此通过代码分析工具能够得到代码段对应的函数。由于代码分析工具较多,下面将针对不同的编程语言对应举例代码分析工具。例如,若利用C、C++编程,则可选择BLAST(Berkeley Lazy Abstraction Software verification Tool伯克利惰性抽象软件验证工具)、Cpplint等代码分析工具;若利用Java编程,则可选择Checkstyle代码分析工具;若利用JavaScript编程,则可选择JSHint代码分析工具;若利用Python编程,则可选择Pylint代码分析工具。
随后在步骤S350中,基于代码段对应的函数,建立测试用例与第一版本软件代码的函数的对应关系。最后在步骤S360中,基于测试用例与第一版本软件代码的函数的对应关系,确定第一版本软件代码对应的函数与测试用例的对应关系,并将其保存至存储装置110中,使得计算设备200能够通过从存储装置110中获取的第一版本软件代码的函数与测试用例的对应关系,在当前待测试的第二版本软件代码进行回归测试过程中为修改的功能代码选择对应的测试用例。接下来结合已得到的第一版本软件代码的函数与测试用例的对应关系,对本发明的回归测试方法400进行详细描述。
图4为本发明一个实施例的回归测试方法400流程图。该方法400在计算设备200中执行。如图4所示,该方法始于步骤S410。
在步骤S410中,获取当前待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,第二版本高于第一版本,也就相当于当前待测试的第二版本软件代码的版本高于第一版本软件代码的版本,在本发明一个实施例中,通过代码管理工具获取当前待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,而修改的功能代码中还包括一个或多个代码段。
随后在步骤S420中,确定每个代码段分别包括的函数,得到函数列表,进一步地,通过代码分析工具确定修改的功能代码的每个代码段对应的函数,并基于每个代码段对应的函数而得到函数列表。从而在步骤S430中,基于第一版本软件代码对应的函数与测试用例的对应关系,在测试用例库120中选取与函数列表的函数相对应的测试用例进行回归测试,使得选取的测试用例更符合修改的功能代码对应的功能,进而提高回归测试的有效性。
另外,在本发明的回归测试中无需人工为修改的功能代码分配测试用例,而是计算设备200基于修改的功能代码对应的函数,利用第一版本软件代码对应的函数与测试用例的对应关系,选取与函数对应的测试用例并进行测试,从而不会受到测试人员的经验和状态等因素对回归测试的影响,进一步提高了回归测试的有效性,同时也能够有效避免漏测的情况出现。
由于上述步骤中选取的测试用例不一定完全覆盖修改的功能代码,为了在回归测试中尽可能多的覆盖修改的功能代码,以更好的测试更新迭代的代码(即第二版本软件代码),因此需要基于回归测试的结果,进一步判断已选取的测试用例是否覆盖所有修改的功能代码。
若已选取的测试用例未覆盖所有修改的功能代码,则从修改的功能代码中确定已选取的测试用例未覆盖的功能代码,并分析未覆盖的功能代码对应的功能场景,针对未覆盖的功能代码对应的功能场景,为未覆盖的功能代码设计测试用例,并进行回归测试,得到测试结果。
为了在回归测试过程中提高代码覆盖率,在本发明中,还会将测试结果中的代码覆盖率与预设代码覆盖率进行比较,若测试结果中的代码覆盖率大于预设代码覆盖率,例如预设代码覆盖率为80%,若测试结果的代码覆盖率为81%,大于预设代码覆盖率80%,则完成回归测试,得到的测试结果为最终的回归测试结果。
但是,若测试结果中的代码覆盖率为75%,小于预设代码覆盖率80%,则从修改的功能代码中确定已选取的测试用例和设计的测试用例未覆盖的功能代码,并继续分析未覆盖的功能代码对应的功能场景,针对未覆盖的功能代码对应的功能场景,为未覆盖的功能代码设计测试用例,并进行回归测试,得到测试结果,继续对该测试结果中的代码覆盖率与预设代码覆盖率进行比较,直到测试结果中的代码覆盖率大于预设代码覆盖率,则完成本次回归测试,最后一次测试所得到测试结果为回归测试结果。
然而,若已选取的测试用例覆盖所有修改的功能代码,那么在步骤S430中基于已选取的测试用例进行回归测试后得到测试结果,即为本次回归测试的最终测试结果。
在当前待测试的第二版本软件代码回归测试完成后,还会建立当前待测试的第二版本软件代码对应的函数与测试用例的对应关系,以供第二版本软件代码的下一版本代码在回归测试时使用。建立第二版本软件代码对应的函数与测试用例的对应关系的具体步骤如下:
在第二版本软件代码中插桩,在插桩后的第二版本软件代码中,运行第二版本软件代码在回归测试时用到的所有测试用例,测试用例可为一个或多个,通过代码管理工具生成各测试用例的代码报告,根据各测试用例的代码报告,确定测试用例与第二版本软件代码的代码段的对应关系,再通过代码分析工具对代码段进行分析,得到代码段对应的函数,并基于代码段对应的函数,建立测试用例与第二版本软件代码的函数的对应关系,最后根据测试用例与第二版本软件代码的函数的对应关系,确定第二版本软件代码的函数与测试用例的对应关系,并将其保存至存储装置110中。
从而在对第二版本软件代码的下一版本代码进行回归测试时,计算设备200直接基于存储装置110中存储的第二版本软件代码的函数与测试用例的对应关系,为第二版本软件代码的下一版本代码中修改的代码分配与功能场景对应的测试用例,从而提高回归测试的有效性。
图5为本发明一个实施例的包含完整工作过程的回归测试方法500流程图。该方法500在计算设备200中执行。基于图5对本发明的回归测试方法的完整工作过程进行叙述,该方法始于步骤S501。
首先执行步骤S501,获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,继续执行步骤S502,基于步骤S501确定功能代码中每个代码段分别包括的函数,得到函数列表,继续执行步骤S503,基于存储装置110中存储的第一版本软件代码对应的函数与测试用例的对应关系,在测试用例库120中选取与步骤S502确定的、函数列表的函数相对应的测试用例进行回归测试。接下来,执行步骤S504,基于回归测试的结果,判断已选取的测试用例是否覆盖所有修改的功能代码,若否,则执行步骤S505,从修改的功能代码中确定已选取的测试用例未覆盖的功能代码,继续执行步骤S506,分析未覆盖的功能代码对应的功能场景,继续执行步骤S507,针对未覆盖的功能代码对应的功能场景,为未覆盖的功能代码设计测试用例进行回归测试,得到测试结果。接下来执行步骤S508,判断测试结果是否不小于预设代码覆盖率,若是,则执行步骤S510完成回归测试,测试结果为最终的回归测试结果,若否,则执行步骤S509,从修改的功能代码中确定所有测试用例未覆盖的功能代码,并跳转至步骤S506中继续执行步骤S506至步骤S510。但是,若已选取的测试用例覆盖所有修改的功能代码,则执行步骤S510,基于已选取的测试用例进行回归测试后,得到测试结果。
图6示出了根据本发明一个实施例的回归测试装置600的示意图。回归测试装置600适于执行本发明的回归测试方法400。回归测试装置600驻留在计算设备200中,以使计算设备200执行本发明的回归测试方法400。
如图6所示,回归测试装置600包括获取模块610、确定模块620以及测试模块630。
根据一个实施例,通过获取模块610获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,其中功能代码包括一个或多个代码段,第二版本高于所述第一版本。
根据一个实施例,通过确定模块620确定每个代码段分别包括的函数,得到函数列表。
根据一个实施例,基于测试模块630,以及基于函数与测试用例的对应关系,在测试用例库中选取与函数列表中的函数相对应的测试用例进行回归测试。
根据一个实施例,通过获取单元610获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,从而通过确定模块620确定功能代码的每个代码段分别包括的函数,得到函数列表,最后基于测试模块630,以及根据函数与测试用例的对应关系,在测试用例库中选取与函数列表中的函数相对应的测试用例进行回归测试,以实现计算设备200为修改的功能代码分配符合功能场景的测试用例,从而提高回归测试有效性,同时本发明的回归测试方法不会受到测试人员的经验和状态等因素对回归测试的影响,因此进一步提高了回归测试的有效性,也能够有效避免漏测的情况出现。
需要说明的是,获取模块610具体用于执行如前述步骤S410,确定模块620具体用于执行如前述步骤S420的方法,测试模块630具体用于执行如前述步骤S430的方法。
A8如A1至7中任一项所述的方法,还包括:
建立所述第二版本软件代码对应的函数与测试用例的对应关系,以供所述第二版本软件代码的下一版本软件代码在回归测试时使用。
A9如A8所述的方法,其中,所述建立所述第二版本软件代码对应的函数与测试用例的对应关系,包括:
在所述第二版本软件代码中插桩;
在插桩后的所述第二版本软件代码中运行其在回归测试中用到的所有测试用例,生成各测试用例的代码报告;
根据代码报告,确定测试用例与所述第二版本软件代码的代码段的对应关系;
通过代码分析工具对代码段进行分析,得到代码段对应的函数;
基于代码段对应的函数,建立测试用例与所述第二版本软件代码的函数的对应关系;
基于所述测试用例与所述第二版本软件代码的函数的对应关系,确定所述第二版本软件代码的函数与测试用例的对应关系。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的回归测试方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种回归测试方法,在计算设备中执行,所述计算设备与测试用例库及存储装置通信连接,所述测试用例库中包括多个测试用例,所述存储装置中存储有第一版本软件代码对应的函数与测试用例的对应关系,所述方法包括步骤:
获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,所述功能代码包括一个或多个代码段,所述第二版本高于所述第一版本;
确定每个代码段分别包括的函数,得到函数列表;
基于所述第一版本软件代码函数与测试用例的对应关系,在所述测试用例库中选取与所述函数列表中的函数相对应的测试用例进行回归测试。
2.根据权利要求1所述的方法,还包括:
根据回归测试的结果,判断已选取的测试用例是否覆盖所有修改的功能代码;
若否,则从所述修改的功能代码中确定已选取的测试用例未覆盖的功能代码;
分析未覆盖的功能代码对应的功能场景;
针对所述未覆盖的功能代码对应的功能场景,为所述未覆盖的功能代码设计测试用例进行回归测试,得到测试结果。
3.根据权利要求2所述的方法,还包括:
判断所述测试结果是否不小于预设代码覆盖率,若是,则完成回归测试,所述测试结果为最终的回归测试结果;
若否,则从所述功能代码中确定所有测试用例未覆盖的功能代码,并执行分析未覆盖的功能代码对应的功能场景的步骤。
4.根据权利要求2所述的方法,还包括:
若已选取的测试用例覆盖所有的功能代码,则基于已选取的测试用例进行回归测试后得到测试结果。
5.如权利要求1至4中任一项所述的方法,其中,采用如下方式建立所述第一版本软件代码对应的函数与测试用例的对应关系:
在所述第一版本软件代码中插桩;
在插桩后的所述第一版本软件代码中运行其在回归测试中用到的所有测试用例,生成各测试用例对应的代码报告;
根据代码报告,确定测试用例与所述第一版本软件代码的代码段的对应关系;
通过代码分析工具对代码段进行分析,得到代码段对应的函数;
基于代码段对应的函数,建立测试用例与所述第一版本软件代码的函数的对应关系;
基于测试用例与所述第一版本软件代码的函数的对应关系,确定所述第一版本软件代码对应的函数与测试用例的对应关系。
6.如权利要求1至5中任一项所述的方法,其中,通过代码管理工具获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码。
7.如权利要求1至6中任一项所述的方法,其中,通过代码分析工具确定每个代码段分别包括的函数。
8.一种回归测试装置,在计算设备中执行,所述计算设备与测试用例库及存储装置通信连接,所述测试用例库中包括多个测试用例,所述存储装置中存储有第一版本软件代码对应的函数与测试用例的对应关系,所述装置包括:
获取模块,通过所述获取模块获取待测试的第二版本软件代码相对于第一版本软件代码发生变更的功能代码,所述功能代码包括一个或多个代码段,所述第二版本高于所述第一版本;
确定模块,通过所述确定模块确定每个代码段分别包括的函数,得到函数列表;
第一版本软件代码测试模块,基于所述的测试模块,以及基于所述函数与测试用例的对应关系,在所述测试用例库中选取与所述函数列表中的函数相对应的测试用例进行回归测试。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被移动终端读取并执行时,使得所述移动终端执行如权利要求1-7中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010658744.8A CN111831564A (zh) | 2020-07-09 | 2020-07-09 | 一种回归测试方法、装置及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010658744.8A CN111831564A (zh) | 2020-07-09 | 2020-07-09 | 一种回归测试方法、装置及计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831564A true CN111831564A (zh) | 2020-10-27 |
Family
ID=72900372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010658744.8A Pending CN111831564A (zh) | 2020-07-09 | 2020-07-09 | 一种回归测试方法、装置及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831564A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540930A (zh) * | 2020-12-28 | 2021-03-23 | 北京百家科技集团有限公司 | 一种针对软件更新的评测方法、装置以及电子设备 |
CN112817865A (zh) * | 2021-02-24 | 2021-05-18 | 福建天泉教育科技有限公司 | 一种基于组件化分布式系统的覆盖精准测试方法及其系统 |
CN113032262A (zh) * | 2021-03-23 | 2021-06-25 | 重庆智行者信息科技有限公司 | 一种自动化仿真测试方法 |
CN113094283A (zh) * | 2021-04-29 | 2021-07-09 | 平安国际智慧城市科技股份有限公司 | 一种数据获取方法、装置、设备及存储介质 |
CN113342685A (zh) * | 2021-06-29 | 2021-09-03 | 平安资产管理有限责任公司 | 精准测试方法、装置、计算机设备和存储介质 |
CN113626325A (zh) * | 2021-08-05 | 2021-11-09 | 杭州遥望网络科技有限公司 | 一种代码迭代更新中的接口测试方法、装置及设备 |
CN113946515A (zh) * | 2021-10-19 | 2022-01-18 | 平安普惠企业管理有限公司 | 代码覆盖率测试方法、装置、计算机设备及存储介质 |
CN116383092A (zh) * | 2023-05-31 | 2023-07-04 | 北京中科卓信软件测评技术中心 | 一种软件模糊测试的有效测试用例复用方法及装置 |
-
2020
- 2020-07-09 CN CN202010658744.8A patent/CN111831564A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540930A (zh) * | 2020-12-28 | 2021-03-23 | 北京百家科技集团有限公司 | 一种针对软件更新的评测方法、装置以及电子设备 |
CN112817865A (zh) * | 2021-02-24 | 2021-05-18 | 福建天泉教育科技有限公司 | 一种基于组件化分布式系统的覆盖精准测试方法及其系统 |
CN113032262A (zh) * | 2021-03-23 | 2021-06-25 | 重庆智行者信息科技有限公司 | 一种自动化仿真测试方法 |
CN113094283A (zh) * | 2021-04-29 | 2021-07-09 | 平安国际智慧城市科技股份有限公司 | 一种数据获取方法、装置、设备及存储介质 |
CN113342685A (zh) * | 2021-06-29 | 2021-09-03 | 平安资产管理有限责任公司 | 精准测试方法、装置、计算机设备和存储介质 |
CN113626325A (zh) * | 2021-08-05 | 2021-11-09 | 杭州遥望网络科技有限公司 | 一种代码迭代更新中的接口测试方法、装置及设备 |
CN113946515A (zh) * | 2021-10-19 | 2022-01-18 | 平安普惠企业管理有限公司 | 代码覆盖率测试方法、装置、计算机设备及存储介质 |
CN116383092A (zh) * | 2023-05-31 | 2023-07-04 | 北京中科卓信软件测评技术中心 | 一种软件模糊测试的有效测试用例复用方法及装置 |
CN116383092B (zh) * | 2023-05-31 | 2023-08-01 | 北京中科卓信软件测评技术中心 | 一种软件模糊测试的有效测试用例复用方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831564A (zh) | 一种回归测试方法、装置及计算设备 | |
CN101473301A (zh) | 迭代静态和动态软件分析 | |
CN108459964B (zh) | 测试用例选择方法、装置、设备以及计算机可读存储介质 | |
CN106776334B (zh) | 基于注释生成测试用例方法及装置 | |
CN106776338B (zh) | 一种测试方法、装置及服务器 | |
CN107729235B (zh) | 定位代码缺陷生产者的方法、装置、设备及计算机可读介质 | |
US9558852B2 (en) | Method and apparatus for defect repair in NAND memory device | |
CN106203007A (zh) | 一种代码处理方法、装置及计算设备 | |
CN113342669B (zh) | 一种缩短芯片代码覆盖率收敛时间的验证方法及装置 | |
JP2012150535A (ja) | プログラム検証方法及び検証プログラム | |
US11115137B2 (en) | Method and electronic testing device for determining optimal test case for testing user equipment | |
CN114721922B (zh) | 一种服务器集群的性能评估方法、计算设备及存储介质 | |
CN112860267B (zh) | 一种内核裁剪方法及计算设备 | |
JP5811859B2 (ja) | ソースコードの静的解析装置、システム、方法、及びそのためのプログラム | |
US9117023B2 (en) | Dynamic generation of test segments | |
US7962796B2 (en) | State testing device and methods thereof | |
CN113821438A (zh) | 一种应用响应性能测试方法、系统及计算设备 | |
CN114328273B (zh) | 一种应用程序控件的调试方法、调试装置及计算设备 | |
US10255166B2 (en) | Determination of valid input sequences for an unknown binary program | |
CN104424060A (zh) | 一种用于确定故障的方法和装置 | |
CN115794651B (zh) | 一种支持多二进制的无冲突插桩方法和系统 | |
CN116069629B (zh) | 测试设计的方法、电子设备及存储介质 | |
CN115510782B (zh) | 定位验证错误的方法、电子设备和存储介质 | |
CN110737577B (zh) | 一种测试缺陷数据存储方法和装置 | |
CN114036066A (zh) | 一种单元测试方法、装置、计算设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |