CN114048125A - 一种测试用例确定方法、装置、计算设备及存储介质 - Google Patents
一种测试用例确定方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN114048125A CN114048125A CN202111303917.5A CN202111303917A CN114048125A CN 114048125 A CN114048125 A CN 114048125A CN 202111303917 A CN202111303917 A CN 202111303917A CN 114048125 A CN114048125 A CN 114048125A
- Authority
- CN
- China
- Prior art keywords
- information
- test case
- line code
- determining
- code
- 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 302
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000008859 change Effects 0.000 claims abstract description 156
- 230000004044 response Effects 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 107
- 230000008569 process Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003068 static effect Effects 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/3676—Test management for coverage analysis
-
- 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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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
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
技术领域
本申请实施例涉及金融科技(Fintech)领域,尤其涉及一种测试用例确定方法、装置、计算设备及存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。在金融领域中,为了保证系统正常、高效运行,需要在系统中的代码开发完成后对代码进行测试。
相关技术中,每当系统进行升级,需要重新确定测试所需的测试用例,以对代码进行测试。然而,确定所有代码的测试用例需要耗费大量时间,上述方案难以高效地确定测试所需的测试用例。
综上,目前亟需一种测试用例确定方法,用以提高确定测试所需的测试用例的效率。
发明内容
本申请实施例提供了一种测试用例确定方法、装置、计算设备及存储介质,用以提高确定测试所需的测试用例的效率。
第一方面,本申请实施例提供了一种测试用例确定方法,该方法包括:
响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息;其中,所述执行信息为唯一标识对应行代码的信息;
基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例;
其中,所述对应关系通过以下方式确定:
针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;
通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
上述技术方案中,由于在系统的版本发生变更时,通常只有部分行代码发生变化,而这些变化行代码只会影响旧版本系统中部分测试用例,而其他测试用例不受此次版本变更影响,因此不需要重新确定所有行代码所需的测试用例;通过确定新版本系统相对于旧版本系统的变化行代码的执行信息;进而确定这些变化行代码的执行信息所影响的目标测试用例,后续无需对旧版本中的非目标测试用例进行调整,只用基于目标测试用例进行调整即可,大大减少了需要调整的测试用例的数量,从而提高了确定测试所需的测试用例的效率;另外,通过线程变量,在测试用例执行过程实时、精准地建立起行代码的执行信息与测试用例的对应关系。
一些可选的实施方式中,所述执行信息包括类信息以及函数信息;基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例,包括:
针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码;
若是,则将所述变化行代码的类信息以及函数信息确定为目标信息;
基于所述对应关系,将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例。
上述技术方案中,如果旧版本系统中有与变化行代码的类信息以及函数信息均相同的代码,这些代码对应的测试用例会受到上述变化行代码的影响,因此可将这些测试用例确定为目标测试用例。
一些可选的实施方式中,将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例之后,还包括:
针对任一目标信息,若所述目标信息对应的目标测试用例覆盖所述新版本系统中执行信息包含所述目标信息的代码,则不调整所述目标信息对应的目标测试用例;
若所述目标信息对应的目标测试用例没有覆盖所述新版本系统中执行信息包含所述目标信息的代码,则调整所述目标信息对应的目标测试用例。
上述技术方案中,如果目标信息对应的目标测试用例能够覆盖新版本系统中执行信息包含该目标信息的代码,说明用这些目标测试用例就能测试所对应的所有行代码,无需再调整这些目标测试用例,进一步提高了确定测试所需的测试用例的效率;反之,如果目标信息对应的目标测试用例没有覆盖新版本系统中执行信息包含该目标信息的代码,说明用这些目标测试用例无法测试所对应的所有行代码,需要对这些目标测试用例进行调整,以满足测试需求。
一些可选的实施方式中,针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码之后,还包括:
若所述旧版本系统中没有与所述变化行代码的类信息以及函数信息均相同的代码,则增加所述变化行代码所对应的测试用例。
上述技术方案中,如果旧版本系统中没有与变化行代码的类信息以及函数信息均相同的代码,这些变化行代码并不会影响旧版本系统中的测试用例,但由于旧版本系统中并没有这些变化行代码的测试用例,需要为这些变化行代码配置新的测试用例,从而满足这些变化行代码的测试需求。
一些可选的实施方式中,所述执行信息包括类信息、函数信息以及行信息;确定新版本系统相对于旧版本系统的变化行代码的执行信息,包括:
确定所述新版本系统相对于所述旧版本系统的变化行代码的行信息;
基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息。
上述技术方案中,基于变化行代码的行信息,从编译文件的结构信息中确定该变化行代码的类信息以及函数信息,无需遍历类文件中所有关键字,可以快速、准确地确定出该变化行代码的执行信息。
一些可选的实施方式中,基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息,包括:
获取所述结构信息中各类的第一行范围,并将所述变化行代码的行信息所在的第一行范围对应的类,确定为所述变化行代码的类信息;
确定所述变化行代码的类信息对应的各函数的第二行范围,并将所述变化行代码的行信息所在的第二行范围对应的函数,确定为所述变化行代码的函数信息。
一些可选的实施方式中,所述变化行代码包括:所述新版本系统相对于所述旧版本系统新增的行代码,和/或减少的行代码。
上述技术方案中,不仅考虑到新版本系统相对于旧版本系统新增的行代码,还考虑到新版本系统相对于旧版本系统减少的行代码,从而较为完整地确定出所有对测试用例有影响的行代码。
第二方面,本申请实施例还提供了一种测试用例确定装置,包括:
执行信息确定模块,用于响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息;其中,所述执行信息为唯一标识对应行代码的信息;
测试用例处理模块,用于基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例;
其中,所述对应关系通过以下方式确定:
针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;
通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
第三方面,本申请实施例提供一种计算设备,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述第一方面任一所述的测试用例确定方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述第一方面任一所述的测试用例确定方法。
另外,第二至四方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的第一种测试用例确定方法的流程示意图;
图2为本申请实施例提供的线程与接口之间的对应关系示意图;
图3为本申请实施例提供的确定新版本系统相对于旧版本系统的变化行代码的执行信息的方法的流程示意图;
图4为本申请实施例提供的第二种测试用例确定方法的流程示意图;
图5为本申请实施例提供的测试用例确定装置的结构示意图;
图6为本申请实施例提供的计算设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
术语“函数”是指行代码对应的方法,在一些实施例中直接用“方法”指代“函数”。
为了保证系统正常、高效运行,需要在系统中的代码开发完成后对代码进行测试。一些实施例中,每当系统进行升级(系统开发人员修改代码),就需要重新确定测试所需的测试用例,以对代码进行测试。
然而,系统开发人员通常对测试用例所测试的功能了解有限,系统中的代码较多,开发人员自己编写所有代码的测试用例,或者选择测试人员编写的测试用例的过程,会耗费大量时间和精力。
鉴于此,本申请实施例提出一种测试用例确定方法、装置、计算设备及存储介质,该方法包括:响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息;其中,所述执行信息为唯一标识对应行代码的信息;基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例;其中,所述对应关系通过以下方式确定:针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
由于在系统的版本发生变更时,通常只有部分行代码发生变化,而这些变化行代码只会影响旧版本系统中部分测试用例,而其他测试用例不受此次版本变更影响,因此不需要重新确定所有行代码所需的测试用例;通过确定新版本系统相对于旧版本系统的变化行代码的执行信息;进而确定这些变化行代码的执行信息所影响的目标测试用例,后续无需对旧版本中的非目标测试用例进行调整,只用基于目标测试用例进行调整即可,大大减少了需要调整的测试用例的数量,从而提高了确定测试所需的测试用例的效率;另外,通过线程变量,在测试用例执行过程实时、精准地建立起行代码的执行信息与测试用例的对应关系。
下面将结合附图及具体实施例,对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
本申请实施例提供第一种测试用例确定方法,如图1所示,包括以下步骤:
步骤S101:响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息。
其中,所述执行信息为唯一标识对应行代码的信息。
由于在系统的版本发生变更时,通常只有部分行代码发生变化,而这些变化行代码只会影响旧版本系统中部分测试用例。为了确定版本变更所影响的目标测试用例,需要先确定哪些行代码发生了变化。
本实施例可通过但不限于如下方式确定系统的版本发生变更:
在系统启动后,通过挂载脚本将代理程序加载到该系统中;
将监测到的系统部署信息(系统部署信息可以包括系统的标识、系统的名称、系统的版本信息以及系统的IP地址中的部分或全部)传递到挂载脚本的参数中,进而加载到上述代理程序的内存中;
如果当前的系统的版本信息与之前的系统的版本信息不同,就确定系统的版本发生了变更。
一些具体的实施例中,上述代理程序可以为jvm-sandbox(一种面向切面编程框架)。
上述确定系统的版本发生变更的方式只是示例性说明,实施中也可采用其他方式确定。
上述执行信息为唯一标识对应行代码的信息,示例性的,执行信息包括类信息、函数信息以及行信息,即基于类信息、函数信息以及行信息可以确定唯一的行代码。
步骤S102:基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例。
行代码与测试用例之间存在关联,即各测试代码是用于哪个或哪些行代码进行测试。实施中,行代码与测试用例之间可以存在以下任一关联:
一个行代码与一个测试用例关联,一个行代码与多个测试用例关联,多个行代码与一个测试用例关联,多个行代码与多个测试用例关联,本申请对此不做具体限定。
本实施例,上述变化行代码所影响的目标测试用例,可以是变化行代码直接或间接关联的测试用例。例如,在多个行代码与多个测试用例关联时,一个变化行代码不仅影响直接关联的测试用例,还影响这多个测试用例中间接关联的测试用例。
上述技术方案中,由于在系统的版本发生变更时,通常只有部分行代码发生变化,而这些变化行代码只会影响旧版本系统中部分测试用例,而其他测试用例不受此次版本变更影响,因此不需要重新确定所有行代码所需的测试用例;通过确定新版本系统相对于旧版本系统的变化行代码的执行信息;进而确定这些变化行代码的执行信息所影响的目标测试用例,后续无需对旧版本中的非目标测试用例进行调整,只用基于目标测试用例进行调整即可,大大减少了需要调整的测试用例的数量,从而提高了确定测试所需的测试用例的效率。
上述对应关系可通过但不限于如下方式确定:
针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;
通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
如上所述,在系统启动后,可通过挂载脚本将代理程序加载到该系统中。实施中,可通过该代理程序注册监听指令的类信息,同时改写类信息对应的执行代码,在每行代码执行之前增加一个回调函数(beforeLine);针对任一测试用例,通过回调函数在执行该测试用例过程中,确定对应的行代码的执行信息(如上所述,可以为类信息、函数信息以及行信息)。
本实施例,通过线程变量,在测试用例执行过程实时、精准地建立起行代码的执行信息与测试用例的对应关系。
下面以一个具体的示例进行说明:
系统中设置多个接口,将测试用例输入接口后,可获取接口扩展参数中的测试用例标识信息,存储到线程变量中;
在对应行代码执行测试用例过程中,确定对应的行代码的执行信息,存储到同一线程变量中。线程变量是伴随着消息处理线程的整个过程而存在的,将测试用例标识信息与关联的行代码的执行信息绑定在一起。
另外,还可将测试用例所输入的接口的标识信息也存储到同一线程变量中。
参阅图2所示,在接口1的行代码执行测试用例1A时,接口2的行代码可以并行执行测试用例3B。即,线程之间的数据处理互不影响,不同接口中的行代码可以并行执行测试用例,实现不同接口之间的数据隔离。
通过线程变量,不仅在测试过程中建立了测试用例标识信息、行代码的执行信息以及接口的标识信息之间的对应关系,还实现不同接口之间的数据隔离。
一些可选的实施方式中,所述变化行代码包括:所述新版本系统相对于所述旧版本系统新增的行代码,和/或减少的行代码。
实施中,系统的版本变更,可能会在旧版本系统的基础上增加一部分行代码;也可能会在旧版本系统的基础上删除一部分行代码;还可能在旧版本系统的基础上增加一部分行代码,并删除另一部分行代码。因此,如果只基于代码增量的差异比较,就会忽略掉在旧版本系统的基础上删除的行代码,这些行代码也会影响测试用例。
本实施例,通过结合新版本系统以及旧版本系统的实际变更,将新版本系统中的行代码以及旧版本系统中的行代码进行了双向变动识别,不仅考虑到新版本系统相对于旧版本系统新增的行代码,还考虑到新版本系统相对于旧版本系统减少的行代码,从而较为完整地确定出所有对测试用例有影响的行代码。
如上所述,上述执行信息可以包括类信息、函数信息以及行信息;对应的,本实施例提供一种确定新版本系统相对于旧版本系统的变化行代码的执行信息的方法,如图3所示,包括以下步骤:
步骤S301:确定所述新版本系统相对于所述旧版本系统的变化行代码的行信息。
示例性的,通过git(一种管理文件的程序)的相关命令,获取到新版本系统相对于旧版本系统的变化行代码的行信息,该变化行代码的行信息包括新版本系统相对于旧版本系统,新增的行代码在新版本系统中的行信息,以及减少的行代码在旧版本系统中的行信息。
上述git的相关命令可以包括如下两个指令:
命令1
命令2
通过上述命令1可以获取到行代码变更文件,通过上述命令2可以获取到变更详细记录,从而确定出变化行代码的行信息。
可以理解,上述git的相关命令只是示例性说明,本实施例对此不做具体限定。
步骤S302:基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息。
实施中,如果直接解析类文件,通过遍历类文件中的关键字,确定变化行代码的行信息所对应的类信息以及函数信息,由于判断条件较多,存在效率较低的问题。由于Java(计算机编程语言)类的编译文件(xx.class文件,如test.class文件)中包含行代码的相关信息,因此,基于变化行代码的行信息,可以从编译文件的结构信息中确定变化行代码的类信息以及函数信息。
一些可选的实施方式中,基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息,可通过但不限于以下方式实现:
获取所述结构信息中各类的第一行范围,并将所述变化行代码的行信息所在的第一行范围对应的类,确定为所述变化行代码的类信息;
确定所述变化行代码的类信息对应的各函数的第二行范围,并将所述变化行代码的行信息所在的第二行范围对应的函数,确定为所述变化行代码的函数信息。
下面以一个具体的示例进行说明(该示例中的方法指代上述实施例中的函数):
加载类的test.class文件,根据test.class文件的结构信息,确定各类的第一行范围,将变化行代码的行信息所在的第一行范围对应的类,确定为变化行代码的类信息(以下称为目标类);根据目标类的相关信息中的“方法计数器”以及“方法集合”,逐个遍历各方法的相关信息;其中,目标类的相关信息可参阅表1所示:
表1
类型 | 名称 | 说明 | 长度 |
u4 | magic | 魔数,识别class文件格式 | 4个字节 |
u2 | minor_version | 副版本号 | 2个字节 |
u2 | major_version | 主版本号 | 2个字节 |
u2 | constant_pool_count | 常量池计算器 | 2个字节 |
cp_info | constant_pool | 常量池 | n个字节 |
u2 | access_flags | 访问标志 | 2个字节 |
u2 | this_class | 类索引 | 2个字节 |
u2 | super_class | 父类索引 | 2个字节 |
u2 | interfaces_count | 接口计数器 | 2个字节 |
u2 | interfaces | 接口索引集合 | 2个字节 |
u2 | fields_count | 字段个数 | 2个字节 |
field_info | fields | 字段集合 | n个字节 |
u2 | method_count | 方法计数器 | 2个字节 |
method_info | methods | 方法集合 | n个字节 |
u2 | attributes_count | 附加属性计数器 | 2个字节 |
方法的相关信息可参阅表2所示:
表2
针对任一方法,基于该方法的相关信息中的“属性集合”对应的信息,确定“LineNumberTable”的信息;其中,“属性集合”对应的信息可参阅表3所示:
表3
上述“LineNumberTable”的信息可参阅表4所示:
表4
通过解析LineNumberTable的信息,获取“line_number_info”(该方法的第二行范围),其长度为4个字节,前两个字节为start_pc(字节码行号);后两个字节为line_number(Java源代码行号)。
上述示例只是确定执行信息的一种可行的实现方式,本申请并不以此为限。
上述方案,基于变化行代码的行信息,从编译文件的结构信息中确定该变化行代码的类信息以及函数信息,无需遍历类文件中所有关键字,可以快速、准确地确定出该变化行代码的执行信息。
本申请实施例提供第二种测试用例确定方法,如图4所示,包括以下步骤:
步骤S401:响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息。
其中,所述执行信息为唯一标识对应行代码的信息。
步骤S401的具体实现方式可参照上述实施例,此处不再赘述。
步骤S402:针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码。
本实施例,如果旧版本系统中有与变化行代码的类信息以及函数信息均相同的代码,可以从旧版本系统中确定执行信息包含该类信息以及函数信息的代码对应的测试用例,这些测试用例会受到上述变化行代码的影响,也就是说这些测试用例中可能有部分或全部需要调整,基于此,针对任一变化行代码,如果旧版本系统中有与该变化行代码的类信息以及函数信息均相同的代码,则执行步骤S403;
如果旧版本系统中没有与变化行代码的类信息以及函数信息均相同的代码,这些变化行代码并不会影响旧版本系统中的测试用例,但需要为这些变化行代码配置新的测试用例,基于此,针对任一变化行代码,如果旧版本系统中没有与变化行代码的类信息以及函数信息均相同的代码,则执行步骤S404。
步骤S403:将所述变化行代码的类信息以及函数信息确定为目标信息;基于所述对应关系,将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例。
示例性的,如果旧版本系统中有与变化行代码的类信息以及函数信息均相同的代码,就将旧版本中的这些代码所用到的测试用例确定为目标测试用例。例如:
旧版本系统中有100个行代码,分别为行代码1~100,其中,行代码1~10的执行信息包含类1和函数11,对应测试用例1A、测试用例1B以及测试用例1C;行代码12~25的执行信息包含类1和函数12,对应测试用例2A、测试用例2B、测试用例2C以及测试用例2D;行代码26~36的执行信息包含类1和函数13,对应测试用例3A、测试用例3B以及测试用例3C;行代码37~48的执行信息包含类2和函数21,对应测试用例4A、测试用例4B以及测试用例4C;行代码49~64的执行信息包含类2和函数22,对应测试用例5A、测试用例5B、测试用例5C以及测试用例5D;行代码65~79的执行信息包含类3和函数31,对应测试用例6A、测试用例6B以及测试用例6C;行代码80~100的执行信息包含类3和函数32,对应测试用例7A、测试用例7B、测试用例7C、测试用例7D以及测试用例7E;
变化行代码1的类信息为类3,函数信息为函数31,那么测试用例6A、测试用例6B以及测试用例6C是受影响的目标测试用例;
变化行代码2的类信息为类1,函数信息为函数12,那么测试用例2A、测试用例2B、测试用例2C以及测试用例2D也是受影响的目标测试用例。
上述示例只是为了更清楚地说明如何确定目标测试用例,本实施例并不限定旧版本系统中行代码的数量,以及类和函数的具体实现方式。
步骤S404:增加所述变化行代码所对应的测试用例。
还是以上述旧版本系统中的100个行代码为例:
变化行代码3的类信息为类4,函数信息为函数41,上述旧版本系统中并没有类4和函数41的代码,需要增加变化行代码3所需的测试用例;
变化行代码4的类信息为类3,函数信息为函数33,上述旧版本系统中虽有类3的代码,但这些代码的函数信息都不是函数33,因此,也需要增加变化行代码4所需的测试用例。
上述示例只是为了更清楚地说明如何增加变化行代码对应的测试用例,本申请并不以此为限。
在一些可选的实施方式中,在步骤S403之后,还包括:
步骤S405:针对任一目标信息,若所述目标信息对应的目标测试用例覆盖所述新版本系统中执行信息包含所述目标信息的代码,则不调整所述目标信息对应的目标测试用例;若所述目标信息对应的目标测试用例没有覆盖所述新版本系统中执行信息包含所述目标信息的代码,则调整所述目标信息对应的目标测试用例。
如上所述,目标测试用例会受到变化行代码的影响,可能有部分或全部需要调整,因此,还需要从目标测试用例中确定哪些是需要调整的测试用例,哪些是不需要调整的测试用例。
本实施例中,如果目标信息对应的目标测试用例能够覆盖新版本系统中执行信息包含该目标信息的代码,说明用这些目标测试用例就能测试所对应的所有行代码,无需再调整这些目标测试用例;反之,如果没有覆盖新版本系统中执行信息包含该目标信息的代码,说明用这些目标测试用例无法测试所对应的所有行代码,需要对这些目标测试用例进行调整。
还是以上述变化行代码1以及变化行代码2为例,如果变化行代码1是新增的行代码,那么新版本系统中类3和函数31对应上述行代码65~79以及变化行代码1,如果测试用例6A、测试用例6B以及测试用例6C不能覆盖上述行代码65~79以及变化行代码1,需要调整测试用例6A、测试用例6B以及测试用例6C,如对测试用例6C进行修改,或者新增测试用例6D等。
如果变化行代码2是减少的行代码(旧版本系统中的行代码25),那么新版本系统中类1和函数12对应上述行代码12~24,如果测试用例2A、测试用例2B、测试用例2C以及测试用例2D能覆盖上述行代码12~24,不需要调整测试用例2A、测试用例2B、测试用例2C以及测试用例2D。
上述示例只是为了更清楚地说明在不同应用场景中是否对目标测试用例进行调整,本实施例并不以此为限。
上述技术方案中,如果旧版本系统中有与变化行代码的类信息以及函数信息均相同的代码,这些代码对应的测试用例会受到上述变化行代码的影响,因此可将这些测试用例确定为目标测试用例;如果旧版本系统中没有与变化行代码的类信息以及函数信息均相同的代码,这些变化行代码并不会影响旧版本系统中的测试用例,但由于旧版本系统中并没有这些变化行代码的测试用例,需要为这些变化行代码配置新的测试用例,从而满足这些变化行代码的测试需求。
基于相同的发明构思,本申请实施例提供一种测试用例确定装置,参阅图5所示,测试用例确定装置500包括:
执行信息确定模块501,用于响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息;其中,所述执行信息为唯一标识对应行代码的信息;
测试用例处理模块502,用于基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例;
其中,所述对应关系通过以下方式确定:
针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;
通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
可选地,所述执行信息包括类信息以及函数信息;测试用例处理模块502,具体用于:
针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码;
若是,则将所述变化行代码的类信息以及函数信息确定为目标信息;
基于所述对应关系,将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例。
可选地,测试用例处理模块502在将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例之后,还用于:
针对任一目标信息,若所述目标信息对应的目标测试用例覆盖所述新版本系统中执行信息包含所述目标信息的代码,则不调整所述目标信息对应的目标测试用例;
若所述目标信息对应的目标测试用例没有覆盖所述新版本系统中执行信息包含所述目标信息的代码,则调整所述目标信息对应的目标测试用例。
可选地,测试用例处理模块502针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码之后,还用于:
若所述旧版本系统中没有与所述变化行代码的类信息以及函数信息均相同的代码,则增加所述变化行代码所对应的测试用例。
可选地,所述执行信息包括类信息、函数信息以及行信息;执行信息确定模块501,具体用于:
确定所述新版本系统相对于所述旧版本系统的变化行代码的行信息;
基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息。
可选地,执行信息确定模块501,具体用于:
获取所述结构信息中各类的第一行范围,并将所述变化行代码的行信息所在的第一行范围对应的类,确定为所述变化行代码的类信息;
确定所述变化行代码的类信息对应的各函数的第二行范围,并将所述变化行代码的行信息所在的第二行范围对应的函数,确定为所述变化行代码的函数信息。
可选地,所述变化行代码包括:所述新版本系统相对于所述旧版本系统新增的行代码,和/或减少的行代码。
由于该装置即是本申请实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
基于相同的技术构思,本申请实施例还提供了一种计算设备600,如图6所示,包括至少一个处理器601,以及与至少一个处理器连接的存储器602,本申请实施例中不限定处理器601与存储器602之间的具体连接介质,图6中处理器601和存储器602之间通过总线603连接为例。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,处理器601是计算设备的控制中心,可以利用各种接口和线路连接计算设备的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据,从而实现数据处理。可选的,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理下发指令。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器601可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合测试用例确定方法实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
在本申请实施例中,存储器602存储有计算机程序,当该程序被处理器601执行时,使得处理器601执行:
响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息;其中,所述执行信息为唯一标识对应行代码的信息;
基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例;
其中,所述对应关系通过以下方式确定:
针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;
通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
可选地,所述执行信息包括类信息以及函数信息;所述处理器601具体执行:
针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码;
若是,则将所述变化行代码的类信息以及函数信息确定为目标信息;
基于所述对应关系,将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例。
可选地,所述处理器601将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例之后,还执行:
针对任一目标信息,若所述目标信息对应的目标测试用例覆盖所述新版本系统中执行信息包含所述目标信息的代码,则不调整所述目标信息对应的目标测试用例;
若所述目标信息对应的目标测试用例没有覆盖所述新版本系统中执行信息包含所述目标信息的代码,则调整所述目标信息对应的目标测试用例。
可选地,所述处理器601针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码之后,还执行:
若所述旧版本系统中没有与所述变化行代码的类信息以及函数信息均相同的代码,则增加所述变化行代码所对应的测试用例。
可选地,所述执行信息包括类信息、函数信息以及行信息;所述处理器601具体执行:
确定所述新版本系统相对于所述旧版本系统的变化行代码的行信息;
基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息。
可选地,所述处理器601具体执行:
获取所述结构信息中各类的第一行范围,并将所述变化行代码的行信息所在的第一行范围对应的类,确定为所述变化行代码的类信息;
确定所述变化行代码的类信息对应的各函数的第二行范围,并将所述变化行代码的行信息所在的第二行范围对应的函数,确定为所述变化行代码的函数信息。
可选地,所述变化行代码包括:所述新版本系统相对于所述旧版本系统新增的行代码,和/或减少的行代码。
由于该计算设备即是本申请实施例中的方法中的计算设备,并且该计算设备解决问题的原理与该方法相似,因此该计算设备的实施可以参见方法的实施,重复之处不再赘述。
基于相同的技术构思,本申请实施例还提供了一种计算机可读存储介质,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行上述测试用例确定方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种测试用例确定方法,其特征在于,该方法包括:
响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息;其中,所述执行信息为唯一标识对应行代码的信息;
基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例;
其中,所述对应关系通过以下方式确定:
针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;
通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
2.如权利要求1所述的方法,其特征在于,所述执行信息包括类信息以及函数信息;基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例,包括:
针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码;
若是,则将所述变化行代码的类信息以及函数信息确定为目标信息;
基于所述对应关系,将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例。
3.如权利要求2所述的方法,其特征在于,将所述旧版本系统中执行信息包含所述目标信息的代码对应的测试用例,确定为所述目标测试用例之后,还包括:
针对任一目标信息,若所述目标信息对应的目标测试用例覆盖所述新版本系统中执行信息包含所述目标信息的代码,则不调整所述目标信息对应的目标测试用例;
若所述目标信息对应的目标测试用例没有覆盖所述新版本系统中执行信息包含所述目标信息的代码,则调整所述目标信息对应的目标测试用例。
4.如权利要求2所述的方法,其特征在于,针对任一变化行代码,判断所述旧版本系统中是否有与所述变化行代码的类信息以及函数信息均相同的代码之后,还包括:
若所述旧版本系统中没有与所述变化行代码的类信息以及函数信息均相同的代码,则增加所述变化行代码所对应的测试用例。
5.如权利要求1所述的方法,其特征在于,所述执行信息包括类信息、函数信息以及行信息;确定新版本系统相对于旧版本系统的变化行代码的执行信息,包括:
确定所述新版本系统相对于所述旧版本系统的变化行代码的行信息;
基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息。
6.如权利要求5所述的方法,其特征在于,基于所述变化行代码的行信息,从编译文件的结构信息中确定所述变化行代码的类信息以及函数信息,包括:
获取所述结构信息中各类的第一行范围,并将所述变化行代码的行信息所在的第一行范围对应的类,确定为所述变化行代码的类信息;
确定所述变化行代码的类信息对应的各函数的第二行范围,并将所述变化行代码的行信息所在的第二行范围对应的函数,确定为所述变化行代码的函数信息。
7.如权利要求1所述的方法,其特征在于,所述变化行代码包括:所述新版本系统相对于所述旧版本系统新增的行代码,和/或减少的行代码。
8.一种测试用例确定装置,其特征在于,包括:
执行信息确定模块,用于响应于系统的版本变更,确定新版本系统相对于旧版本系统的变化行代码的执行信息;其中,所述执行信息为唯一标识对应行代码的信息;
测试用例处理模块,用于基于所述旧版本系统中各行代码的执行信息与测试用例的对应关系,确定所述变化行代码所影响的目标测试用例;
其中,所述对应关系通过以下方式确定:
针对任一测试用例,通过回调函数在执行所述测试用例过程中,确定对应的行代码的执行信息;
通过线程变量,确定所述行代码的执行信息与所述测试用例的对应关系。
9.一种计算设备,其特征在于,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行如权利要求1至7任一所述的方法。
10.一种计算机可读存储介质,其特征在于,其存储有可由计算设备执行的计算机程序,当所述程序在所述计算设备上运行时,使得所述计算设备执行权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111303917.5A CN114048125A (zh) | 2021-11-05 | 2021-11-05 | 一种测试用例确定方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111303917.5A CN114048125A (zh) | 2021-11-05 | 2021-11-05 | 一种测试用例确定方法、装置、计算设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114048125A true CN114048125A (zh) | 2022-02-15 |
Family
ID=80207191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111303917.5A Pending CN114048125A (zh) | 2021-11-05 | 2021-11-05 | 一种测试用例确定方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114048125A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117672340A (zh) * | 2023-12-15 | 2024-03-08 | 上海先楫半导体科技有限公司 | 面向一次性可编程自动化芯片系统验证方法、装置及终端 |
-
2021
- 2021-11-05 CN CN202111303917.5A patent/CN114048125A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117672340A (zh) * | 2023-12-15 | 2024-03-08 | 上海先楫半导体科技有限公司 | 面向一次性可编程自动化芯片系统验证方法、装置及终端 |
CN117672340B (zh) * | 2023-12-15 | 2024-05-24 | 上海先楫半导体科技有限公司 | 面向一次性可编程自动化芯片系统验证方法、装置及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080046867A1 (en) | Software testing by groups | |
US9223683B1 (en) | Tool to analyze dependency injection object graphs for common error patterns | |
CN109871312B (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
EP4231138A1 (en) | Method and apparatus for fixing weak memory ordering problem | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN115269544A (zh) | 一种数据库集群升级方法、装置、电子设备及存储介质 | |
CN111625225A (zh) | 一种程序指定数据输出方法和装置 | |
CN115617687A (zh) | 程序插桩方法、装置、设备和存储介质 | |
CN113377586B (zh) | 一种服务器自动化检测方法、装置及存储介质 | |
CN114048125A (zh) | 一种测试用例确定方法、装置、计算设备及存储介质 | |
US20120124425A1 (en) | Method and Apparatus Useful In Manufacturing Test Case Operations | |
EP3540598A1 (en) | Method, device and server for checking a defective function | |
US8280927B2 (en) | Electronic equipment and memory managing program | |
US9064042B2 (en) | Instrumenting computer program code by merging template and target code methods | |
CN109189671B (zh) | 逐层夹逼式变量定位方法、系统及终端设备 | |
CN111931191A (zh) | Linux平台二进制软件堆溢漏洞动态检测方法及系统 | |
CN111240728A (zh) | 应用程序更新方法、装置、设备和存储介质 | |
CN111352610A (zh) | 接口返回值修改方法、装置、电子设备及存储介质 | |
CN110968339A (zh) | 前端构建工具的方法、装置以及电子设备 | |
CN113971019B (zh) | 数据类型创建方法、装置、服务器及介质 | |
EP3692456A1 (en) | Binary image stack cookie protection | |
US20130124925A1 (en) | Method and apparatus for checking a main memory of a processor | |
CN111078449B (zh) | 信息处理方法、信息处理装置及终端设备 | |
CN113157513B (zh) | 一种堆内存破坏检测方法、装置、电子设备及存储介质 | |
CN114138350A (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 |