CN112214414A - 基于自动化测试的覆盖率处理方法、装置、设备及介质 - Google Patents

基于自动化测试的覆盖率处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN112214414A
CN112214414A CN202011184318.1A CN202011184318A CN112214414A CN 112214414 A CN112214414 A CN 112214414A CN 202011184318 A CN202011184318 A CN 202011184318A CN 112214414 A CN112214414 A CN 112214414A
Authority
CN
China
Prior art keywords
functions
function
automatic test
newly added
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.)
Granted
Application number
CN202011184318.1A
Other languages
English (en)
Other versions
CN112214414B (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.)
Ping An Bank Co Ltd
Original Assignee
Ping An Bank 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 Ping An Bank Co Ltd filed Critical Ping An Bank Co Ltd
Priority to CN202011184318.1A priority Critical patent/CN112214414B/zh
Publication of CN112214414A publication Critical patent/CN112214414A/zh
Application granted granted Critical
Publication of CN112214414B publication Critical patent/CN112214414B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3688Test management for test execution, e.g. scheduling of test suites
    • 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

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

本发明涉及测试领域,揭露了一种基于自动化测试的覆盖率处理方法、装置、设备及介质,该方法包括:接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。本发明能够获取到准确、客观的覆盖率,有利于测试工作的顺利执行。

Description

