CN116431520A - 测试场景确定方法、装置、电子设备和存储介质 - Google Patents

测试场景确定方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116431520A
CN116431520A CN202310494099.4A CN202310494099A CN116431520A CN 116431520 A CN116431520 A CN 116431520A CN 202310494099 A CN202310494099 A CN 202310494099A CN 116431520 A CN116431520 A CN 116431520A
Authority
CN
China
Prior art keywords
test
interface
coverage
scene
determining
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
CN202310494099.4A
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.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding 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 Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN202310494099.4A priority Critical patent/CN116431520A/zh
Publication of CN116431520A publication Critical patent/CN116431520A/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/3676Test management for coverage analysis
    • 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/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例公开一种测试场景确定方法、装置、电子设备和存储介质,测试场景确定方法包括:比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;根据代码差异信息确定变更方法;识别变更方法影响的接口,得到目标接口;确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景。即本发明提供了一种自动推荐测试场景的方法,可以根据差异代码(即代码差异信息)确定推荐测试场景,相当于是增量匹配确定测试场景,相对来说,能够减少运行的测试场景的数量,缩短测试时间;另外,通过确定变更方法并识别变更方法影响的接口,来做测试场景自动推荐,能够精准推荐测试场景,提高测试效率。

Description

测试场景确定方法、装置、电子设备和存储介质
技术领域
本发明实施例涉及软件测试技术领域,尤其涉及一种测试场景确定方法、装置、电子设备和存储介质。
背景技术
自动化测试是软件测试中的一种重要测试方法,目前的自动化测试,一种方法是通过人工主观地根据提测功能选取测试场景并执行,另一种是通过全量代码匹配的方式确定推荐测试场景并执行。
在实现本发明的过程中,发明人发现,人工选取测试场景的方法,存在效率低、主观因素干扰导致选取的测试场景不够准确的问题,全量代码匹配推荐测试场景的方法,需要运行的测试场景较多,存在测试时间过长的问题。
发明内容
本发明实施例提供一种测试场景确定方法、装置、电子设备和存储介质,能够精准推荐测试场景,缩短测试时间,提高测试效率。
第一方面,本发明实施例提供的测试场景确定方法,包括:
比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;
根据所述代码差异信息确定变更方法;
识别所述变更方法影响的接口,得到目标接口;
确定覆盖所述目标接口的测试场景,得到所述当前版本代码的推荐测试场景。
第二方面,本发明实施例提供的测试场景确定装置,包括:
比较模块,用于比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;
确定模块,用于根据所述代码差异信息确定变更方法;
识别模块,用于识别所述变更方法影响的接口,得到目标接口;
推荐模块,用于确定覆盖所述目标接口的测试场景,得到所述当前版本代码的推荐测试场景。
第三方面,本发明实施例提供的电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明任一实施例所述的测试场景确定方法。
第四方面,本发明实施例提供的计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的测试场景确定方法。
本发明实施例的方案,可以比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;根据代码差异信息确定变更方法;识别变更方法影响的接口,得到目标接口;确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景。即本发明提供了一种自动推荐测试场景的方法,根据差异代码(即代码差异信息)确定推荐测试场景,相当于是增量匹配确定测试场景,相对来说,能够减少运行的测试场景的数量,缩短测试时间;另外,通过确定变更方法并识别变更方法影响的接口,来做测试场景自动推荐,能够精准推荐测试场景,提高测试效率。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例提供的测试场景确定方法的一个流程示意图;
图2是本发明实施例提供的调用链信息生成方法的一个流程示意图;
图3是本发明实施例提供的调用链信息生成过程的一个示例图;
图4是本发明实施例提供的调用链信息的一个示例图;
图5是本发明实施例提供的场景覆盖关系信息生成方法的一个流程示意图;
图6是本发明实施例提供的场景覆盖关系信息生成过程的一个示例图;
图7是本发明实施例提供的场景覆盖关系信息的一个示例图;
图8是本发明实施例提供的测试场景确定方法的另一流程示意图;
图9是本发明实施例提供的测试场景确定装置的一个结构示意图;
图10是本发明实施例提供的电子设备的一个结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是本发明实施例提供的测试场景确定方法的一个流程示意图,该方法可以应用在应用程序版本更新、需要对更新版代码进行测试的过程中,该方法可以由本发明实施例提供的测试场景确定装置来执行,该装置可采用软件和/或硬件的方式实现。在一个具体的实施例中,该装置可以集成在电子设备中,电子设备比如可以是计算机、服务器等。以下实施例将以该装置集成在电子设备中为例进行说明。参考图1,该方法具体可以包括如下步骤:
步骤101,比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息。
目标应用程序可以是做了版本更新或升级的任意应用程序,当前版本代码可以是最新版代码,历史版本代码可以是最新版代码的上一版代码,目标应用程序在做了版本更新或升级之后,在上线前需要进行测试,而在测试时,需要确定测试场景(case)。测试场景是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。
具体地,可以采用版本控制系统(例如git)来比较不同版本代码之间的差异。比如,在采用版本提交(commit)命令将当前版本代码提交之后,可以执行版本差异比较(gitdiff)命令对当前版本代码和历史版本代码在对应分支上进行比较,从而得到代码差异信息。代码差异信息中可以包括代码变更内容,比如所有新增、删除、修改的方法。
步骤102,根据代码差异信息确定变更方法。
具体地,变更方法可以包括新增、删除、修改的方法。
步骤103,识别变更方法影响的接口,得到目标接口。
方法是对对象成员的操作,由函数实现;函数是语句序列的打包;接口是对方法的抽象和概括,由方法实现具体的接口,一个接口的实现方法可以包括多个。如果一个接口的至少一个实现方法发生了变更,则该变更方法会影响到其对应的接口,所影响的接口即目标接口。具体实现中,目标接口可以包括一个或多个接口。
步骤104,确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景。
不同测试场景可以覆盖不同的接口,当目标接口有多个时,可以逐个确定覆盖这些目标接口的测试场景,得到当前版本代码的推荐测试场景,推荐测试场景可以包括多个测试场景,多个测试场景可以形成推荐测试场景列表。推荐测试场景列表中可以包括推荐测试场景的场景标识信息,推荐测试场景列表中还可以包括每个推荐测试场景所覆盖的目标接口的接口标识信息,场景标识信息可以是场景名称、编号等,接口标识信息可以是接口名称、编号等。可以将推荐测试场景列表推送给测试终端,以为对应的测试人员提供测试支撑。
测试人员在根据推荐测试场景列表中的推荐测试场景对目标应用程序的当前版本代码进行测试时,可以采用自动化测试,以提高测试效率。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
本实施例的方案,可以比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;根据代码差异信息确定变更方法;识别变更方法影响的接口,得到目标接口;确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景。即本实施例提供了一种自动推荐测试场景的方法,根据差异代码(即代码差异信息)确定推荐测试场景,相当于是增量匹配确定测试场景,相对来说,能够减少运行的测试场景的数量,缩短测试时间;另外,通过确定变更方法并识别变更方法影响的接口,来做测试场景自动推荐,能够精准推荐测试场景,提高测试效率。
在一个具体的实施例中,在识别变更方法影响的接口,得到目标接口时,可以通过查询调用链信息实现。即可以基于变更方法查询调用链信息,以确定变更方法是否存在调用方法,得到方法调用确定结果;基于方法调用确定结果确定目标接口。其中,调用链信息中可以包括方法间调用关系、各个方法的类型和各个方法与所实现的接口的对应关系等。
具体地,调用链信息可以预先生成,调用链信息的生成方法可如图2所示,具体可以包括如下步骤:
步骤201,解析预设应用程序包,得到方法间调用关系、各个方法的类型和各个方法与所实现的接口的对应关系。
预设应用程序包可以包括大量的应用程序包,这些应用程序包可以从应用程序库获取,可以是jar包。可以采用静态代码解析技术对这些jar包进行解析,从而得到方法间调用关系和各个方法与所实现的接口的对应关系。另外,还可以通过解析得到方法的类型,方法的类型可以包括接口类和实体类(普通类或非接口类),接口类方法用于实现对应接口。方法间调用关系可以包括普通类方法调用普通类方法、普通类方法调用接口类方法、接口类方法调用接口类方法等。方法与所实现的接口的对应关系可以包括一对一、一对多等。
步骤202,调用图数据库将方法间调用关系、各个方法的类型和各个方法与所实现的接口的对应关系串联并保存,得到调用链信息。
图数据库是以图形结构的形式存储数据的数据库,它以节点、关系和属性的形式存储应用程序的数据。构成一张图的基本元素是节点和关系,通过关系可以找到很多关联的数据,节点和关系都可以包含属性,属性可以由键-值(key-value)对组成。本实施例中,采用图数据库,可以提高存储性能和查询效率。示例地,图数据库可以是neo4j。
示例地,对jar包进行解析生成调用链信息的过程可如图3所示,在获取jar包之后,可以过滤掉不需要的包名,处理类文件,生成类对象;此后一方面可以解析并记录类中包含的所有方法,解析方法中调用其他方法关系,过滤开源包和降噪方法;另一方面可以解析类注解,扫描所有类对象的标记类类型(接口类还是实体类),生成实体类和接口类关系,此处可以对缺失的关系进行补全;最后,可以生成方法间调用关系和方法与所实现的接口的对应关系,调用图数据库将方法间调用关系、各个方法的类型和各个方法与所实现的接口的对应关系串联并保存,生成调用链信息,生成的调用链信息可以落入neo4j。neo4j可以实现方法与关系的高效存储,可以针对存储的数据构建索引,提高查询效率,支持查询方法依赖关系、过滤关系中含标签方法等。
示例地,所生成的调用链信息可如图4所示,图4中所包含的调用链信息如下:
(1)包含的方法间调用关系可如下:
方法E->方法e1->方法a2;
方法A>方法a1->方法a2;
方法B>方法b1->方法b2;
方法B>方法c1->方法c2;
方法C>方法c1->方法c2。
(2)包含的方法类型可如下:
接口类方法(用大写字母表示):方法E、方法A、方法B、方法C;
实体类方法(用小写字母表示):方法a1、方法a2、方法b1、方法b2、方法c1、方法c2、方法e1。
(3)包含的方法与所实现的接口的对应关系可如下:
方法E所实现的接口为接口E;
方法A所实现的接口为接口A;
方法B所实现的接口为接口B;
方法C所实现的接口为接口C。
本实施例中,调用图数据库生成调用链信息,信息以图形结构的形式存储,可以实现信息的高效存储和查询。
在一个具体的实施例中,确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景,可以通过查询场景覆盖关系信息实现,即可以基于目标接口查询场景覆盖关系信息,以确定测试当前版本代码所需运行的测试场景,得到推荐测试场景,场景覆盖关系信息中包括各个测试场景和所覆盖的接口的对应关系。
具体地,场景覆盖关系信息可以预先生成,场景覆盖关系信息的生成方法可如图5所示,具体可以包括如下步骤:
步骤301,通过覆盖率清空接口清空对应测试场景的历史覆盖率数据。
本实施例中,可以预先创建或设计一些测试场景,在需要生成场景覆盖关系信息时,可以在每个测试场景接入覆盖率测试工具,覆盖率测试工具可以是jacoco覆盖率测试插件,在每个测试场景前置覆盖率清空接口,在每个测试场景后置覆盖率获取接口。在启用覆盖率测试工具时,前置的覆盖率清空接口会触发清空被测测试场景的历史覆盖率数据。历史覆盖率数据可以是本次测试之前,针对对应测试场景进行测试产生的覆盖率数据。
步骤302,运行覆盖率测试工具测试对应测试场景覆盖的方法,得到目标覆盖率数据。
目标覆盖率数据可以是可扩展标记语言(Extensible Markup Language,XML)格式的数据,目标覆盖率数据中可以包括对应测试场景覆盖的类、方法等信息。
步骤303,通过覆盖率获取接口获取对应测试场景的目标覆盖率数据。
步骤304,根据各个测试场景的目标覆盖率数据确定对应测试场景的覆盖方法。
即通过解析XML格式的目标覆盖率数据,确定各个测试场景覆盖的类与方法。
步骤305,基于各个测试场景的覆盖方法查询调用链信息,以确定对应测试场景的覆盖方法的类型。
示例地,测试场景的覆盖方法的类型可以包括接口类、实体类(普通类)等。调用链信息中可以包括方法间调用关系、各个方法的类型和各个方法与所实现的接口的对应关系。各个方法的类型在调用链信息中可以通过类型标注或区别标识记录。
步骤306,从各个测试场景的覆盖方法中选出类型为接口类的覆盖方法,得到对应测试场景的目标方法。
即目标方法是测试所得的每个测试场景的覆盖方法中,类型为接口类的覆盖方法,一个测试场景对应的目标方法可以包括一个或多个。
步骤307,基于各个测试场景的目标方法查询调用链信息,以确定对应测试场景的目标方法实现的接口,得到对应测试场景的覆盖接口。
一个测试测试场景的覆盖接口可以包括多个。
步骤308,根据各个测试场景的覆盖接口生成场景覆盖关系信息。
比如,可以将各个测试场景的场景标识信息与所覆盖接口的接口标识信息对应保存,从而生成场景覆盖关系信息。
示例地,场景覆盖关系信息的一个生成过程可如图6所示,假如当前的测试场景为场景A,可以为场景A接入覆盖率测试工具,在场景A前置覆盖率清空接口,在场景A后置覆盖率获取接口,在通过覆盖率清空接口清空测试场景A的历史覆盖率数据之后,利用场景A接入的覆盖率测试工具测试该测试场景A覆盖的方法,根据测试场景A覆盖的方法查询neo4j存储的调用链信息,得到场景A覆盖的接口信息,将场景A覆盖的接口信息存入预设数据库,预设数据库比如可以是mysql数据库。对其他测试场景采用相同测试方法进行测试,从而得到场景覆盖关系信息。
示例地,如图7所示,假设场景A覆盖的方法包括方法A、方法B、方法a1、方法a2、方法b1和方法b2,调用链信息如图4所示,方法中采用大小字母写区分方法类型,其中:大写字母表示接口类方法,小写字母表示普通类方法,查询调用链信息可知场景A的覆盖方法中,方法A、方法B为接口类方法,方法a1、方法a2、方法b1和方法b2为普通类方法,方法A对应的接口为接口A,方法B对应的接口为接口B,则场景A覆盖的接口包括接口A和接口B。
本实施例中,通过查询调用链信息生成场景覆盖关系信息,可以准确、快速地生成场景覆盖关系信息。
下面结合所生成的调用链信息、场景覆盖关系信息进一步描述本发明实施例提供的测试场景确定方法,如图8所示,具体可以包括如下步骤:
步骤401,比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息。
目标应用程序可以是做了版本更新或升级的任意应用程序,可以采用版本控制系统(例如Git)来比较不同版本代码之间的差异。比如,在采用版本提交(commit)命令将当前版本代码提交之后,可以执行版本差异比较(git diff)命令对当前版本代码和历史版本代码在对应分支上进行比较,从而得到代码差异信息。代码差异信息中可以包括代码变更内容,比如所有新增、删除、修改的方法。
步骤402,根据代码差异信息确定变更方法。
具体地,变更方法可以包括新增、删除、修改的方法。
步骤403,基于变更方法查询调用链信息,以确定变更方法是否存在调用方法,若不存在,则执行步骤404,若存在,则执行步骤405。
实际应用中,变更方法可能有调用方法,也可能没有调用方法。比如,在变更方法自身为接口类方法时,可能变更方法会没有调用方法;在变更方法自身为普通方法(非接口类方法)时,则变更方法一般会有调用方法。在变更方法有调用方法时,可以基于调用方法查询调用链信息,以确定目标接口;在变更方法没有调用方法时,可以基于变更方法查询调用链信息,以确定目标接口。变更方法自身可能是接口类方法,也可能是普通类方法。调用链信息中可以包括方法间调用关系、各个方法的类型和各个方法与所实现的接口的对应关系。
步骤404,基于变更方法查询调用链信息,以确定变更方法实现的接口,得到目标接口。
步骤405,基于调用方法查询调用链信息,以确定调用方法实现的接口,得到目标接口。
这里的调用方法可以是变更方法直接或间接调用的接口类方法。
步骤406,基于目标接口查询场景覆盖关系信息,以确定测试当前版本代码所需运行的测试场景,得到推荐测试场景。
场景覆盖关系信息中包括各个测试场景和所覆盖的接口的对应关系。
下面一个具体例子说明本发明的测试场景确定方法,假如根据目标应用程序的代码差异信息确定的变更方法包括方法E、方法a1、方法a2和方法C,调用链信息如图4所示;则可知方法E没有调用方法,方法a1的调用方法为方法A,方法a2的调用方法包括方法A和方法E,方法B没有调用方法;方法E对应的接口为接口E、方法A对应的接口为接口A、方法B对应的接口为接口B,则确定变更方法影响的接口包括接口E、接口A、和接口B;假设场景覆盖关系信息中覆盖接口A和接口B的测试场景为场景A,覆盖接口E的测试场景为场景E,则可以将场景A和场景E作为目标应用程序的当前版本代码的推荐测试场景。实际应用中,一个版本代码的推荐测试场景可能有多个,可以根据多个推荐测试场景生成推荐测试场景列表,并将推荐测试场景列表推送给测试终端,以供测试人员测试对应版本代码。
本实施例的方案,可以比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;根据代码差异信息确定变更方法;识别变更方法影响的接口,得到目标接口;确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景。即本发明提供了一种自动推荐测试场景的方法,根据差异代码(即代码差异信息)确定推荐测试场景,相当于是增量匹配确定测试场景,相对来说,能够减少运行的测试场景的数量,缩短测试时间;另外,通过确定变更方法并识别变更方法影响的接口,来做测试场景自动推荐,能够精准推荐测试场景,提高测试效率;进一步地,通过查询调用链信息确定目标接口、通过查询场景覆盖关系信息确定推荐测试场景,可以准确、快速地确定出推荐测试场景。
图9是本发明实施例提供的测试场景确定装置的一个结构示意图,如图9所示,该装置具体可以包括:
比较模块501,用于比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;
确定模块502,用于根据所述代码差异信息确定变更方法;
识别模块503,用于识别所述变更方法影响的接口,得到目标接口;
推荐模块504,用于确定覆盖所述目标接口的测试场景,得到所述当前版本代码的推荐测试场景。
一实施例中,识别模块503具体用于:
基于所述变更方法查询调用链信息,以确定所述变更方法是否存在调用方法,得到方法调用确定结果,所述调用链信息中包括方法间调用关系;
基于所述方法调用确定结果确定所述目标接口。
一实施例中,所述调用链信息中还包括各个方法与所实现的接口的对应关系,识别模块503基于所述方法调用确定结果确定所述目标接口,包括:
当所述方法调用确定结果为所述变更方法不存在调用方法时,基于所述变更方法查询所述调用链信息,以确定所述变更方法实现的接口,得到所述目标接口;
当所述方法调用确定结果为所述变更方法存在调用方法时,基于所述调用方法查询所述调用链信息,以确定所述调用方法实现的接口,得到所述目标接口。
一实施例中,推荐模块504具体用于:
基于所述目标接口查询场景覆盖关系信息,以确定测试所述当前版本代码所需运行的测试场景,得到所述推荐测试场景,所述场景覆盖关系信息中包括各个测试场景和所覆盖的接口的对应关系。
一实施例中,所述各个测试场景接入有覆盖率测试工具,所述各个测试场景前置有覆盖率清空接口,所述各个测试场景后置有覆盖率获取接口,该装置还包括覆盖关系生成模块,覆盖关系生成模块具体用于:
通过所述覆盖率清空接口清空对应测试场景的历史覆盖率数据;
运行所述覆盖率测试工具测试对应测试场景覆盖的方法,得到目标覆盖率数据;
通过所述覆盖率获取接口获取对应测试场景的所述目标覆盖率数据;
根据所述各个测试场景的所述目标覆盖率数据确定所述场景覆盖关系信息。
一实施例中,覆盖关系生成模块根据所述各个测试场景的所述目标覆盖率数据确定所述场景覆盖关系信息,包括:
根据所述各个测试场景的所述目标覆盖率数据确定对应测试场景的覆盖方法;
根据所述各个测试场景的所述覆盖方法确定所述场景覆盖关系信息。
一实施例中,所述调用链信息中还包括所述各个方法的类型,覆盖关系生成模块根据所述各个测试场景的所述覆盖方法确定所述场景覆盖关系信息,包括:
基于所述各个测试场景的所述覆盖方法查询所述调用链信息,以确定对应测试场景的所述覆盖方法的类型;
从所述各个测试场景的所述覆盖方法中选出类型为接口类的覆盖方法,得到对应测试场景的目标方法;
基于所述各个测试场景的所述目标方法查询所述调用链信息,以确定对应测试场景的所述目标方法实现的接口,得到对应测试场景的覆盖接口;
根据所述各个测试场景的覆盖接口生成所述场景覆盖关系信息。
一实施例中,该装置还包括调用链生成模块,调用链生成模块具体用于:
解析预设应用程序包,得到所述方法间调用关系和所述各个方法与所实现的接口的对应关系;
调用图数据库将所述方法间调用关系和所述各个方法与所实现的接口的对应关系串联并保存,得到所述调用链信息。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述功能模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例的装置,可以比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;根据代码差异信息确定变更方法;识别变更方法影响的接口,得到目标接口;确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景。即本发明提供了一种自动推荐测试场景的方法,根据差异代码(即代码差异信息)确定推荐测试场景,相当于是增量匹配确定测试场景,相对来说,能够减少运行的测试场景的数量,缩短测试时间;另外,通过确定变更方法并识别变更方法影响的接口,来做测试场景自动推荐,能够精准推荐测试场景,提高测试效率。
本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述任一实施例提供的测试场景确定方法。
本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现上述任一实施例提供的测试场景确定方法。
下面参考图10,其示出了适于用来实现本发明实施例的电子设备的计算机系统600的结构示意图。图10示出的电子设备仅仅是一个示例,不应对本发明的功能和使用范围带来任何限制。
如图10所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有计算机系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明中所涉及到的模块和/或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块和/或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括比较模块、确定模块、识别模块和推荐模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;根据所述代码差异信息确定变更方法;识别所述变更方法影响的接口,得到目标接口;确定覆盖所述目标接口的测试场景,得到所述当前版本代码的推荐测试场景。
根据本发明的技术方案,可以比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;根据代码差异信息确定变更方法;识别变更方法影响的接口,得到目标接口;确定覆盖目标接口的测试场景,得到当前版本代码的推荐测试场景。即本发明提供了一种自动推荐测试场景的方法,根据差异代码(即代码差异信息)确定推荐测试场景,相当于是增量匹配确定测试场景,相对来说,能够减少运行的测试场景的数量,缩短测试时间;另外,通过确定变更方法并识别变更方法影响的接口,来做测试场景自动推荐,能够精准推荐测试场景,提高测试效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的采集、收集、更新、分析、处理、使用、传输、存储等方面,均符合相关法律法规的规定,被用于合法的用途,且不违背公序良俗。对用户个人信息采取必要措施,防止对用户个人信息数据的非法访问,维护用户个人信息安全、网络安全和国家安全。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (11)

