CN116701164B - 测试方法及电子设备 - Google Patents

测试方法及电子设备 Download PDF

Info

Publication number
CN116701164B
CN116701164B CN202211389538.7A CN202211389538A CN116701164B CN 116701164 B CN116701164 B CN 116701164B CN 202211389538 A CN202211389538 A CN 202211389538A CN 116701164 B CN116701164 B CN 116701164B
Authority
CN
China
Prior art keywords
test
code
test case
calling
change
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
Application number
CN202211389538.7A
Other languages
English (en)
Other versions
CN116701164A (zh
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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211389538.7A priority Critical patent/CN116701164B/zh
Publication of CN116701164A publication Critical patent/CN116701164A/zh
Application granted granted Critical
Publication of CN116701164B publication Critical patent/CN116701164B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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

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

测试方法及电子设备
技术领域
本申请涉及智能终端技术领域,尤其涉及一种测试方法及电子设备。
背景技术
随着目标应用程序的业务调整,开发人员需要对代码进行更改以适应业务调整。
目前,在开发人员对目标应用程序的代码进行更改之后,测试人员需要对目标应用程序的各个用例进行全面测试,以检测更改后的代码是否对目标应用程序已有的用例产生影响,进而可以对产生影响的用例进行后续调整或修改。
然而,在上述相关技术中,测试人员会对目标应用程序的各个用例均进行测试,整个回归测试的效率低且缺乏针对性。
发明内容
为了解决上述技术问题,本申请实施例提供一种测试方法及电子设备。在该测试方法中,基于测试设备推荐的测试用例和多样性补测建议对变动代码进行测试,针对性更强,能够有效提升测试精准性,也能够提升回归测试的效率。
第一方面,本申请实施例提供一种测试方法。该方法包括:电子设备获取待测试的变动代码;电子设备确定与变动代码对应的测试用例集,以及与变动代码对应的多样性补测建议;其中,测试用例集包括自动化测试用例集和手工测试用例集;电子设备基于测试用例集和多样性补测建议,对变动代码进行测试。
其中,与变动代码对应的测试用例集包括自动测试用例集和手工测试用例集。
与变动代码对应的多样性补测建议可以包括补测测试用例集,以及相关补测建议。
这样,基于电子设备推荐的测试用例集和多样性补测建议对变动代码进行测试,针对性更强,能够有效提升测试精准性,也能够提升回归测试的效率。
根据第一方面,电子设备确定与变动代码对应的测试用例集,可以包括:电子设备根据变动代码以及与变动代码对应的调用链信息,查询调用链数据平台,确定与变动代码对应的测试用例集;其中,调用链数据平台中包括测试用例与代码间的映射数据,测试用例与调用接口间的映射数据,调用接口与代码间的映射数据。
这样,电子设备针对变动代码推荐测试用例时,不仅依据测试用例与代码间的映射数据,还依据了测试用例与调用接口间的映射数据以及调用接口与代码间的映射数据,测试用例的推荐结果更全面更准确。而且,电子设备还能针对新增代码推荐测试用例,扩展性更强。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备根据变动代码,以及与变动代码对应的调用链信息,查询调用链数据平台,确定与变动代码对应的测试用例集,包括下述至少一项:
电子设备根据变动代码,在调用链数据平台中查询测试用例与代码间的映射数据,以确定与变动代码对应的测试用例集;
电子设备根据与变动代码对应的调用链信息,在调用链数据平台中查询测试用例与调用接口间的映射数据,以确定与变动代码对应的测试用例集;
电子设备根据变动代码,在调用链数据平台中查询测试用例与调用接口间的映射数据,确定与变动代码对应的调用接口,以及根据调用接口在调用链数据平台中查询测试用例与调用接口间的映射数据,以确定与变动代码对应的测试用例集。
这样,由于调用链数据平台中存储的相关数据更加全面准确,使得电子设备基于调用链数据平台推荐测试用例时,也能更加精准。
根据第一方面,或者以上第一方面的任意一种实现方式,该测试方法还包括:在至少一个测试用例的运行过程中,调用链数据采集服务实时采集与测试用例运行相关的上下文事件,并将上下文事件上报至调用链数据平台;其中,调用链数据采集服务以ASM插桩的形式运行在测试用例的运行环境中;调用链数据平台根据上下文事件,确定测试用例与代码间的映射数据、测试用例与调用接口间的映射数据,以及调用接口与代码间的映射数据。
这样,在测试用例的运行环境中,测试用例运行和调用链数据收集能够并行执行,不仅可以实现将调用链数据实时上报的效果,也能达到抗干扰能力强且效率高的效果。
根据第一方面,或者以上第一方面的任意一种实现方式,上下文事件中包括下述至少一项:测试用例的标识、测试用例请求的微服务的标识、测试用例请求的微服务的代码、与测试用例对应的调用接口。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备确定与变动代码对应的多样性补测建议,可以包括:电子设备通过多样性测试分析服务根据变动代码、变动代码的调用链信息以及与变动代码对应的待测微服务中的至少一项,确定与变动代码对应的多样性补测建议。
这样,多样性测试分析服务针对变动代码提供多样性补测建议的依据精准,能够有效提高多样性补测建议的精准性,丰富了变动代码的测试场景,提升了针对变动代码测试的精准性。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备确定与变动代码对应的多样性补测建议,包括:电子设备通过多样性测试分析服务基于热度分析、聚类分析和标签分析中的至少一项,确定与变动代码对应的多样性补测建议。
这样,多样性测试分析服务可以采取多种方式对变动代码提供多样性补测建议,多样性补测建议的精准性强。
根据第一方面,或者以上第一方面的任意一种实现方式,电子设备确定与变动代码对应的多样性补测建议,包括下述至少一项:确定与变动代码对应的补充测试用例、场景测试建议、影响的上下游服务、影响的链路、测试优先级。
这样,测试人员可以基于多样性补测建议对变动代码进行有效的补测,提升了测试的精准性和全面性。
根据第一方面,或者以上第一方面的任意一种实现方式,在电子设备对变动代码进行测试之后,该测试方法还包括:电子设备统计与变动代码对应的增量代码覆盖率;如果增量代码覆盖率不符合测试要求,则电子设备获取并运行补充测试用例,并根据补充测试用例的运行结果更新与变动代码对应的增量代码覆盖率,直至增量代码覆盖率满足测试要求。
这样,通过增量代码覆盖率去评估变动代码的测试覆盖率,测试效率更高。
第二方面,本申请实施例提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行第一方面以及第一方面中任意一项的测试方法。
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第三方面,本申请实施例提供一种计算机可读存储介质。该计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行第一方面以及第一方面中任意一项的测试方法。
第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请实施例提供一种计算机程序产品,包括计算机程序,当计算机程序被运行时,使得计算机执行如第一方面或第一方面中任意一项的测试方法。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第五方面,本申请提供了一种芯片,该芯片包括处理电路、收发管脚。其中,该收发管脚和该处理电路通过内部连接通路互相通信,该处理电路执行如第一方面或第一方面中任意一项的测试方法,以控制接收管脚接收信号,以控制发送管脚发送信号。
第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
图1为示例性示出的电子设备的硬件结构示意图;
图2为示例性示出的本申请实施例提供的测试方法应用场景示意图;
图3为示例性示出的本申请实施例提供的测试方法的模块示意图;
图4为示例性示出的本申请实施例提供的测试方法的流程示意图;
图5a为示例性示出的本申请实施例提供的测试方法的模块示意图;
图5b为示例性示出的测试用例推荐示意图;
图5c为示例性示出的代码覆盖率分析示意图;
图6a为示例性示出的调用链数据采集示意图;
图6b为示例性示出的在测试用例运行过程中涉及的上下文事件上报示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
随着人们对应用程序(或称软件产品等)质量的要求越来越高,对应用程序的业务需求越来越多,开发人员经常需要对代码进行更改以适应业务调整。
目前,在开发人员对目标应用程序的代码进行更改之后,测试人员需要对目标应用程序的各个用例进行全面测试,以检测更改后的代码是否对目标应用程序已有的用例产生影响,进而可以对产生影响的用例进行后续调整或修改。
然而,在上述相关技术中,测试人员会对目标应用程序的各个用例均进行测试,整个回归测试的效率低且缺乏针对性。
在一种实际的应用场景中,目标应用程序的开发人员在对目标应用程序的代码进行更改之后,提出针对目标应用程序的测试请求。其中,该测试请求可以是针对目标应用程序的某个微服务的测试请求。由此,若测试人员对目标应用程序的各个用例均进行测试,无疑会降低回归测试的效率,而且此种测试缺乏针对性。
故而,在不改变原有测试用例集的基础上,如何优化对应用程序的测试过程,提升测试效率,是亟待解决的问题。
为了解决上述问题,本申请实施例提供了一种测试方法。在该测试方法中,测试设备基于应用程序源代码的变更分析,确定代码变对测试用例的影响范围,进而执行有针对性的用例测试,以此优化测试过程和测试数据,提升测试效率及质量。
图1为本申请实施例提供的一种软件测试设备的结构示意图。如图1所示,该软件测试设备100可以包括:至少一个处理器101,通信线路102,存储器103,通信接口104。
其中,处理器101可以通过运行或执行存储在存储器103内的软件程序,以及调用存储在存储器103内的数据,执行软件测试设备100的各种功能。
在具体实现中,作为一种实施例,软件测试设备100可以包括一个处理器,也可以包括多个处理器。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储器103可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc ReadOnly Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器103可以是独立存在,通过通信线路102与处理器101相连接。存储器103也可以和处理器101集成在一起。
其中,存储器103用于存储执行本申请方案的软件程序,并由处理器101来控制执行。
通信接口104,可以是使用任何收发器一类的装置,用于与其他设备或通信网络通信。
通信线路102,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
图1中示出的设备结构并不构成对软件测试设备100的限定,该软件测试设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在一种具体的应用场景下,开发人员针对1.1.0版本的目标应用程序进行代码调整后,得到1.1.1版本的目标应用程序,并提起对1.1.1版本的目标应用程序的测试请求。其中,如图2所示,测试设备在针对1.1.1版本的目标应用程序进行测试时,首先自动分析1.1.1版本的目标应用程序和1.1.0版本的目标应用程序的代码差异,然后测试分析系统根据测试用例与代码,以及测试用例与程序接口(或称程序链路),以及程序接口与代码之间的映射关系等,识别出代码改动所影响的用例范围。其中,代码改动所影响的用例范围可以包括自动化测试用例和手动测试用例。另外,测试分析系统还可以基于一些算法分析得到与代码差异对应的多样性补充测试建议。进而,自动化测试用例集可以在自动化测试平台中运行完成,手工测试用例,以及与补充测试建议相关的多样性测试用例可以在人工的协助下完成运行,由此得到与代码差异对应的测试结果数据。
在一种可选的实施方式中,示例性的,如图3所示,测试分析系统可以包括推荐引擎、调用链数据收集平台和多样性测试分析服务。其中,推荐引擎调用调用链数据收集平台可以获取与代码差异对应的自动化测试用例集和手工测试用例集,推荐引擎调用多样性测试分析服务可以获取与代码差异对应的多样性补充测试建议,以生成多样性测试分析报告。这样,与代码差异对应的自动化测试用例集会通过自动化测试平台进行运行,与代码差异对应的手工测试用例集会在测试人员的协助下完成运行。而且,测试人员会根据多样性测试分析报告对目标应用程序进行补充测试,以此得到与代码差异对应的综合测试结果数据。关于调用链数据收集平台和多样性测试分析服务的相关解释详见下文,在此不再赘述。
这样,测试设备基于对应用程序源代码的变更分析,确定出变更代码所影响的测试用例范围,并得到与代码差异对应的多样性补充测试建议,以通过人工确定与补充测试建议相关的多样性测试用例。进而,与代码变更相关的测试用例可以通过自动化方式或人工协助方式完成运行,以此实现了具有针对性的用例测试,优化了程序测试过程和测试数据,也提升了测试效率及质量。
图4为本申请实施例提供的一种测试方法的流程示意图。如图3所示,该测试方法的流程可以包括:
S301,测试设备响应于针对目标应用程序的测试请求,获取与目标应用程序对应的变动代码,并确定与变动代码对应的调用链信息。
在开发人员对目标应用程序的代码进行调整后,会发起对目标应用程序的测试请求(或称转测请求)。示例性的,测试请求中可以包括但不限于测试编号、应用程序名称、应用程序版本等。
又示例性的,测试请求中还可以包括待测微服务的信息,例如微服务的名称、微服务的类型、微服务的版本号等。待测微服务的数量可以是一个或多个,本实施例对此不做限定。其中,待测微服务指的是需要测试的微服务。微服务,即将单一应用程序划分成一组小的服务,服务之间互相协调,互相配合,为用户提供应用程序的最终价值。微服务的类型可以是新增、修改等。
由此,S301可以调整为测试设备响应于针对目标应用程序的测试请求,获取与每个待测微服务对应的变动代码,并确定与变动代码对应的调用链信息。下述以一个待测微服务为例,对本申请实施例提供的测试方法进行解释说明。
作为一种可选的实施方式,测试设备可以基于差异化分析服务获取与待测微服务对应的变动代码,并确定与变动代码对应的调用链信息。
其中,变动代码包括但不限于新增的代码、修改的代码、删除的代码。
调用链(或称调用链路)是指代码类所包括的调用逻辑。比如,一个代码类中包括调用方法A、调用方法B、调用方法C以及调用方法D,而这些调用方法之间存在的调用逻辑即一种调用链路(可以称之为方法粒度的调用链路),比如调用方法A→调用方法B→调用方法C→调用方法D、调用方法A→调用方法C→调用方法D等。再比如,一个代码类中包括调用接口A、调用接口B、调用接口C以及调用接口D,而这些调用接口之间存在的调用逻辑即一种调用链路(可以称之为接口粒度的调用链路),比如调用接口A→调用接口B→调用接口C→调用接口D、调用接口法A→调用接口C→调用接口D等。
与变动代码对应的调用链信息,即为待测试的调用链,也就是后续测试过程或者自动化测试脚本所针对的调用链。
如图5a所示,示例性的,差异化分析服务可以包括代码变动分析模块和调用链分析模块,调用链分析模块可以包括方法粒度调用链分析模块和接口粒度调用链分析模块(或称链路粒度调用链分析模块、链路接口粒度调用链分析模块)。
其中,代码变动分析模块可以用于分析代码差异,调用链分析模块可以用于分析与变动代码对应的调用链信息。
示例性的,推荐引擎调用代码变动分析模块获取与待测微服务对应的变动代码。代码变动分析模块根据待测微服务的信息(如名称等)在数据仓库中查询相关版本的代码,即查询最新提交版本的代码以及历史最近一次提交版本的代码,并基于相关版本的代码进行变动分析,例如分析代码变动行或代码变动模块等,以确定与待测微服务对应的变动代码。
在实际应用中,项目代码中可以包含类、方法(函数)、表达式等多种不同的代码对象。代码变动分析模块可以对待测微服务相关版本的代码中的差异类、差异方法(或函数)以及差异变量进行分析。其中,关于类、方法和变量的差异,包括但不限于新增、修改、删除。
示例性的,推荐引擎调用调用链分析模块获取与变动代码对应的调用链信息。调用链分析模块根据变动代码查询代码与调用链的映射关系,和/或解析相关的代码上下文,得出于变动代码对应的调用链信息。其中,方法粒度调用链分析模块根据变动代码查询代码与方法粒度的调用链的映射关系,和/或解析相关的代码上下文,得出与变动代码对应的方法调用链信息;接口粒度调用链分析模块根据变动代码查询代码与接口粒度的调用链的映射关系,和/或解析相关的代码上下文,得出与变动代码对应的接口调用链信息。
S302,测试设备根据变动代码和调用链信息,确定与变动代码对应的测试用例。
其中,与变动代码对应的测试用例,即为变动代码所影响的测试用例。该测试用例包括自动化测试用例和手动测试用例。
作为一种可选的实施方式,测试设备可以在链数据收集平台中获取与变动代码对应的测试用例。其中,在调用链数据收集平台中,存储有测试用例与代码的映射数据、测试用例与调用接口的映射数据,调用接口与代码的映射数据。
示例性的,推荐引擎根据变动代码以及调用链信息在链数据收集平台中查询变动代码所影响的测试用例。其中,参照图5b中(1),推荐引擎可以根据变动代码在链数据收集平台中查询测试用例与代码的映射数据,以确定与变动代码对应的测试用例。参照图5b中(2),推荐引擎可以根据与变动代码对应的调用链信息在链数据收集平台中查询测试用例与调用接口的映射数据,以确定与调用链信息对应的测试用例。
参照图5b中(3),在一种情形下,若变动代码为新增代码,则推荐引擎还可以根据变动代码在链数据收集平台中查询调用接口与代码的映射数据,以确定与变动代码对应的接口信息,进而可以根据与变动代码对应的接口信息在链数据收集平台中继续查询测试用例与调用接口的映射数据,以确定与调用接口对应的测试用例(也即与变动代码对应的测试用例)。
S303,测试设备根据待测微服务、变动代码和与变动代码对应的调用链信息中的至少一项,确定与变动代码对应的多样性补充测试建议,并获取与多样性补充测试建议对应的多样性补充测试用例。
在本申请实施例中,测试设备除了可以推荐变动代码所影响的自动化测试用例集和手工测试用例集,还可以为测试人员提供与变动代码对应的多样性补充测试建议。这样,测试人员可以基于多样性补充测试建议补充相关测试用例,以实现对待测微服务的补充测试。
作为一种可选的实施方式,推荐引擎可以调用多样性测试分析服务为测试人员提供与变动代码对应的多样性补充测试建议。示例性的,多样性测试分析服务可以根据待测微服务、变动代码和与变动代码对应的调用链信息中的至少一项,为测试人员提供与变动代码对应的多样性补充测试建议。
继续参照图5a,多样性测试分析服务可以包括热度分析子服务、聚类分析子服务、标签分析子服务。其中,热度分析子服务可以用于根据待测微服务调用接口的热度情形为测试人员提供与待测微服务对应的补充测试建议;聚类分析子服务可以用于根据人工智能的方式为测试人员提供与待测微服务对应的补充测试建议;标签分析子服务可以用于根据测试人员预定义的标签信息为测试人员提供与待测微服务对应的补充测试建议。
在一种可选的实施方式中,热度分析子服务可以获取待测微服务的调用接口信息,依次判断各个调用接口的热度(或称调用频率)是否满足预设要求。在待测微服务的各个调用接口中,如果存在热度满足预设要求(如调用频率大于预设阈值)的调用接口,则热度分析子服务为测试人员提供这些待补测的调用接口,以及与该调用接口对应的补测建议,例如这些调用接口关联的测试用例。
在一种可选的实施方式中,聚类分析子服务可以基于人工智能的方式,或者聚类分析的方式,为测试人员提供这些待补测的调用接口,以及与该调用接口对应的补测建议,例如这些调用接口关联的测试用例。
其中,聚类分析子服务可以采用预先训练好的机器学习模型,根据变动代码、变动代码的调用链信息以及与变动代码对应的待测微服务中的至少一项,确定与变动代码对应的多样性补测建议。关于机器学习模型的输入信息,与其训练样本有关,本实施例对此不做限定。例如,机器学习模型可以分析与变动代码对应的补充测试用例、场景测试建议、影响的上下游服务、影响的链路、测试优先级等。
示例性的,聚类分析子服务基于人工智能方式,例如预先训练好的机器学习模型等,分析待测微服务上下游的链路接口,并为测试人员提供待测微服务上下游的链路接口,以及与这些链路接口对应的补测建议,例如相关测试用例、相关测试场景等。
示例性的,在待测微服务为新增微服务的情形下,聚类分析子服务基于人工智能方式,例如预先训练好的机器学习模型等,确定待测微服务可能影响的链路接口,可能影响的上下游服务,并为测试人员提供这些链路接口及服务,与这些链路接口及服务对应的补测建议,例如相关测试用例、相关测试场景等。
在一种可选的实施方式中,测试人员预先对一些需要着重关注的调用接口设置标签,或者是将调用接口与相关测试用例进行人工绑定等。这样,标签分析子服务可以获取待测微服务的调用接口信息,依次判断各个调用接口是否设置有预设标签或者绑定信息。在待测微服务的各个调用接口中,如果存在设置有预设标签或者绑定信息的调用接口,则标签分析子服务为测试人员提供这些待补测的调用接口,以及与该调用接口对应的补测建议,例如这些调用接口关联的测试用例。
这样,推荐引擎在调用链数据收集平台中获取的与变动代码相关的测试用例(自动测试用例或手动测试用例),与推荐引擎调用多样性测试分析服务获取的与变动代码对应的多样性补充测试用例(自动测试用例或手动测试用例)可能存在重复的情形,则推荐引擎可以对这些测试用例进行清洗操作。
可选的,推荐引擎还可以对测试用例进行排序,以确定测试用例的执行顺序。例如,推荐引擎可以按照测试用例的优先级分别将自动化测试用例和手工测试用例进行排序,以此分别作为自动化测试用例和手工测试用例的执行顺序。
作为一种可选的实施方式,推荐引擎可以输出差异评估报告、用例推荐报告和多样性分析报告。
示例性的,在差异评估报告中例如可以包括测试任务基本信息、代码对比结果、历史影响分析等。其中,测试任务基本信息中可以包括项目名称、评估方式、微服务名称、微服务类型、基准版本、目标版本等;代码对比结果包括差异类对比结果、差异方法对比结果、差异变量对比结果;历史影响分析可以包括影响接口数量、影响测试用例数量等(包括影响自动化测试用例数量和影响手工测试用例数量)。
示例性的,用例推荐报告中包括推荐的自动化测试用例集和手工测试用例集。
又示例性的,多样性分析报告中可以包括补充测试用例集、场景测试建议、基于接口热度和标签确定的补测建议等。其中,多样性分析报告中可以直接为测试人员展示基于接口热度和标签确定的补测接口,也可以为测试人员展示与补测接口相关的测试用例等。
S304,测试设备运行与变动代码对应的测试用例,以及多样性补充测试用例。
其中,与变动代码对应的测试用例,包括自动化测试用例和手工测试用例。自动化测试用例通过自动化测试平台运行,手工测试用例在测试人员的协助下完成运行。
其中,多样性补充测试用例可以仅为手工测试用例,也可以既包括手工测试用例又包括自动化测试用例,本实施例对此不做限定。
S305,测试设备根据测试用例的运行结果,进行增量代码覆盖率分析,生成增量代码覆盖率分析报告。
如图5c所示,测试设备通过自动化测试平台自动执行自动化测试用例,并调用覆盖率分析系统采集代码覆盖数据。继续参照图5c,测试设备在测试人员的协助下执行手工测试用例,并调用覆盖率分析系统采集代码覆盖数据。
覆盖率分析系统将基于自动化测试用例执行获取的代码覆盖数据,和基于手工测试用例执行获取的代码覆盖数据合并,生成覆盖率分析报告。其中,在覆盖率分析报告中可以包括代码覆盖率以及未覆盖的代码。
其中,覆盖率分析系统可以统计全量代码覆盖率和增量代码覆盖率。
在本申请实施例中,覆盖率分析系统可以通过增量代码覆盖率分析模块分析与增量代码(或称变动代码)对应的代码覆盖数据,进而统计出增量代码覆盖率。
S306,测试设备根据增量代码覆盖率分析报告判断针对目标应用程序的测试是否满足预设测试要求,若否,执行S307,若是,则执行S308。
其中,在针对一个微服务进行测试时,测试设备可以根据增量代码覆盖率分析报告判断针对这个微服务的测试是否满足预设测试要求,例如增量代码覆盖率是否达到预设阈值。
在待测微服务的增量代码覆盖率达到预设阈值时,针对待测微服务的测试流程结束,即可生成与该微服务对应的测试报告。
如果待测微服务的增量代码覆盖率未达到预设阈值,则测试设备可以根据增量代码覆盖率分析报告提示测试人员进行补测。
S307,测试设备获取并运行补充测试用例,以及根据补充测试用例运行结果更新增量代码覆盖率分析报告,执行S306。
在待测微服务的增量代码覆盖率未达到预设阈值时,测试人员可以根据未覆盖的代码确定补充测试用例,可以包括自动化测试用例和手工测试用例,本实施例对此不做限定。
在此情形下,测试设备获取补充测试用例,并采用匹配的方式(自动或手工)运行相应的补充测试用例。其中,在补充测试用例完成运行后,覆盖率分析系统可以结合与补充测试用例运行对应的代码覆盖数据,更新与待测微服务对应的增量代码覆盖率以及代码覆盖情形。
在待测微服务的增量代码覆盖率达到预设阈值时,针对待测微服务的测试流程结束,即可生成与该微服务对应的测试报告。若待测微服务的增量代码覆盖率仍未达到预设阈值,则测试人员可以继续根据未覆盖的代码确定补充测试用例,直至待测微服务的增量代码覆盖率达到预设阈值,测试流程结束。
S308,测试结束。
在本申请实施例中,对目标应用程序进行测试的过程中,测试设备基于在调用链数据收集平台中的测试用例和代码的映射数据、测试用例和调用接口的映射数据,以及调用接口和代码的映射数据推荐测试用例,不仅能推荐自动化测试用例还可以推荐手工测试用例,测试用例推荐结果更加全面准确。而且,测试设备还可以基于多样性测试分析推荐测试人员进行补充测试,能够有效评估待测程序对上下游服务的影响范围,使得测试更加精准。
需要强调的是,在本申请实施例中,调用链数据收集平台收集测试用例和代码的映射数据、测试用例和调用接口的映射数据,以及调用接口和代码的映射数据,是能够与测试用例的运行并发执行的。在已有技术中,大多通过对开源覆盖率统计工具的数据分析结果进行数据解析,以此获取到相关调用链数据,且此种获取调用链数据的方式必须在无干扰的情况下运行。相比于此种方式,测试用例运行和调用链数据收集并行执行,能够实现将调用链数据实时上报的效果,抗干扰能力强且效率高。
在本申请实施例中,如图6a所示,将调用链数据采集服务插桩至测试用例运行环境中,该测试用例运行环境可以用于运行自动化测试用例或手动测试用例。示例性的,可以将调用链数据采集服务以ASM(Assemble,汇编)字节码插桩的形式插桩到测试用例运行环境中。其中,调用链数据采集服务用于采集与调用链数据对应的上下文事件,并将上下文事件上动态报至调用链数据收集平台。
继续参照图6a,在测试用例的运行过程中,调用链数据采集服务将采集到的调用链数据通过上下文事件上报至调用链数据收集平台。调用链数据收集平台基于对接收到的上下文事件的分析,得到测试用例和代码的映射数据、测试用例和调用接口的映射数据,以及调用接口和代码的映射数据,进行存储。
作为一种可选的实施方式,每个测试用例通过x-testcase进行唯一标识,业务间(也即微服务间)通过x-trace唯一标识关联。示例性的,测试用例1的唯一标识为x-testcase_1,测试用例2的唯一标识为x-testcase_2。又示例性的,微服务A和微服务B之间通过x-trace_AB唯一标识二者的关联,微服务B和微服务C之间通过x-trace_BC唯一标识二者的关联。
参照图6b,在每个测试用例的运行过程中,向微服务发送的http请求中添加有测试用例的唯一标识,用于标识相应的测试用例。其中,在微服务的代码运行过程中,针对每次方法间的消息流转,调用链数据采集服务均会将与测试用例相应的上下文事件上报至调用链数据收集平台。示例性的,该上下文事件中可以包括但不限于测试用例的唯一标识以及方法(或称函数)的唯一标识等。又示例性的,该上下文事件中可以包括但不限于测试用例的唯一标识以及方法(或称函数)的关键代码等。再示例性的,该上下文事件中可以包括但不限于测试用例的唯一标识以及方法(或称函数)的调用接口等。
继续参照图6b,针对每次微服务间的消息流转,调用链数据采集服务均会将相应的上下文事件上报至调用链数据收集平台。示例性的,该上下文事件中可以包括但不限于测试用例的唯一标识、微服务的唯一标识以及微服务之间的关联标识。又示例性的,该上下文事件中可以包括但不限于测试用例的唯一标识、微服务的关键代码以及微服务之间的关联标识。再示例性的,该上下文事件中可以包括但不限于测试用例的唯一标识、微服务的调用接口以及微服务之间的关联标识等。
如图6b所示,调用链数据收集平台可以包括事件收集模块、数据整理模块和数据存储模块。其中,事件收集模块用于收集调用链数据采集服务上报的上下文事件;数据整理模块用于对收集到的上下文事件进行整理,以获取到相应的调用链数据;数据存储模块用于将整理得到调用链数据进行存储。
可选的,数据整理模块对收集到的上下文事件进行解析,确定测试用例和代码之间的原始映射数据、测试用例和调用接口之间的原始映射数据,以及调用接口和代码之间的原始映射数据。
其中,测试用例和代码之间的原始映射数据、测试用例和调用接口之间的原始映射数据,以及调用接口和代码之间的原始映射数据,可能存储重复和/或冲突的情况,故数据整理模块可以对这些原始映射数据进行清洗,例如去重处理、丢弃处理等,以得到测试用例和代码之间的目标映射数据、测试用例和调用接口之间的目标映射数据,以及调用接口和代码之间的目标映射数据,并通过数据存储模块将这些目标映射数据进行存储。
示例性的,调用链数据采集服务还可以向调用链数据收集平台反馈测试用例的运行结果,如成功或失败。此时,数据整理模块可以将与运行失败的测试用例对应的原始映射数据进行丢弃处理。
这样,在测试用例的运行过程中,在测试运行环境中以ASM字节码插桩的形式运行的调用链数据采集服务,能够并行地执行实时采集调用链数据的操作。其中,调用链数据采集服务的数据采集操作不会影响测试用例的运行,抗干扰能力强且效率高。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的测试方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的测试方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的测试方法。
其中,本实施例提供的电子设备(如手机等)、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (7)

1.一种测试方法,其特征在于,包括:
获取待测试的变动代码,并确定与所述变动代码对应的调用链信息;所述调用链信息包括调用方法的信息和调用接口的信息;
根据所述变动代码以及与所述变动代码对应的调用链信息,查询调用链数据平台,确定与所述变动代码对应的测试用例集;其中,所述调用链数据平台中包括测试用例与代码间的映射数据,测试用例与调用接口间的映射数据,调用接口与代码间的映射数据;所述测试用例集包括自动化测试用例集和手工测试用例集;所述测试用例集中包括对应于代码的测试用例、对应于调用方法的测试用例,以及对应于调用接口的测试用例;
其中,根据所述变动代码,以及与所述变动代码对应的调用链信息,查询调用链数据平台,确定与所述变动代码对应的测试用例集,包括下述至少一项:
根据所述变动代码,在所述调用链数据平台中查询所述测试用例与代码间的映射数据,以确定与所述变动代码对应的测试用例集;
根据与所述变动代码对应的调用链信息,在所述调用链数据平台中查询所述测试用例与调用接口间的映射数据,以确定与所述变动代码对应的测试用例集;
根据所述变动代码,在所述调用链数据平台中查询所述调用接口与代码间的映射数据,确定与所述变动代码对应的调用接口,以及根据所述调用接口在所述调用链数据平台中查询所述测试用例与调用接口间的映射数据,以确定与所述变动代码对应的测试用例集;
通过多样性测试分析服务基于热度分析、聚类分析和标签分析中的至少一项,确定与所述变动代码对应的多样性补测建议;其中,所述热度分析用于分析待测微服务调用接口的热度情形,所述聚类分析用于根据人工智能的方式分析待补测的调用接口,所述标签分析用于根据预定义标签分析待补测的调用接口;
基于所述测试用例集和所述多样性补测建议,对所述变动代码进行测试;
其中,基于所述测试用例集和所述多样性补测建议,对所述变动代码进行测试时,所述方法还包括:
在至少一个测试用例的运行过程中,通过调用链数据采集服务实时采集与测试用例运行相关的上下文事件,并将所述上下文事件上报至所述调用链数据平台;其中,所述调用链数据采集服务以ASM插桩的形式运行在测试用例的运行环境中;
通过所述调用链数据平台根据所述上下文事件,确定所述测试用例与代码间的映射数据、所述测试用例与调用接口间的映射数据,以及所述调用接口与代码间的映射数据。
2.根据权利要求1所述的方法,其特征在于,所述上下文事件中包括下述至少一项:测试用例的标识、所述测试用例请求的微服务的标识、所述测试用例请求的微服务的代码、与所述测试用例对应的调用接口。
3.根据权利要求1所述的方法,其特征在于,所述确定与所述变动代码对应的多样性补测建议,包括:
通过多样性测试分析服务根据所述变动代码、所述变动代码的调用链信息以及与所述变动代码对应的待测微服务中的至少一项,确定与所述变动代码对应的多样性补测建议。
4.根据权利要求1或3所述的方法,其特征在于,所述确定与所述变动代码对应的多样性补测建议,包括下述至少一项:
确定与所述变动代码对应的补充测试用例、场景测试建议、影响的上下游服务、影响的链路、测试优先级。
5.根据权利要求1所述的方法,其特征在于,在对所述变动代码进行测试之后,还包括:
统计与所述变动代码对应的增量代码覆盖率;
如果所述增量代码覆盖率不符合测试要求,则获取并运行补充测试用例,并根据所述补充测试用例的运行结果更新与所述变动代码对应的增量代码覆盖率,直至所述增量代码覆盖率满足所述测试要求。
6.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-5中任一项所述的测试方法。
7.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-5中任一项所述的测试方法。
CN202211389538.7A 2022-11-08 2022-11-08 测试方法及电子设备 Active CN116701164B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211389538.7A CN116701164B (zh) 2022-11-08 2022-11-08 测试方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211389538.7A CN116701164B (zh) 2022-11-08 2022-11-08 测试方法及电子设备

Publications (2)

Publication Number Publication Date
CN116701164A CN116701164A (zh) 2023-09-05
CN116701164B true CN116701164B (zh) 2024-05-03

Family

ID=87836256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211389538.7A Active CN116701164B (zh) 2022-11-08 2022-11-08 测试方法及电子设备

Country Status (1)

Country Link
CN (1) CN116701164B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190074072A (ko) * 2017-12-19 2019-06-27 슈어소프트테크주식회사 테스트 서버의 전문 기반 통신 방법 및 전문 기반으로 통신하는 테스트 서버
CN110554962A (zh) * 2019-08-14 2019-12-10 平安普惠企业管理有限公司 回归测试的流程覆盖方法、服务器及计算机可读存储介质
CN112817865A (zh) * 2021-02-24 2021-05-18 福建天泉教育科技有限公司 一种基于组件化分布式系统的覆盖精准测试方法及其系统
CN113760769A (zh) * 2021-09-13 2021-12-07 北京百度网讯科技有限公司 测试用例处理方法、装置、电子设备以及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200104246A1 (en) * 2018-10-01 2020-04-02 Ca, Inc. Continuous automation with test suite engine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190074072A (ko) * 2017-12-19 2019-06-27 슈어소프트테크주식회사 테스트 서버의 전문 기반 통신 방법 및 전문 기반으로 통신하는 테스트 서버
CN110554962A (zh) * 2019-08-14 2019-12-10 平安普惠企业管理有限公司 回归测试的流程覆盖方法、服务器及计算机可读存储介质
CN112817865A (zh) * 2021-02-24 2021-05-18 福建天泉教育科技有限公司 一种基于组件化分布式系统的覆盖精准测试方法及其系统
CN113760769A (zh) * 2021-09-13 2021-12-07 北京百度网讯科技有限公司 测试用例处理方法、装置、电子设备以及存储介质

Also Published As

Publication number Publication date
CN116701164A (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
CN106909510B (zh) 一种获取测试用例的方法以及服务器
Mariani et al. Compatibility and regression testing of COTS-component-based software
Gall et al. Detection of logical coupling based on product release history
US8312440B2 (en) Method, computer program product, and hardware product for providing program individuality analysis for source code programs
CN110175110A (zh) 压力测试方法、装置、系统、设备及计算机可读存储介质
JP2018185808A (ja) ブロックチェーンに基づくスマート契約をテストする装置及び方法
US20080141224A1 (en) Debug information collection method and debug information collection system
CN111522728A (zh) 自动化测试用例的生成方法、电子设备及可读存储介质
CN105577472A (zh) 一种数据采集测试方法和装置
CN111858354A (zh) 自动生成测试报告的方法、装置、存储介质及电子设备
CN116701164B (zh) 测试方法及电子设备
CN111966597B (zh) 测试数据生成方法及装置
CN113220597A (zh) 测试方法、测试装置、电子设备及存储介质
CN112527619A (zh) 一种基于有向无环图结构的分析链路调用方法及系统
CN115061907A (zh) 测试方法和测试系统、电子设备、存储介质
CN115576831A (zh) 一种测试案例推荐方法、装置、设备及存储介质
CN115391233A (zh) 一种基于覆盖率分析和链路追踪的精准测试方法
CN113806231A (zh) 一种代码覆盖率分析方法、装置、设备和介质
CN115543981A (zh) 数据质量检测方法和装置、介质、设备
KR101039874B1 (ko) 정보통신 통합플랫폼 테스트 시스템
CN114416546A (zh) 一种代码覆盖率确定方法及装置
CN113434405A (zh) 测试文件的确定方法及装置、存储介质及电子装置
CN113032254B (zh) 测试覆盖情况的评估方法和装置
CN117724972A (zh) 代码覆盖率测试方法、装置、存储介质及计算机设备
CN115587048A (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
GR01 Patent grant
GR01 Patent grant