基于自动化测试的覆盖率处理方法、装置、设备及介质
技术领域
本发明涉及测试技术领域,尤其涉及一种基于自动化测试的覆盖率处理方法、装置、设备及介质。
背景技术
覆盖率是度量测试完整性的一个手段,通过已执行代码表示,用于可靠性、稳定性以及性能的评测,测试包括接口自动化测试、WebUI自动化测试、AppUI自动化测试等。现有的自动化测试覆盖率的公知方案有以下两种:
一.计算自动化案例数与黑盒测试案例数的比值,通常有两种计算方法:1、自动化案例数除以案例总数(自动化案例数+黑盒案例数);2、自动化案例数关联黑盒案例,人工建立起映射关系,然后用实现自动化的黑盒案例数除以黑盒案例总数,即黑盒案例的自动化覆盖率。黑盒测试用例(可用于功能测试/集成测试/系统测试)通常是基于软件需求的需求覆盖率,即测试所覆盖的需求数量与总需求数量的比值,需要依赖人工计算,尤其是需要依赖人工去标记每个测试用例和需求之间的映射关系。这种方法存在以下弊端:黑盒案例颗粒度的粗细靠测试人员主观决定,依赖黑盒案例的自动化测试覆盖率不准确。
二.计算代码覆盖率:这是面向软件开发和实现的。它关注的是在执行测试用例时,有哪些软件代码被执行到,有哪些软件代码没有被执行到。被执行的代码数量与代码总数量之间的比值,就是代码覆盖率。代码覆盖率一般通过第三方工具完成,不同编程语言,有不同的工具。例如Java语言有Jacoco,Go语言有GoCov,Python语言有Coverage.py。这些方法存在以下弊端:该工具统计的是从应用启动到查询时刻,所有的测试活动的代码覆盖率,没有区分哪些代码是自动化测试案例覆盖的,哪些是手工黑盒测试覆盖的,对自动化测试参考意义有限;并且这些度量工具一般只适用于白盒测试(尤其是单元测试),而通常白盒测试都是用于开发的,而不是用于测试的。
综上,提供一种基于自动化测试的覆盖率处理方法,用以获取准确、客观的覆盖率,成为有待解决的技术问题。
发明内容
本发明的目的在于提供一种基于自动化测试的覆盖率处理方法、装置、设备及介质,旨在获取准确、客观的覆盖率。
本发明提供一种基于自动化测试的覆盖率处理方法,包括:
S1,接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;
S2,在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;
S3,接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;
S4,对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;
S5,获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。
本发明还提供一种基于自动化测试的覆盖率处理装置,包括:
开启模块,用于接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;
录制模块,用于在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;
终止模块,用于接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;
去重运算模块,用于对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;
处理模块,用于获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。
本发明还提供一种计算机设备,所述计算机设备包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于自动化测试的覆盖率处理方法的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于自动化测试的覆盖率处理方法的步骤。
本发明的有益效果是:本发明在执行测试的过程中,通过JavaAgent代理程序录制被测程序代码中的函数并去重,得到实际运行函数的数量,由于实际运行函数的数量是自动化测试案例在测试过程中实际触发的函数的数量,而被测程序对应的函数的总数是客观存在的,因此通过该总数及实际运行函数的数量计算得到准确、客观的覆盖率,能够准确地衡量测试工作的工作量,有利于测试工作的顺利执行。
附图说明
图1为本发明基于自动化测试的覆盖率处理方法一实施例的应用环境示意图;
图2为本发明基于自动化测试的覆盖率处理方法第一实施例的流程示意图;
图3为图2中对所录制的函数进行去重运算处理得到实际运行函数的步骤的细化流程示意图;
图4为本发明基于自动化测试的覆盖率处理方法第二实施例的流程示意图;
图5为本发明基于自动化测试的覆盖率处理装置一实施例的结构示意图;
图6为本发明计算机设备一实施例的硬件架构的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
参阅图1所示,是本发明基于自动化测试的覆盖率处理方法一实施例的应用环境示意图。在图1中,测试人员在终端1的自动化平台发出指令,通过网络传输给服务器2,服务器2启动被测程序时,同时启动JavaAgent代理程序,通过JavaAgent代理程序录制函数,在终端1发出终止指令时,JavaAgent代理程序终止录制,并回传数据,最后计算被测程序的函数覆盖率。
本发明提供的基于自动化测试的覆盖率处理方法,可应用在如图1的应用环境中。其中,终端1可以包括但不限于各种个人计算机、笔记本电脑、平板电脑和便携式可穿戴设备。服务器2可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
参阅图2所示,为本发明基于自动化测试的覆盖率处理方法第一实施例的流程示意图。以所述方法应用在图1的环境中为例进行说明,包括:
步骤S1,接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;
其中,自动化测试案例为功能测试案例,一次测试包括测试多个功能测试案例。
本实施例中,接收终端发送的执行指令,执行案例的自动化测试的同时,启动用于录制被测程序代码中的函数的JavaAgent代理程序,此外,该JavaAgent代理程序还基于预定的通信协议开启一个监听端口,用于监听针对自动化测试案例进行测试的相关指令,例如结束指令。预定的通信协议例如为websocket通信协议,当然,也可以是其他的通信协议。
步骤S2,在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;
其中,对自动化测试案例进行测试,在启动JavaAgent代理程序后,JavaAgent代理程序开启录制功能,记录每一条自动化测试案例的唯一标识码、自动化测试案例的名称,还可以进一步记录录制的开始时间及结束时间,以用于区分测试执行的设备及后续的更新维护等。根据所录制的内容生成关联表,如下表1所示:
Figure BDA0002749402700000051
Figure BDA0002749402700000061
表1
其中,表中的id为自动化测试案例的唯一标识码,Autotest为自动化测试案例的名称。
对于每一条自动化测试案例,在执行测试时,会有对应的被测程序运行,自动化测试案例与对应的被测程序存在关联关系。JavaAgent代理程序录制与这些自动化测试案例关联的被测程序代码中每一个被触发的函数,包括函数的名称、参数等,例如,函数“com.pingan.common.A.fun_1”,其中“com.pingan.common.A”为函数的全路径,“fun”为函数名称,“_1”为参数个数,如下表2所示:
tab1_id fun_name
1 com.pingan.common.A.fun_1
1 com.pingan.common.A.fun_2
2 com.pingan.common.B.fun_1
3 com.pingan.common.C.fun_1
表2
其中,“tab1_id”为自动化测试案例的唯一标识码,用于与表1中的自动化测试案例进行关联;“fun_name”为被测程序代码中被触发的函数的函数名称。
当然,上述表1及表2可以不分开,而处于同一个表中,此处不做过多限制。
步骤S3,接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;
步骤S4,对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;
进一步地,如图3所示,对所录制的函数进行去重运算处理得到实际运行函数的步骤,具体包括:
步骤S41,获取所录制函数的函数名称及参数个数;
步骤S42,对于函数名称及参数个数均相同的两个或两个以上的函数进行剔除处理,保留一个函数作为所述实际运行函数。
其中,在测试完成时,通过上述开启的监听端口接收终端发送的结束指令,在接收该结束指令时,终止JavaAgent代理程序的录制操作。然后,针对每一条自动化测试案例,对于录制的函数进行去重处理,函数名称相同、且参数个数相同的函数为重复的函数,需要进行剔除处理;函数名称相同但参数个数不相同的函数为不同的函数,不需要进行剔除处理。本实施例将函数名称相同、且参数个数相同的两个或两个以上的函数进行剔除处理,只保留一个函数。去重处理的方法在代码上例如为:df2=df1.drop_duplicates(['fun_name'],keep='first',inplace=False),其中,df1是录制得到的所有函数的列表,通过去重运算后得到df2列表。这样,每一条自动化测试案例关联的被测程序代码中的所有函数中,去重处理后的函数为均不相同的函数。
对去重处理后的实际运行函数进行统计,得到各自动化测试案例关联的被测程序代码中对应的实际运行函数的数量。将各自动化测试案例关联的被测程序代码中对应的实际运行函数的数量存储到数据库中。
步骤S5,获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。
其中,可以从数据库中获取预存的被测程序代码中对应的函数的总数,然后计算被测程序的函数覆盖率R=(实际运行函数的数量/总数)*100%。
在本实施例中,在执行测试的过程中,通过JavaAgent代理程序录制被测程序代码中的函数并去重,得到实际运行函数的数量,由于实际运行函数的数量是自动化测试案例在测试过程中实际触发的函数的数量,而被测程序对应的函数的总数是客观存在的,因此通过该总数及实际运行函数的数量计算得到准确、客观的覆盖率,能够准确地衡量测试工作的工作量,有利于测试工作的顺利执行。
在一实施例中,如图4所示,为本发明基于自动化测试的覆盖率处理方法第二实施例的流程示意图。其中,在获取预存的所述被测程序代码中的函数的总数的步骤之前,还包括:
步骤S6,扫描预存的所述被测程序的源代码,记录所述源代码中所有的函数;
步骤S7,对所记录的函数进行去重运算处理得到源代码函数,统计所述源代码函数的总数,关联存储所述总数及所述被测程序。
本实施例中,通过扫描并解析预存在代码托管平台的各自动化测试案例对应的被测程序的源代码,得到自动化测试案例对应的被测程序的源代码中所有的函数,包括函数名称、函数参数等,记录被测程序的源代码中所有的函数。
本实施例中,去重运算处理与上述实施例的去重运算处理相同,针对自动化测试案例对应的被测程序,将函数名称相同、且参数个数相同的两个或两个以上的函数,只保留其中一个函数。这样,被测程序的源代码中对应的所有函数中,去重处理后的函数为均不相同的函数。
统计去重处理后的函数的数量,得到被测程序的源代码中对应的函数的总数。将源代码中函数的总数及被测程序关联存储到数据库中,以便后续获取被测程序的源代码中函数的总数。
在其他实施例中,本发明的基于自动化测试的覆盖率处理方法还可以包括以下步骤:
对于新增的一条自动化测试案例,执行所述步骤S1至步骤S3,以录制新增的自动化测试案例对应的被测程序代码中的函数;
对所录制的函数进行去重运算处理得到第一新增运行函数;
将所述第一新增运行函数与所述源代码函数进行比对,在所述第一新增运行函数中将与所述源代码函数中的函数相同的函数剔除,得到第二新增运行函数,统计所述第二新增运行函数的数量;
基于所述第二新增运行函数的数量分析所新增的自动化测试案例的有效性。
其中,如果由于功能的需求,需要更多的功能时,那么可以新增一个或多个自动化测试案例。对于新增的每一条自动化测试案例,通过执行上述步骤S1至步骤S3的录制操作,录制新增的该条自动化测试案例对应的被测程序代码中的函数。
对所录制的函数进行去重运算处理的操作与上述实施例去重运算处理相同,去重运算处理后得到第一新增运行函数,该第一新增运行函数中包括一个或多个不相同的函数。
通过代码执行得到第二新增运行函数例如为:
假设新增的自动化测试案例id=4,该自动化测试案例关联的列表(参考表2)为test4_fun_list,df2为源代码函数列表,设new_fun_list为第二新增运行函数列表,则:
Figure BDA0002749402700000091
统计new_fun_list中第二新增运行函数的数量new_fun_list.count(),分析新增的自动化测试案例的有效性:
如果new_fun_list.count()>0,则新增的该条自动化测试案例是有效的;
如果new_fun_list.count()=0,则新增的该自动化测试案例中的函数全是新增自动化测试案例之前用过的,那么就要改进新增的自动化测试案例了。
本实施例通过单独对新增的一条自动化测试案例对应的第二新增运行函数的数量进行分析,从而分析该新增的自动化测试案例的有效性,如果有效则可以保留该新增的自动化测试案例,如果无效,那么可以去掉该新增的自动化测试案例,以去除测试的不必要部分,在计算得到准确、客观的覆盖率的同时,还能评估新增的自动化测试案例的有效性,以使得测试操作简便快捷,提高测试效率。
在其他实施例中,本发明的基于自动化测试的覆盖率处理方法还可以包括以下步骤:
对于新增的一条或多条自动化测试案例,执行所述步骤S1至步骤S3,以录制新增的自动化测试案例对应的被测程序代码中的函数;
对所录制的函数进行去重运算处理得到第三新增运行函数;
将所述第三新增运行函数与所述源代码函数进行比对,在所述第三新增运行函数中将与所述源代码函数中的函数相同的函数剔除,得到第四新增运行函数,统计所述第四新增运行函数的数量;
基于所述总数及所述第四新增运行函数的数量计算新增的自动化测试案例的有效率。
本实施例的步骤基本与上述实施例的步骤相同,对于新增的一条或多条自动化测试案例,还可以计算新增的自动化测试案例的有效率,其中,有效率=第四新增运行函数的数量/总数)*100%。
如果新增的自动化测试案例的有效率达到预期的有效率,例如10%,那么说明新增的自动化测试案例是有效的,反之,则新增的自动化测试案例是无效的。
本实施例通过对新增的一条或多条自动化测试案例对应的第四新增运行函数的数量进行分析,从而分析该新增的自动化测试案例的有效率,如果有效率达到预期的有效率,则可以保留新增的自动化测试案例,如果未达到预期的有效率,则需要对新增的自动化测试案例进行改进,在计算得到准确、客观的覆盖率的同时,还能评估新增的自动化测试案例的有效率,以使得测试操作简便快捷,提高测试效率。
在一实施例中,本发明提供一种基于自动化测试的覆盖率处理装置,该装置与上述实施例中基于自动化测试的覆盖率处理方法一一对应。如图5所示,该基于自动化测试的覆盖率处理装置包括:
开启模块101,用于接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;
录制模块102,用于在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;
终止模块103,用于接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;
去重运算模块104,用于对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;
处理模块105,用于获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。
基于自动化测试的覆盖率处理装置的具体限定可以参见上文中对于基于自动化测试的覆盖率处理方法的限定,在此不再赘述。上述基于自动化测试的覆盖率处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述计算机设备可以是PC(Personal Computer,个人电脑),或者是智能手机、平板电脑、计算机、也可以是单个网络服务器、多个网络服务器组成的服务器组或者基于云计算的由大量主机或者网络服务器构成的云,其中云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
如图6所示,所述计算机设备可包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,存储器11存储有可在处理器12上运行的计算机程序。需要指出的是,图6仅示出了具有组件11-13的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
其中,存储器11可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。本实施例中,存储器11的可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如存储本发明一实施例中的计算机程序的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片,用于运行所述存储器11中存储的程序代码或者处理数据,例如运行计算机程序等。
所述网络接口13可包括标准的无线网络接口、有线网络接口,该网络接口13通常用于在所述计算机设备与其他电子设备之间建立通信连接。
所述计算机程序存储在存储器11中,包括至少一个存储在存储器11中的计算机可读指令,该至少一个计算机可读指令可被处理器12执行,以实现本申请各实施例的方法,包括:
接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;
其中,自动化测试案例为功能测试案例,一次测试包括测试多个功能测试案例。
本实施例中,接收终端发送的执行指令,执行案例的自动化测试的同时,启动用于录制被测程序代码中的函数的JavaAgent代理程序,此外,该JavaAgent代理程序还基于预定的通信协议开启一个监听端口,用于监听针对自动化测试案例进行测试的相关指令,例如结束指令。预定的通信协议例如为websocket通信协议,当然,也可以是其他的通信协议。
在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;
其中,对自动化测试案例进行测试,在启动JavaAgent代理程序后,JavaAgent代理程序开启录制功能,记录每一条自动化测试案例的唯一标识码、自动化测试案例的名称,还可以进一步记录录制的开始时间及结束时间,以用于区分测试执行的设备及后续的更新维护等。根据所录制的内容生成关联表,如上表1所示。
对于每一条自动化测试案例,在执行测试时,会有对应的被测程序运行,自动化测试案例与对应的被测程序存在关联关系。JavaAgent代理程序录制与这些自动化测试案例关联的被测程序代码中每一个被触发的函数,包括函数的名称、参数等,例如,函数“com.pingan.common.A.fun_1”,其中“com.pingan.common.A”为函数的全路径,“fun”为函数名称,“_1”为参数个数,如上表2所示。
接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;
对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;
进一步地,对所录制的函数进行去重运算处理得到实际运行函数的步骤,具体包括:
获取所录制函数的函数名称及参数个数;
对于函数名称及参数个数均相同的两个或两个以上的函数进行剔除处理,保留一个函数作为所述实际运行函数。
其中,在测试完成时,通过上述开启的监听端口接收终端发送的结束指令,在接收该结束指令时,终止JavaAgent代理程序的录制操作。然后,针对每一条自动化测试案例,对于录制的函数进行去重处理,函数名称相同、且参数个数相同的函数为重复的函数,需要进行剔除处理;函数名称相同但参数个数不相同的函数为不同的函数,不需要进行剔除处理。本实施例将函数名称相同、且参数个数相同的两个或两个以上的函数进行剔除处理,只保留一个函数。去重处理的方法在代码上例如为:df2=df1.drop_duplicates(['fun_name'],keep='first',inplace=False),其中,df1是录制得到的所有函数的列表,通过去重运算后得到df2列表。这样,每一条自动化测试案例关联的被测程序代码中的所有函数中,去重处理后的函数为均不相同的函数。
对去重处理后的实际运行函数进行统计,得到各自动化测试案例关联的被测程序代码中对应的实际运行函数的数量。将各自动化测试案例关联的被测程序代码中对应的实际运行函数的数量存储到数据库中。
获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。
其中,可以从数据库中获取预存的被测程序代码中对应的函数的总数,然后计算被测程序的函数覆盖率R=(实际运行函数的数量/总数)*100%。
进一步地,获取预存的所述被测程序代码中的函数的总数的步骤之前,还包括:
扫描预存的所述被测程序的源代码,记录所述源代码中所有的函数;
对所记录的函数进行去重运算处理得到源代码函数,统计所述源代码函数的总数,关联存储所述总数及所述被测程序。
本实施例中,通过扫描并解析预存在代码托管平台的各自动化测试案例对应的被测程序的源代码,得到自动化测试案例对应的被测程序的源代码中所有的函数,包括函数名称、函数参数等,记录被测程序的源代码中所有的函数。
本实施例中,去重运算处理与上述实施例的去重运算处理相同,针对自动化测试案例对应的被测程序,将函数名称相同、且参数个数相同的两个或两个以上的函数,只保留其中一个函数。这样,被测程序的源代码中对应的所有函数中,去重处理后的函数为均不相同的函数。
统计去重处理后的函数的数量,得到被测程序的源代码中对应的函数的总数。将源代码中函数的总数及被测程序关联存储到数据库中,以便后续获取被测程序的源代码中函数的总数。
进一步地,该方法还包括:
对于新增的一条自动化测试案例,执行所述步骤S1至步骤S3,以录制新增的自动化测试案例对应的被测程序代码中的函数;
对所录制的函数进行去重运算处理得到第一新增运行函数;
将所述第一新增运行函数与所述源代码函数进行比对,在所述第一新增运行函数中将与所述源代码函数中的函数相同的函数剔除,得到第二新增运行函数,统计所述第二新增运行函数的数量;
基于所述第二新增运行函数的数量分析所新增的自动化测试案例的有效性。
本实施例通过单独对新增的一条自动化测试案例对应的第二新增运行函数的数量进行分析,从而分析该新增的自动化测试案例的有效性,如果有效则可以保留该新增的自动化测试案例,如果无效,那么可以去掉该新增的自动化测试案例,以去除测试的不必要部分,在计算得到准确、客观的覆盖率的同时,还能评估新增的自动化测试案例的有效性,以使得测试操作简便快捷,提高测试效率。
进一步地,该方法还包括:
对于新增的一条或多条自动化测试案例,执行所述步骤S1至步骤S3,以录制新增的自动化测试案例对应的被测程序代码中的函数;
对所录制的函数进行去重运算处理得到第三新增运行函数;
将所述第三新增运行函数与所述源代码函数进行比对,在所述第三新增运行函数中将与所述源代码函数中的函数相同的函数剔除,得到第四新增运行函数,统计所述第四新增运行函数的数量;
基于所述总数及所述第四新增运行函数的数量计算新增的自动化测试案例的有效率。
本实施例通过对新增的一条或多条自动化测试案例对应的第四新增运行函数的数量进行分析,从而分析该新增的自动化测试案例的有效率,如果有效率达到预期的有效率,则可以保留新增的自动化测试案例,如果未达到预期的有效率,则需要对新增的自动化测试案例进行改进,在计算得到准确、客观的覆盖率的同时,还能评估新增的自动化测试案例的有效率,以使得测试操作简便快捷,提高测试效率。
在一个实施例中,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中基于自动化测试的覆盖率处理方法的步骤,例如图2所示的步骤S1至步骤S5。或者,计算机程序被处理器执行时实现上述实施例中基于自动化测试的覆盖率处理装置的各模块/单元的功能,例如图5所示模块101至模块105的功能。为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于自动化测试的覆盖率处理方法,其特征在于,包括:
S1,接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;
S2,在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;
S3,接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;
S4,对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;
S5,获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。
2.根据权利要求1所述的基于自动化测试的覆盖率处理方法,其特征在于,所述对所录制的函数进行去重运算处理得到实际运行函数的步骤,具体包括:
获取所录制函数的函数名称及参数个数;
对于函数名称及参数个数均相同的两个或两个以上的函数进行剔除处理,保留一个函数作为所述实际运行函数。
3.根据权利要求1所述的基于自动化测试的覆盖率处理方法,其特征在于,所述获取预存的所述被测程序代码中的函数的总数的步骤之前,还包括:
扫描预存的所述被测程序的源代码,记录所述源代码中所有的函数;
对所记录的函数进行去重运算处理得到源代码函数,统计所述源代码函数的总数,关联存储所述总数及所述被测程序。
4.根据权利要求1至3任一项所述的基于自动化测试的覆盖率处理方法,其特征在于,该方法还包括:
对于新增的一条自动化测试案例,执行所述步骤S1至步骤S3,以录制新增的自动化测试案例对应的被测程序代码中的函数;
对所录制的函数进行去重运算处理得到第一新增运行函数;
将所述第一新增运行函数与所述源代码函数进行比对,在所述第一新增运行函数中将与所述源代码函数中的函数相同的函数剔除,得到第二新增运行函数,统计所述第二新增运行函数的数量;
基于所述第二新增运行函数的数量分析所新增的自动化测试案例的有效性。
5.根据权利要求1至3任一项所述的基于自动化测试的覆盖率处理方法,其特征在于,该方法还包括:
对于新增的一条或多条自动化测试案例,执行所述步骤S1至步骤S3,以录制新增的自动化测试案例对应的被测程序代码中的函数;
对所录制的函数进行去重运算处理得到第三新增运行函数;
将所述第三新增运行函数与所述源代码函数进行比对,在所述第三新增运行函数中将与所述源代码函数中的函数相同的函数剔除,得到第四新增运行函数,统计所述第四新增运行函数的数量;
基于所述总数及所述第四新增运行函数的数量计算新增的自动化测试案例的有效率。
6.根据权利要求1所述的基于自动化测试的覆盖率处理方法,其特征在于,所述根据所述执行指令开启JavaAgent代理程序的步骤之后,还包括:
令所述JavaAgent代理程序基于预定的通信协议开启一个监听端口,所述监听端口用于监听针对所述自动化测试案例进行测试的相关指令。
7.一种基于自动化测试的覆盖率处理装置,其特征在于,包括:
开启模块,用于接收自动化测试案例的执行指令,根据所述执行指令开启JavaAgent代理程序;
录制模块,用于在执行测试的过程中,通过所述JavaAgent代理程序录制被所述自动化测试案例测试的被测程序代码中的函数;
终止模块,用于接收所述自动化测试案例的结束指令,根据所述结束指令终止所述JavaAgent代理程序的录制操作;
去重运算模块,用于对所录制的函数进行去重运算处理得到实际运行函数,统计所述实际运行函数的数量;
处理模块,用于获取预存的所述被测程序代码中的函数的总数,基于所述总数及所述实际运行函数的数量计算所述被测程序的覆盖率。
8.根据权利要求7所述的基于自动化测试的覆盖率处理装置,其特征在于,所述去重运算模块具体用于获取所录制函数的函数名称及参数个数;对于函数名称及参数个数均相同的两个或两个以上的函数进行剔除处理,保留一个函数作为所述实际运行函数。
9.一种计算机设备,所述计算机设备包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的基于自动化测试的覆盖率处理方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的基于自动化测试的覆盖率处理方法的步骤。
CN202011184318.1A 2020-10-29 2020-10-29 基于自动化测试的覆盖率处理方法、装置、设备及介质 Active CN112214414B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011184318.1A CN112214414B (zh) 2020-10-29 2020-10-29 基于自动化测试的覆盖率处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011184318.1A CN112214414B (zh) 2020-10-29 2020-10-29 基于自动化测试的覆盖率处理方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN112214414A true CN112214414A (zh) 2021-01-12
CN112214414B CN112214414B (zh) 2024-05-17