1.一种测试场景确定方法,其特征在于,包括:
比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;
根据所述代码差异信息确定变更方法;
识别所述变更方法影响的接口,得到目标接口;
确定覆盖所述目标接口的测试场景,得到所述当前版本代码的推荐测试场景。
2.根据权利要求1所述的方法,其特征在于,所述识别所述变更方法影响的接口,得到目标接口,包括:
基于所述变更方法查询调用链信息,以确定所述变更方法是否存在调用方法,得到方法调用确定结果,所述调用链信息中包括方法间调用关系;
基于所述方法调用确定结果确定所述目标接口。
3.根据权利要求2所述的方法,其特征在于,所述调用链信息中还包括各个方法与所实现的接口的对应关系,所述基于所述方法调用确定结果确定所述目标接口,包括:
当所述方法调用确定结果为所述变更方法不存在调用方法时,基于所述变更方法查询所述调用链信息,以确定所述变更方法实现的接口,得到所述目标接口;
当所述方法调用确定结果为所述变更方法存在调用方法时,基于所述调用方法查询所述调用链信息,以确定所述调用方法实现的接口,得到所述目标接口。
4.根据权利要求2或3所述的方法,其特征在于,所述确定覆盖所述目标接口的测试场景,得到所述当前版本代码的推荐测试场景,包括:
基于所述目标接口查询场景覆盖关系信息,以确定测试所述当前版本代码所需运行的测试场景,得到所述推荐测试场景,所述场景覆盖关系信息中包括各个测试场景和所覆盖的接口的对应关系。
5.根据权利要求4所述的方法,其特征在于,所述各个测试场景接入有覆盖率测试工具,所述各个测试场景前置有覆盖率清空接口,所述各个测试场景后置有覆盖率获取接口,所述场景覆盖关系信息通过如下方式得到:
通过所述覆盖率清空接口清空对应测试场景的历史覆盖率数据;
运行所述覆盖率测试工具测试对应测试场景覆盖的方法,得到目标覆盖率数据;
通过所述覆盖率获取接口获取对应测试场景的所述目标覆盖率数据;
根据所述各个测试场景的所述目标覆盖率数据确定所述场景覆盖关系信息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述各个测试场景的所述目标覆盖率数据确定所述场景覆盖关系信息,包括:
根据所述各个测试场景的所述目标覆盖率数据确定对应测试场景的覆盖方法;
根据所述各个测试场景的所述覆盖方法确定所述场景覆盖关系信息。
7.根据权利要求6所述的方法,其特征在于,所述调用链信息中还包括所述各个方法的类型,所述根据所述各个测试场景的所述覆盖方法确定所述场景覆盖关系信息,包括:
基于所述各个测试场景的所述覆盖方法查询所述调用链信息,以确定对应测试场景的所述覆盖方法的类型;
从所述各个测试场景的所述覆盖方法中选出类型为接口类的覆盖方法,得到对应测试场景的目标方法;
基于所述各个测试场景的所述目标方法查询所述调用链信息,以确定对应测试场景的所述目标方法实现的接口,得到对应测试场景的覆盖接口;
根据所述各个测试场景的覆盖接口生成所述场景覆盖关系信息。
8.根据权利要求7所述的方法,其特征在于,所述调用链信息通过如下方式生成:
解析预设应用程序包,得到所述方法间调用关系、所述各个方法的类型和所述各个方法与所实现的接口的对应关系;
调用图数据库将所述方法间调用关系、所述各个方法的类型和所述各个方法与所实现的接口的对应关系串联并保存,得到所述调用链信息。
9.一种测试场景确定装置,其特征在于,包括:
比较模块,用于比较目标应用程序的当前版本代码和历史版本代码,得到代码差异信息;
确定模块,用于根据所述代码差异信息确定变更方法;
识别模块,用于识别所述变更方法影响的接口,得到目标接口;
推荐模块,用于确定覆盖所述目标接口的测试场景,得到所述当前版本代码的推荐测试场景。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8中任一所述的测试场景确定方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任一所述的测试场景确定方法。
CN202310494099.4A 2023-05-05 2023-05-05 测试场景确定方法、装置、电子设备和存储介质 Pending CN116431520A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310494099.4A CN116431520A (zh) 2023-05-05 2023-05-05 测试场景确定方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310494099.4A CN116431520A (zh) 2023-05-05 2023-05-05 测试场景确定方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN116431520A true CN116431520A (zh) 2023-07-14

