CN113391998A - 回归测试方法、装置、电子设备及存储介质 - Google Patents

回归测试方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113391998A
CN113391998A CN202110609410.6A CN202110609410A CN113391998A CN 113391998 A CN113391998 A CN 113391998A CN 202110609410 A CN202110609410 A CN 202110609410A CN 113391998 A CN113391998 A CN 113391998A
Authority
CN
China
Prior art keywords
target
code
test case
test
code segment
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
Application number
CN202110609410.6A
Other languages
English (en)
Inventor
刘多嘉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202110609410.6A priority Critical patent/CN113391998A/zh
Publication of CN113391998A publication Critical patent/CN113391998A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Abstract

本申请公开了一种回归测试方法、装置、电子设备及存储介质。其中,方法包括:监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。

Description

回归测试方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种回归测试方法、装置、电子设备及存储介质。
背景技术
在软件研发过程中,通常要对代码进行多次测试,其中,回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。然而,相关技术中,回归测试的效率和准确性尚需提高。
发明内容
为解决相关技术问题,本申请实施例提供一种回归测试方法、装置、电子设备及存储介质。
本申请实施例的技术方案是这样实现的:
本申请实施例提供了一种回归测试方法,包括:
监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;
利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;
利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。
上述方案中,所述利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例,包括:
在所述代码片段与测试用例之间的关联关系中查询所述目标代码片段对应的目标代码标识,得到查询结果;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中存在所述目标代码标识的情况下,确定所述目标代码标识对应的测试用例标识;利用确定的测试用例标识,确定所述目标测试用例;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中不存在所述目标代码标识的情况下,基于第一策略,创建新的测试用例,将创建的新的测试用例作为所述目标测试用例。
上述方案中,所述方法还包括:
创建新的测试用例后,建立所述目标代码片段与所述目标测试用例之间的关联关系,并存储建立的关联关系。
上述方案中,所述基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例,包括:
在所述目标代码片段为新增代码片段的情况下,将所述目标测试用例添加到所述多个测试用例中。
上述方案中,所述基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例,包括:
在所述目标代码片段为删除代码片段的情况下,从所述多个测试用例中删除所述目标测试用例。
上述方案中,所述基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例,包括:
在所述目标代码片段的数据处理逻辑更新的情况下,基于第二策略,在所述多个测试用例中更新所述目标测试用例对应的数据处理逻辑。
上述方案中,监测目标应用程序的代码内容的更新情况之前,所述方法还包括:
获取所述目标应用程序的全量代码;基于所述目标应用程序的全量代码,生成目标树状结构;所述目标树状结构的一个分支表征一个代码片段的执行路径;
利用所述第一数据库中的测试用例,结合代码插桩技术,对所述目标应用程序的全量代码进行测试,得到每个测试用例被执行时的代码覆盖情况;
基于所述目标树状结构和每个测试用例被执行时的代码覆盖情况,建立代码片段与测试用例之间的关联关系。
本申请实施例还提供了一种回归测试装置,包括:
第一处理单元,用于监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;
第二处理单元,用于利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;
第三处理单元,用于利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。
本申请实施例还提供了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器用于运行所述计算机程序时,执行上述任一方法的步骤。
本申请实施例还提供了一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一方法的步骤。
本申请实施例提供的回归测试方法、装置、电子设备及存储介质,监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。本申请实施例的方案,无需用全部的测试用例对目标应用程序的代码进行回归测试,而是基于代码片段与测试用例之间的关联关系,自动化地确定监测到的更新的目标代码片段对应的目标测试用例,基于确定的目标测试用例筛选(即更新)用于对目标应用程序的代码进行回归测试的多个测试用例;如此,能够减少对目标应用程序的代码进行回归测试所需的时长,并能够避免对更新的代码的漏测,从而能够提高对目标应用程序的代码进行回归测试的效率和准确性。
附图说明
图1为本申请实施例回归测试方法的流程示意图;
图2为本申请应用实施例测试系统的结构示意图;
图3为本申请应用实施例测试系统的测试流程示意图;
图4为本申请实施例回归测试装置的结构示意图;
图5为本申请实施例电子设备的结构示意图。
具体实施方式
下面结合附图及实施例对本申请再作进一步详细的描述。
相关技术中,通常可以通过以下两种方式对代码进行回归测试:
方式一,全量回归测试。具体地,在应用程序上线过程中,测试人员可以使用全量的黑盒测试用例(后续描述中简称为测试用例),对待测试应用程序的全量代码进行测试和验证。
方式二,部分回归测试。具体地,在应用程序上线过程中,测试人员可以根据需求和经验在待测试应用程序的全量代码中选取待测试的代码范围,并从全量的测试用例中选取部分测试用例对待测试的代码范围内的代码进行测试和验证。
然而,采用方式一对代码进行回归测试时,由于需要利用全量的测试用例对待测试应用程序的全量代码进行测试,每次回归测试的周期较长,且每增加一轮回归测试,会使人力成本成倍增加;因此,方式一的测试效率较低。
采用方式二对代码进行回归测试时,待测试的代码范围的选取及测试用例的选取均依赖于测试人员的经验,测试人员人工选取的待测试的代码范围可能无法覆盖代码中的全部修改,测试人员人工选取的部分测试用例也可能无法覆盖待测试的代码范围内的代码,换句话说,存在代码漏测的风险;对代码漏测产生的线上问题进行修复,会使人力成本成倍增加,且用户体验较差;因此,方式二的准确性较低,代码漏测风险较高。
基于此,在本申请的各种实施例中,无需用全部的测试用例对目标应用程序的代码进行回归测试,而是基于代码片段与测试用例之间的关联关系,自动化地确定监测到的更新的目标代码片段对应的目标测试用例,基于确定的目标测试用例筛选(即更新)用于对目标应用程序的代码进行回归测试的多个测试用例;如此,能够减少对目标应用程序的代码进行回归测试所需的时长,并能够避免对更新的代码的漏测,从而能够提高对目标应用程序的代码进行回归测试的效率和准确性。
本申请实施例提供了一种回归测试方法,应用于电子设备(比如服务器),如图1所示,该方法包括:
步骤101:监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;
这里,所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;
步骤102:利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;
步骤103:利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。
实际应用时,在对目标应用程序的代码进行回归测试之前,即在执行步骤101至步骤103之前,需要先确定代码片段与测试用例之间的关联关系。
基于此,在一实施例中,监测目标应用程序的代码内容的更新情况之前,所述方法还可以包括:
获取所述目标应用程序的全量代码;基于所述目标应用程序的全量代码,生成目标树状结构;所述目标树状结构的一个分支表征一个代码片段的执行路径;
利用所述第一数据库中的测试用例,结合代码插桩技术,对所述目标应用程序的全量代码进行测试,得到每个测试用例被执行时的代码覆盖情况;
基于所述目标树状结构和每个测试用例被执行时的代码覆盖情况,建立代码片段与测试用例之间的关联关系。
实际应用时,所述代码片段可以对应所述目标应用程序的一个功能。
实际应用时,所述第一数据库中的测试用例可以根据需求设置,每个测试用例可以包含测试目标、测试环境、测试步骤及预期结果等信息,本申请实施例对此不作限定。
实际应用时,所述获取所述目标应用程序的全量代码,可以理解为获取所述目标应用程序首次编辑完成的全量代码,换句话说,通过对所述目标应用程序的首次全量测试,建立代码片段与测试用例之间的关联关系。
实际应用时,可以通过对代码标识与测试用例标识进行关联,建立代码片段与测试用例之间的关联关系;所述代码标识可以是相应代码片段的执行路径,换句话说,所述代码标识可以表征所述目标树状结构的一个分支;所述测试用例标识可以根据需求设置,比如测试的功能名称。具体地,根据每个测试用例被执行时的代码覆盖情况,可以确定每个测试用例对应的代码片段,结合所述目标树状结构,可以确定每个测试用例对应的代码标识,进而能够得到每个测试用例标识对应的代码标识。
实际应用时,建立代码片段与测试用例之间的关联关系后,可以将建立的代码片段与测试用例之间的关联关系保存到本地(即所述电子设备的本地存储),并可以进行后续的回归测试,即可以执行步骤101至步骤103。
在步骤101中,实际应用时,可以根据需求设置监测代码内容更新情况的方式,本申请实施例对此不作限定。
实际应用时,可以根据需求从所述第一数据库中获取多个测试用例,本申请实施例对此也不作限定。示例性地,可以获取所述第一数据库中的全部测试用例;或者,可以基于预设的选择策略从所述第一数据库中获取多个测试用例,获取的多个测试用例可以是所述目标应用程序的关键功能对应的多个测试用例。
对于步骤102,在一实施例中,所述利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例,可以包括:
在所述代码片段与测试用例之间的关联关系中查询所述目标代码片段对应的目标代码标识,得到查询结果;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中存在所述目标代码标识的情况下,确定所述目标代码标识对应的测试用例标识;利用确定的测试用例标识,确定所述目标测试用例;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中不存在所述目标代码标识的情况下,基于第一策略,创建新的测试用例,将创建的新的测试用例作为所述目标测试用例。
具体地,实际应用时,将建立的代码片段与测试用例之间的关联关系保存到所述电子设备时,可以存储在第二数据库中。确定所述目标代码片段后,可以在所述第二数据库中查询所述目标代码标识,在所述第二数据库存在所述目标代码标识的情况下,表征所述目标代码片段为删除的代码片段或数据处理逻辑更新的代码片段,可以直接从所述第二数据库中获取所述目标代码标识关联的测试用例标识,即确定所述目标代码标识对应的测试用例标识,并利用确定的测试用例标识,在所述多个测试用例中确定所述目标测试用例。在所述第二数据库不存在所述目标代码标识的情况下,表征所述目标代码片段为新增的代码片段,需要创建新的测试用例作为所述目标测试用例。
实际应用时,所述第一策略可以根据需求设置。示例性地,可以预先设置候选的测试用例库,从候选的测试用例库中获取与所述目标代码片段的数据处理逻辑匹配的候选测试用例作为创建的新的测试用例。
实际应用时,创建新的测试用例后,需要建立所述目标代码片段与所述目标测试用例之间的关联关系,并存储建立的关联关系,以供后续的回归测试使用。
基于此,在一实施例中,所述方法还可以包括:
创建新的测试用例后,建立所述目标代码片段与所述目标测试用例之间的关联关系,并存储建立的关联关系。
这里,可以将所述目标代码片段与所述目标测试用例之间的关联关系存储到所述第二数据库中,换句话说,可以利用所述目标代码片段与所述目标测试用例之间的关联关系,更新所述第二数据库。
实际应用时,所述目标代码片段可能是新增的代码片段、删除的代码片段或数据处理逻辑更新的代码片段,基于所述目标代码片段的不同的更新情况,更新所述多个测试用例的方式不同。
基于此,在一实施例中,所述基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例,可以包括以下之一:
在所述目标代码片段为新增代码片段的情况下,将所述目标测试用例添加到所述多个测试用例中;
在所述目标代码片段为删除代码片段的情况下,从所述多个测试用例中删除所述目标测试用例;
在所述目标代码片段的数据处理逻辑更新的情况下,基于第二策略,在所述多个测试用例中更新所述目标测试用例对应的数据处理逻辑。
实际应用时,在确定了多个目标代码片段,且所述多个目标代码片段均为删除的代码片段的情况下,可以不进行回归测试。
实际应用时,所述第二策略可以根据需求设置。示例性地,可以预先设置候选的测试用例库,从候选的测试用例库中获取与所述目标代码片段更新后的数据处理逻辑匹配的候选测试用例,相应地,更新所述目标测试用例对应的数据处理逻辑,可以包括:利用获取的候选测试用例更新所述目标测试用例。
实际应用时,在所述目标代码片段的数据处理逻辑更新的情况下,还可以利用所述目标测试用例,结合代码插桩技术,对所述目标代码片段进行测试,得到所述目标测试用例被执行时的代码覆盖情况;在所述目标测试用例被执行时的代码覆盖情况能够覆盖所述目标代码片段的情况下,无需更新所述目标代码片段;在所述目标测试用例被执行时的代码覆盖情况无法覆盖所述目标代码片段的情况下,需要创建新的测试用例来覆盖所述目标代码片段,并利用创建的新的测试用例更新所述目标测试用例。
本申请实施例提供的回归测试方法,监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。本申请实施例的方案,无需用全部的测试用例对目标应用程序的代码进行回归测试,而是基于代码片段与测试用例之间的关联关系,自动化地确定监测到的更新的目标代码片段对应的目标测试用例,基于确定的目标测试用例筛选(即更新)用于对目标应用程序的代码进行回归测试的多个测试用例;如此,能够减少对目标应用程序的代码进行回归测试所需的时长,并能够避免对更新的代码的漏测,从而能够提高对目标应用程序的代码进行回归测试的效率和准确性。
下面结合应用实施例对本申请再作进一步详细的描述。
在本应用实施例中,所述目标应用程序的代码称为被测试应用代码。
在本应用实施例中,通过建立代码片段与测试用例之间的关联关系,实现测试用例与代码片段的执行路径的双向关联;当目标应用程序的代码内容发生变化时(即应用程序的代码内容存在更新),可以利用关联关系准确的筛选测试用例对目标应用程序进行回归测试,从而提升回归测试的效率和准确性,减少回归轮次,即减少对目标应用程序进行回归测试的次数。
在本应用实施例中,利用测试系统对目标应用程序进行测试,并在测试过程中建立代码片段与测试用例之间的关联关系。如图2所示,该测试系统包括:
数据层,用于存储测试用例、测试数据(即测试用例的输入数据)及被测试应用代码数据(即目标应用程序的全量代码);
静态层,用于进行代码加工;具体地,利用代码插桩技术,对被测试应用代码进行代码染色(即确定每个测试用例被执行时的代码覆盖情况);
测试层,用于部署运行环境;具体地,将插桩后的被测试应用代码部署到测试系统的测试环境(即测试系统的运行环境),利用测试用例和测试数据对被测试应用代码进行测试,触发程序数据流,即触发所述测试系统的测试流程;
关联层,包括双向关联器;用于建立并存储测试用例、测试数据及代码数据(即代码片段)之间的双向关联关系;
展示层,用于展示(即呈现)测试用例、测试数据及代码数据之间的关联关系,以供测试人员根据关联关系补充和删减测试用例。
下面结合图3详细描述本应用实施例中测试系统的测试流程。如图3所示,所述测试系统的测试流程包括以下步骤:
步骤301:所述测试系统获取被测试的应用的全量代码。
步骤302:所述测试系统对被测试应用代码进行加工,并将加工后的代码部署到运行环境(即测试环境)中。
具体地,所述测试系统的静态层包括静态代码分析器和代码插桩模块。所述静态代码分析器可以对被测试应用代码的源代码目录结构、源代码文件名称、源代码文件路径、源代码文件中的方法、源代码文件中的属性等信息进行标记,生成静态代码树(即上述目标树状结构),所述静态代码树能够表示被测试应用代码对应的项目框架,所述静态代码树的一个分支可以表示源代码文件中的一个方法(即一个代码片段)的执行路径。所述代码插桩模块可以利用代码插桩技术,对源代码文件中的方法进行染色,换句话说,在源代码文件中的方法被调用时对代码进行标记;同时,可以记录源代码文件中的参数是否被调用,并存储被调用的参数。在所述代码插桩模块对被测试应用代码进行插桩后,可以将插桩后的被测试应用代码部署到所述测试系统的运行环境。
步骤303:所述测试系统存储所述静态代码分析器的分析结果。
具体地,所述静态代码分析器生成静态代码树后,可以将静态代码树以及被测试应用代码的源代码目录结构、源代码文件名称、源代码文件路径、源代码文件中的方法、源代码文件中的属性等信息存储至所述测试系统的数据层的被测试应用代码数据中。
步骤304:所述测试系统在被测试应用的运行环境(即测试系统的运行的环境)中,进行测试用例的执行。
实际应用时,测试人员可以对该步骤进行人工监测。
步骤305:所述测试系统将测试用例的执行结果上报到运行监控系统。
具体地,测试人员可以通过运行监控系统对所述测试系统的测试流程进行监控,所述测试系统执行测试用例后,可以将测试用例的执行结果(比如测试用例在执行时调用的源代码文件中的参数)及被测试应用代码的插桩信息上报到所述运行监控系统。
步骤306:所述运行监控系统根据所述测试系统上报的信息,实时地呈现每个测试用例被执行时的代码覆盖情况。
具体地,实际应用时,测试人员可以通过所述运行监控系统查看测试用例的执行情况(即执行结果)和代码插桩情况,换句话说,测试人员能够实时地看到每个测试用例被执行时的代码覆盖情况。
步骤307:所述测试系统从数据层获取动态的测试数据,基于动态的测试数据执行相应的测试用例,并实时地存储测试用例的执行结果。
实际应用时,所述测试系统获取动态的测试数据的方式可以根据需求设置。
步骤308:所述测试系统利用代码插桩技术(即利用每个测试用例被执行时的代码覆盖情况),结合所述静态代码树,建立并存储测试用例、测试数据及代码数据之间的双向关联关系。
具体地,所述双向关联器可以建立每个测试用例和代码片段的关联关系以及被测试应用代码(即全量代码)与多个测试用例的关联关系。
步骤309:所述测试系统展示建立的关联关系。
在本应用实施例中,通过步骤301至步骤309,所述测试系统能够建立并存储代码片段与测试用例之间的关联关系。在监测到被测试应用代码变更的情况下,所述测试系统可以利用关联关系准确的筛选测试用例对被测试应用代码进行回归测试,从而提升回归测试的效率和准确性,减少回归轮次,即减少对被测试应用代码进行回归测试的次数。
具体地,所述测试系统监测到新增代码片段时,由于存储的关联关系中不存在新增代码片段对应的测试用例,因此,需要创建新的测试用例对新增代码片段进行覆盖。
所述测试系统监测到删除的代码片段时,由于删除代码片段对应的测试用例已经没有存在意义,因此,所述测试系统可以在存储的关联关系中查找删除代码片段对应的测试用例,并删除查找到的测试用例,以减少回归测试所需的测试时长。
所述测试系统监测到修改的代码片段时(即相应代码片段的数据处理逻辑被更新),可以先在存储的关联关系中查找修改的代码片段对应的测试用例,再利用插桩技术确定该测试用例被执行时是否能够完全覆盖修改的代码片段;若能够完全覆盖,则不需要更新该测试用例;若无法完全覆盖,则需要创建新的测试用例来更新该测试用例。
实际应用时,所述测试系统还可以对覆盖相同代码路径的测试用例(即对应同一个代码片段的测试用例)进行剔除(即保障代码片段和测试用例的一一对应关系),以减少测试用例的重复执行,从而减少回归测试所需的测试时长。
本应用实施例的方案,具有以下优点:
通过静态数据分析(即所述静态代码树)和动态数据分析(即所述动态的测试数据)相结合的测试方法,建立代码片段与测试用例之间的关联关系,实现测试用例与代码片段的执行路径的双向关联;当目标应用程序的代码内容发生变化时,可以利用关联关系准确的筛选测试用例对目标应用程序进行回归测试,从而提升回归测试的效率和准确性,减少回归轮次,即减少对目标应用程序进行回归测试的次数。
为了实现本申请实施例的方法,本申请实施例还提供了一种回归测试装置,如图4所示,该装置包括:
第一处理单元401,用于监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;
第二处理单元402,用于利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;
第三处理单元403,用于利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。
其中,在一实施例中,所述第二处理单元402,具体用于:
在所述代码片段与测试用例之间的关联关系中查询所述目标代码片段对应的目标代码标识,得到查询结果;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中存在所述目标代码标识的情况下,确定所述目标代码标识对应的测试用例标识;利用确定的测试用例标识,确定所述目标测试用例;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中不存在所述目标代码标识的情况下,基于第一策略,创建新的测试用例,将创建的新的测试用例作为所述目标测试用例。
在一实施例中,所述第二处理单元402,还用于在创建新的测试用例后,建立所述目标代码片段与所述目标测试用例之间的关联关系,并存储建立的关联关系。
在一实施例中,所述第二处理单元402,具体用于在所述目标代码片段为新增代码片段的情况下,将所述目标测试用例添加到所述多个测试用例中。
在一实施例中,所述第二处理单元402,具体用于在所述目标代码片段为删除代码片段的情况下,从所述多个测试用例中删除所述目标测试用例。
在一实施例中,所述第二处理单元402,具体用于在所述目标代码片段的数据处理逻辑更新的情况下,基于第二策略,在所述多个测试用例中更新所述目标测试用例对应的数据处理逻辑。
在一实施例中,该装置还包括第四处理单元,用于:
获取所述目标应用程序的全量代码;基于所述目标应用程序的全量代码,生成目标树状结构;所述目标树状结构的一个分支表征一个代码片段的执行路径;
利用所述第一数据库中的测试用例,结合代码插桩技术,对所述目标应用程序的全量代码进行测试,得到每个测试用例被执行时的代码覆盖情况;
基于所述目标树状结构和每个测试用例被执行时的代码覆盖情况,建立代码片段与测试用例之间的关联关系。
实际应用时,所述第一处理单元401、所述第二处理单元402、所述第三处理单元403和所述第四处理单元可由所述回归测试装置中的处理器实现。
需要说明的是:上述实施例提供的回归测试装置在进行回归测试时,仅以上述各程序模块的划分进行举例说明,实际应用时,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的回归测试装置与回归测试方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种电子设备,如图5所示,该电子设备500包括:
通信接口501,能够与其他电子设备进行信息交互;
处理器502,与所述通信接口501连接,以实现与其他电子设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的方法;
存储器503,存储能够在所述处理器502上运行的计算机程序。
具体地,所述处理器502,用于:
监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;
利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;
利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。
其中,在一实施例中,所述处理器502,具体用于:
在所述代码片段与测试用例之间的关联关系中查询所述目标代码片段对应的目标代码标识,得到查询结果;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中存在所述目标代码标识的情况下,确定所述目标代码标识对应的测试用例标识;利用确定的测试用例标识,确定所述目标测试用例;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中不存在所述目标代码标识的情况下,基于第一策略,创建新的测试用例,将创建的新的测试用例作为所述目标测试用例。
在一实施例中,所述处理器502,还用于在创建新的测试用例后,建立所述目标代码片段与所述目标测试用例之间的关联关系,并存储建立的关联关系。
在一实施例中,所述处理器502,具体用于在所述目标代码片段为新增代码片段的情况下,将所述目标测试用例添加到所述多个测试用例中。
在一实施例中,所述处理器502,具体用于在所述目标代码片段为删除代码片段的情况下,从所述多个测试用例中删除所述目标测试用例。
在一实施例中,所述处理器502,具体用于在所述目标代码片段的数据处理逻辑更新的情况下,基于第二策略,在所述多个测试用例中更新所述目标测试用例对应的数据处理逻辑。
在一实施例中,所述处理器502,还用于:
获取所述目标应用程序的全量代码;基于所述目标应用程序的全量代码,生成目标树状结构;所述目标树状结构的一个分支表征一个代码片段的执行路径;
利用所述第一数据库中的测试用例,结合代码插桩技术,对所述目标应用程序的全量代码进行测试,得到每个测试用例被执行时的代码覆盖情况;
基于所述目标树状结构和每个测试用例被执行时的代码覆盖情况,建立代码片段与测试用例之间的关联关系。
需要说明的是:所述处理器502具体执行上述操作的过程详见方法实施例,这里不再赘述。
当然,实际应用时,电子设备500中的各个组件通过总线系统504耦合在一起。可理解,总线系统504用于实现这些组件之间的连接通信。总线系统504除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统504。
本申请实施例中的存储器503用于存储各种类型的数据以支持电子设备500的操作。这些数据的示例包括:用于在电子设备500上操作的任何计算机程序。
上述本申请实施例揭示的方法可以应用于处理器502中,或者由处理器502实现。处理器502可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器502中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器502可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器502可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器503,处理器502读取存储器503中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或者其他电子元件实现,用于执行前述方法。
可以理解,本申请实施例的存储器503可以是易失性存储器或者非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(FlashMemory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random AccessMemory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random AccessMemory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其他适合类型的存储器。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器503,上述计算机程序可由电子设备500的处理器502执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
另外,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

Claims (10)

1.一种回归测试方法,其特征在于,包括:
监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;
利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;
利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。
2.根据权利要求1所述的方法,其特征在于,所述利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例,包括:
在所述代码片段与测试用例之间的关联关系中查询所述目标代码片段对应的目标代码标识,得到查询结果;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中存在所述目标代码标识的情况下,确定所述目标代码标识对应的测试用例标识;利用确定的测试用例标识,确定所述目标测试用例;
在所述查询结果表征所述代码片段与测试用例之间的关联关系中不存在所述目标代码标识的情况下,基于第一策略,创建新的测试用例,将创建的新的测试用例作为所述目标测试用例。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
创建新的测试用例后,建立所述目标代码片段与所述目标测试用例之间的关联关系,并存储建立的关联关系。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例,包括:
在所述目标代码片段为新增代码片段的情况下,将所述目标测试用例添加到所述多个测试用例中。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例,包括:
在所述目标代码片段为删除代码片段的情况下,从所述多个测试用例中删除所述目标测试用例。
6.根据权利要求1至3任一项所述的方法,其特征在于,所述基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例,包括:
在所述目标代码片段的数据处理逻辑更新的情况下,基于第二策略,在所述多个测试用例中更新所述目标测试用例对应的数据处理逻辑。
7.根据权利要求1至3任一项所述的方法,其特征在于,监测目标应用程序的代码内容的更新情况之前,所述方法还包括:
获取所述目标应用程序的全量代码;基于所述目标应用程序的全量代码,生成目标树状结构;所述目标树状结构的一个分支表征一个代码片段的执行路径;
利用所述第一数据库中的测试用例,结合代码插桩技术,对所述目标应用程序的全量代码进行测试,得到每个测试用例被执行时的代码覆盖情况;
基于所述目标树状结构和每个测试用例被执行时的代码覆盖情况,建立代码片段与测试用例之间的关联关系。
8.一种回归测试装置,其特征在于,包括:
第一处理单元,用于监测目标应用程序的代码内容的更新情况;监测到代码内容更新时,确定更新的目标代码片段;并从第一数据库中获取多个测试用例;所述第一数据库存储有用于对所述目标应用程序的代码进行测试的测试用例;
第二处理单元,用于利用所述目标代码片段,结合代码片段与测试用例之间的关联关系,确定目标测试用例;并基于所述目标代码片段的更新情况,利用所述目标测试用例更新获取的多个测试用例;
第三处理单元,用于利用更新后的多个测试用例,对所述目标应用程序的代码进行回归测试。
9.一种电子设备,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器用于运行所述计算机程序时,执行权利要求1至7任一项所述方法的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
CN202110609410.6A 2021-06-01 2021-06-01 回归测试方法、装置、电子设备及存储介质 Pending CN113391998A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110609410.6A CN113391998A (zh) 2021-06-01 2021-06-01 回归测试方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110609410.6A CN113391998A (zh) 2021-06-01 2021-06-01 回归测试方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN113391998A true CN113391998A (zh) 2021-09-14

Family

ID=77619783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110609410.6A Pending CN113391998A (zh) 2021-06-01 2021-06-01 回归测试方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113391998A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114462339A (zh) * 2022-04-12 2022-05-10 北京象帝先计算技术有限公司 用于回归测试的参数调优、文件建立方法及其装置
WO2024040934A1 (zh) * 2022-08-22 2024-02-29 华为云计算技术有限公司 测试用例集的演化方法、装置、计算设备集群及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114462339A (zh) * 2022-04-12 2022-05-10 北京象帝先计算技术有限公司 用于回归测试的参数调优、文件建立方法及其装置
CN114462339B (zh) * 2022-04-12 2022-06-17 北京象帝先计算技术有限公司 用于回归测试的参数调优、文件建立方法及其装置
WO2024040934A1 (zh) * 2022-08-22 2024-02-29 华为云计算技术有限公司 测试用例集的演化方法、装置、计算设备集群及存储介质

Similar Documents

Publication Publication Date Title
US8151248B1 (en) Method and system for software defect management
CN108959059B (zh) 一种测试方法以及测试平台
CN113391998A (zh) 回归测试方法、装置、电子设备及存储介质
CN108874661B (zh) 测试映射关系库生成方法、装置、计算机设备和存储介质
CN109840194B (zh) 一种配置文件的检测方法及系统
CN107273281A (zh) 基于代码变更的服务化接口测试方法、系统
US11232020B2 (en) Fault detection using breakpoint value-based fingerprints of failing regression test cases
CN111290941A (zh) 多个接口的测试方法、装置、计算设备和介质
CN113342685A (zh) 精准测试方法、装置、计算机设备和存储介质
CN112433944A (zh) 业务测试方法、装置、计算机设备和存储介质
CN103186463B (zh) 确定软件的测试范围的方法和系统
CN112463588A (zh) 一种自动化测试系统及方法、存储介质、计算设备
CN112685312A (zh) 一种未覆盖代码的测试用例推荐方法及装置
CN110221933B (zh) 代码缺陷辅助修复方法及系统
CN114996127A (zh) 固态硬盘固件模块智能化测试方法及系统
JPH10320234A (ja) ソフトウェアの自動テスト方法
CN112069073A (zh) 测试用例的管理方法、终端和存储介质
CN111290961A (zh) 接口测试的管理方法、装置及终端设备
CN111124894A (zh) 代码覆盖率的处理方法、装置和计算机设备
CN111078549B (zh) 代码覆盖率的处理方法、装置和计算机设备
CN113656318A (zh) 软件版本测试方法、装置及计算机设备
US20160275002A1 (en) Image capture in application lifecycle management for documentation and support
US10963366B2 (en) Regression test fingerprints based on breakpoint values
US10970195B2 (en) Reduction of test infrastructure
CN112597041A (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