Family

ID=74057578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011184318.1A Active CN112214414B (zh) 2020-10-29 2020-10-29 基于自动化测试的覆盖率处理方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN112214414B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749094A (zh) * 2021-01-14 2021-05-04 中国工商银行股份有限公司 测试案例生成方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041288A1 (en) * 2001-08-10 2003-02-27 Adam Kolawa Method and system for dynamically invoking and/or checking conditions of a computer test program
CN101561777A (zh) * 2008-04-14 2009-10-21 中兴通讯股份有限公司 一种实现覆盖率测试的系统和方法
US20130311976A1 (en) * 2012-05-17 2013-11-21 Cognizant Technology Solutions India Pvt. Ltd. Method and system for generating and processing black box test cases
CN103699476A (zh) * 2012-09-27 2014-04-02 腾讯科技(深圳)有限公司 覆盖率测试方法及系统
CN105608000A (zh) * 2015-12-16 2016-05-25 北京奇虎科技有限公司 获取代码覆盖率数据的方法及装置
US20160259712A1 (en) * 2014-03-28 2016-09-08 Oracle International, Corporation System and method for determination of code coverage for software applications in a network environment
US20160328314A1 (en) * 2015-05-06 2016-11-10 Hcl Technologies Limited System and method for providing code coverage
CN111124915A (zh) * 2019-12-20 2020-05-08 广州品唯软件有限公司 覆盖率检测方法、覆盖率检测装置及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030041288A1 (en) * 2001-08-10 2003-02-27 Adam Kolawa Method and system for dynamically invoking and/or checking conditions of a computer test program
CN101561777A (zh) * 2008-04-14 2009-10-21 中兴通讯股份有限公司 一种实现覆盖率测试的系统和方法
US20130311976A1 (en) * 2012-05-17 2013-11-21 Cognizant Technology Solutions India Pvt. Ltd. Method and system for generating and processing black box test cases
CN103699476A (zh) * 2012-09-27 2014-04-02 腾讯科技(深圳)有限公司 覆盖率测试方法及系统
US20160259712A1 (en) * 2014-03-28 2016-09-08 Oracle International, Corporation System and method for determination of code coverage for software applications in a network environment
US20160328314A1 (en) * 2015-05-06 2016-11-10 Hcl Technologies Limited System and method for providing code coverage
CN105608000A (zh) * 2015-12-16 2016-05-25 北京奇虎科技有限公司 获取代码覆盖率数据的方法及装置
CN111124915A (zh) * 2019-12-20 2020-05-08 广州品唯软件有限公司 覆盖率检测方法、覆盖率检测装置及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749094A (zh) * 2021-01-14 2021-05-04 中国工商银行股份有限公司 测试案例生成方法及装置