Family

ID=87094454

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310494099.4A Pending CN116431520A (zh) 2023-05-05 2023-05-05 测试场景确定方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116431520A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112413A (zh) * 2023-08-18 2023-11-24 鱼快创领智能科技(南京)有限公司 一种自动生成接口测试用例的方法
CN117389659A (zh) * 2023-09-06 2024-01-12 苏州数设科技有限公司 一种面向工业软件的方法库管理方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112413A (zh) * 2023-08-18 2023-11-24 鱼快创领智能科技(南京)有限公司 一种自动生成接口测试用例的方法
CN117389659A (zh) * 2023-09-06 2024-01-12 苏州数设科技有限公司 一种面向工业软件的方法库管理方法及装置

Similar Documents

Publication Publication Date Title
CN109388566B (zh) 一种代码覆盖率分析方法、装置、设备及存储介质
CN116431520A (zh) 测试场景确定方法、装置、电子设备和存储介质
US8869111B2 (en) Method and system for generating test cases for a software application
CN112394942B (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
CN109358898B (zh) 一种信息处理方法、装置、电子设备和存储介质
CN112711438A (zh) 依赖组件信息提取方法、设备及计算机可读存储介质
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
US9760470B2 (en) Device, method, and program analysis of new source code to be added to execution program to check for bug
CN115033894A (zh) 一种基于知识图谱的软件组件供应链安全检测方法及装置
US11422917B2 (en) Deriving software application dependency trees for white-box testing
CN109388568B (zh) 代码测试方法和装置
CN114003269A (zh) 组件处理方法、装置、电子设备及存储介质
CN113821496B (zh) 数据库迁移方法、系统、设备及计算机可读存储介质
CN113821486B (zh) pod库之间依赖关系的确定方法及其装置、电子设备
CN106874004B (zh) 低版本软件兼容高版本文件的方法以及客户端和服务器
CN111736848B (zh) 包冲突定位方法、装置、电子设备及可读存储介质
CN114090514A (zh) 分布式系统的日志检索方法及装置
CN114527993A (zh) 应用程序部署方法、装置、设备及介质
CN110377499B (zh) 一种对应用程序进行测试的方法及装置
CN115469844A (zh) 代码处理方法、系统、计算机集群、介质及程序产品
CN113176999A (zh) 基于分布式应用程序的软件测试方法及系统
CN109582534B (zh) 系统的操作入口的确定方法、装置和服务器
CN116361194B (zh) 异常代码识别方法、系统、电子设备及存储介质
CN117742779A (zh) 资源配置信息的核查方法、装置、设备和存储介质
CN116185835A (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