Also Published As

Publication number Publication date
CN112214414B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN111221743B (zh) 自动化测试方法及系统
CN110532168B (zh) 全链路接口压测方法、装置、计算机设备及存储介质
CN108427613B (zh) 异常接口定位方法、装置、计算机设备和存储介质
CN110221948B (zh) 测试脚本生成方法、装置、计算机装置及存储介质
CN112416794A (zh) 代码覆盖率的处理方法、装置、设备及存储介质
CN111522728A (zh) 自动化测试用例的生成方法、电子设备及可读存储介质
CN107223257B (zh) 测试方法、测试服务器及系统
CN113282513B (zh) 接口测试案例的生成方法、装置、计算机设备及存储介质
CN112363937B (zh) 差异覆盖率测试方法、装置、计算机设备和存储介质
CN112000582A (zh) 服务端自动化测试预警方法、装置、设备及存储介质
CN109067605B (zh) 一种存储子系统故障诊断方法、装置、终端及存储介质
CN111444101A (zh) 自动创建产品测试缺陷的方法及装置
CN112214414A (zh) 基于自动化测试的覆盖率处理方法、装置、设备及介质
CN113220597B (zh) 测试方法、测试装置、电子设备及存储介质
CN111124828B (zh) 一种数据处理方法、装置、设备及存储介质
CN112181822A (zh) 一种测试方法和应用程序的启动耗时测试方法
CN112416648A (zh) 数据校验方法及装置
CN117131545A (zh) 数据处理方法及装置、存储介质、终端
CN108628744B (zh) 故障诊断方法、装置及电子设备
CN116738091A (zh) 页面监控方法、装置、电子设备及存储介质
CN110543394A (zh) 服务器sensor信息一致性测试方法、系统、终端及存储介质
CN115576831A (zh) 一种测试案例推荐方法、装置、设备及存储介质
CN113282496A (zh) 接口自动测试方法、装置、设备及存储介质
CN112363944A (zh) 一种用于多环境接口返回值对比的方法及设备
CN112346994A (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