CN109992511A - 获取代码测试覆盖率的装置及方法 - Google Patents

获取代码测试覆盖率的装置及方法 Download PDF

Info

Publication number
CN109992511A
CN109992511A CN201910226405.XA CN201910226405A CN109992511A CN 109992511 A CN109992511 A CN 109992511A CN 201910226405 A CN201910226405 A CN 201910226405A CN 109992511 A CN109992511 A CN 109992511A
Authority
CN
China
Prior art keywords
test
thread
context
code
coverage rate
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
CN201910226405.XA
Other languages
English (en)
Other versions
CN109992511B (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.)
Koubei Shanghai Information Technology Co Ltd
Original Assignee
Koubei Shanghai 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 Koubei Shanghai Information Technology Co Ltd filed Critical Koubei Shanghai Information Technology Co Ltd
Priority to CN201910226405.XA priority Critical patent/CN109992511B/zh
Publication of CN109992511A publication Critical patent/CN109992511A/zh
Application granted granted Critical
Publication of CN109992511B publication Critical patent/CN109992511B/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

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

获取代码测试覆盖率的装置及方法
技术领域
本发明涉及软件领域,具体涉及一种获取代码测试覆盖率的装置及方法。
背景技术
在代码正式上线前,需要对代码进行测试。测试包括如正常功能测试、异常功能测试、压力测试等等多个方面的测试。代码测试覆盖率是对测试的一种度量。通过代码测试覆盖率,可以了解对代码测试是否充分,是否已经测试到所有代码。
现有技术中,为获取代码测试覆盖率,一般采用在代码中添加测试代码。测试代码用于获取代码是否被测试到。如确定待测试代码的测试点,在该测试点位置添加测试代码;或者,编写监控测试的测试代码等。这样处理需要增加额外的测试代码,且无法通用多个代码,工作量较大。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的获取代码测试覆盖率的装置及方法。
根据本发明的一个方面,提供了一种获取代码测试覆盖率的装置,其包括:
标记模块,执行于测试线程启动处,适于获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理;
判断模块,执行于测试线程中各方法结束处,适于获取测试线程的上下文内容,判断上下文内容中当前执行的方法名称是否已进行标记处理;
获取模块,适于若判断模块判断出上下文内容中当前执行的方法名称已进行标记处理,则确定测试完成,获取测试线程的上下文内容中记载的测试覆盖数据;
确定模块,适于根据测试覆盖数据确定测试线程的代码测试覆盖率。
可选地,标记模块进一步适于:
获取启动测试时测试线程的上下文内容,其中,上下文内容中包含当前执行的方法名称;
在上下文内容中对当前执行的入口代码的方法名称进行标记处理。
可选地,测试线程的上下文内容还包含测试过程中利用测试工具记载代码被执行的测试覆盖数据;测试工具为jacoco。
可选地,测试线程为多个测试线程,每个测试线程的上下文内容还包含业务信息;
获取模块进一步适于:获取相同业务信息的多个测试线程的上下文内容中记载的测试覆盖数据;
确定模块进一步适于:对多个测试线程的测试覆盖数据进行整合,确定业务对应的测试线程的代码测试覆盖率。
根据本发明的另一方面,提供了一种获取代码测试覆盖率的方法,其包括:
在测试线程启动时,获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理;
在测试线程中各方法结束处,均获取测试线程的上下文内容,判断上下文内容中当前执行的方法名称是否已进行标记处理;
若是,则确定测试完成,获取测试线程的上下文内容中记载的测试覆盖数据;
根据测试覆盖数据确定测试线程的代码测试覆盖率。
可选地,在测试线程启动时,获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理进一步包括:
在测试线程启动时,获取启动测试时测试线程的上下文内容,其中,上下文内容中包含当前执行的方法名称;
在上下文内容中对当前执行的入口代码的方法名称进行标记处理。
可选地,测试线程的上下文内容还包含测试过程中利用测试工具记载代码被执行的测试覆盖数据;测试工具为jacoco。
可选地,测试线程为多个测试线程,每个测试线程的上下文内容还包含业务信息;
获取测试线程的上下文内容中记载的测试覆盖数据进一步包括:获取相同业务信息的多个测试线程的上下文内容中记载的测试覆盖数据;
根据测试覆盖数据确定测试线程的代码测试覆盖率进一步包括:对多个测试线程的测试覆盖数据进行整合,确定业务对应的测试线程的代码测试覆盖率。
根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述获取代码测试覆盖率的方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述获取代码测试覆盖率的方法对应的操作。
根据本发明提供的获取代码测试覆盖率的装置及方法,装置包括:标记模块,执行于测试线程启动处,适于获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理;判断模块,执行于测试线程中各方法结束处,适于获取测试线程的上下文内容,判断上下文内容中当前执行的方法名称是否已进行标记处理;获取模块,适于若判断模块判断出上下文内容中当前执行的方法名称已进行标记处理,则确定测试完成,获取测试线程的上下文内容中记载的测试覆盖数据;确定模块,适于根据测试覆盖数据确定测试线程的代码测试覆盖率。利用本发明所提供的装置,在测试线程的执行过程中,通过对代码入口方法名称的标记,在确定测试线程执行完成后,自动获取到代码在测试过程中的测试覆盖数据,从而实现无需在代码中增加额外测试代码,即可获取到代码测试覆盖率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的获取代码测试覆盖率的装置的功能框图;
图2示出了根据本发明一个实施例的获取代码测试覆盖率的方法的流程图;
图3示出了根据本发明一个实施例的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的获取代码测试覆盖率的装置的功能框图。如图1所示,获取代码测试覆盖率的装置包括以下模块:
标记模块110,执行于测试线程启动处,适于获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理。
本实施例从业务实际出发,针对需要测试的业务启动测试线程。标记模块110执行于测试线程启动处,如利用测试工具进行测试时,启动测试线程同时测试工具启动,在测试工具中通过如字节码增强等技术增强应用类得到标记模块110。在测试工具启动时,即测试线程启动处,执行标记模块110,获取到测试线程启动入口的上下文内容中包含的方法名称。上下文内容中包含的是当前执行的方法名称。当测试线程启动时,上下文内容中当前执行的方法名称即测试线程启动入口代码的方法名称,在上下文内容中对当前执行的入口代码的方法名称进行标记处理。标记处理可以采用在方法名称后面添加入口记号、记录方法名称为入口方法名称等方式。
对于一个测试线程,其在整个执行过程中,涉及调用一个或多个的方法,当测试线程调用一个方法时,测试线程直接调用该方法,入口代码的方法名称和测试线程执行完成的方法名称都是该方法名称;当测试线程调用多个方法时,如测试线程需要执行的方法包括方法a、b、c等,当测试线程从方法a启动,不论是测试线程调用方法a后,方法a调用方法b,方法b调用方法c,或者,方法a调用方法b和c等,测试线程入口代码的方法名称和测试线程执行完成的方法名称都是方法a的方法名称,即在测试线程从方法a启动,执行各方法后,结束时测试线程从方法a结束。基于以上前提,本实施例在上下文内容中对当前执行的入口代码的方法名称进行标记处理,方便后续根据标记处理来判断测试线程是否执行完成。
判断模块120,执行于测试线程中各方法结束处,适于获取测试线程的上下文内容,判断上下文内容中当前执行的方法名称是否已进行标记处理。
判断模块120也是在测试工具中通过如字节码增强等技术增强应用类得到,其执行于测试线程中各个方法的结束处。如整个测试线程会执行方法a、b、c等,在每个方法结束时,都会执行判断模块120。判断模块120在测试线程各方法结束处执行时,会获取测试线程的上下文内容。上下文内容中包含当前执行的方法名称,判断上下文内容中当前执行的方法名称是否已进行标记处理,若已进行进行标记处理,即当前执行的方法名称为测试线程启动入口代码的方法名称,执行获取模块130。若未进行标记处理,即当前执行的方法名称是测试线程执行过程中的方法名称,需要继续执行测试线程,并在测试线程中各个方法的结束处执行判断模块120,直至判断模块120判断上下文内容中当前执行的方法名称已进行标记处理。
需要注意的是,测试线程中各方法结束处包括方法正常执行结束和方法异常执行结束。当方法正常执行结束,执行判断模块120,方法异常执行结束时,也会执行判断模块120。
获取模块130,适于若判断模块120判断出上下文内容中当前执行的方法名称已进行标记处理,则确定测试完成,获取测试线程的上下文内容中记载的测试覆盖数据。
当判断模块120判断出上下文内容中当前执行的方法名称已进行标记处理,即当前执行的方法名称为测试线程启动入口代码的方法名称,可以确定测试线程测试完成。测试线程的上下文内容中还包含了测试线程在测试过程中利用测试工具记载各代码被执行的测试覆盖数据。如利用jacoco测试工具在测试线程执行过程中,当一行代码被执行调用,jacoco会在测试线程上下文内容中记录该代码被测试覆盖。获取模块130可以从测试线程的上下文内容中获取到测试工具记载的测试覆盖数据。
确定模块140,适于根据测试覆盖数据确定测试线程的代码测试覆盖率。
确定模块140根据获取模块130获取到的测试覆盖数据进行计算、统计整理等,可以确定测试线程所涉及到的调用的各个方法的代码测试覆盖率。
进一步,若测试线程为多个测试线程时,即一个测试业务会涉及多个测试线程,测试线程间异步调用。每个测试线程的上下文内容都包含业务信息。业务信息可以为业务ID。标记模块110在业务测试的每个测试线程启动时执行,获取各个测试线程的上下文内容中包含的方法名称,并对各个测试线程代码入口的方法名称进行标记处理,方便后续判断模块120针对每个测试线程判断测试进程是否执行完成。获取模块130对应的获取各个测试线程的上下文内容中记载的测试覆盖数据。在获取模块130获取测试覆盖数据时,可以基于业务信息,获取相同业务信息的多个测试线程的上下文内容中记载的测试覆盖数据。确定模块140对多个测试线程的测试覆盖数据进行整合,确定业务对应的多个测试线程的代码测试覆盖率,得到测试业务执行时,对代码产生的代码测试覆盖率。
根据本发明提供的获取代码测试覆盖率的装置,标记模块,执行于测试线程启动处,适于获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理;判断模块,执行于测试线程中各方法结束处,适于获取测试线程的上下文内容,判断上下文内容中当前执行的方法名称是否已进行标记处理;获取模块,适于若判断模块判断出上下文内容中当前执行的方法名称已进行标记处理,则确定测试完成,获取测试线程的上下文内容中记载的测试覆盖数据;确定模块,适于根据测试覆盖数据确定测试线程的代码测试覆盖率。利用本发明所提供的装置,在测试线程的执行过程中,通过对代码入口方法名称的标记,在确定测试线程执行完成后,自动获取到代码在测试过程中的测试覆盖数据,从而实现无需在代码中增加额外测试代码,即可获取到代码测试覆盖率。
图2示出了根据本发明一个实施例的获取代码测试覆盖率的方法的流程图。如图2所示,获取代码测试覆盖率的方法具体包括如下步骤:
步骤S201,在测试线程启动时,获取测试线程上下文内容中包含的方法名称,并对方法名称进行标记处理。
本实施例从业务实际出发,针对需要测试的业务启动测试线程。在测试线程启动时,如利用测试工具进行测试时,启动测试线程同时测试工具启动,在测试工具中通过如字节码增强等技术增强应用类实现在测试工具启动时,即测试线程启动时,获取到测试线程启动入口的上下文内容中包含的方法名称。上下文内容中包含的是当前执行的方法名称。当测试线程启动时,上下文内容中当前执行的方法名称即测试线程启动入口代码的方法名称,在上下文内容中对当前执行的入口代码的方法名称进行标记处理。标记处理可以采用在方法名称后面添加入口记号、记录方法名称为入口方法名称等方式。
对于一个测试线程,其在整个执行过程中,涉及调用一个或多个的方法,当测试线程调用一个方法时,测试线程直接调用该方法,入口代码的方法名称和测试线程执行完成的方法名称都是该方法名称;当测试线程调用多个方法时,如测试线程需要执行的方法包括方法a、b、c等,当测试线程从方法a启动,不论是测试线程调用方法a后,方法a调用方法b,方法b调用方法c,或者,方法a调用方法b和c等,测试线程入口代码的方法名称和测试线程执行完成的方法名称都是方法a的方法名称,即在测试线程从方法a启动,执行各方法后,结束时测试线程从方法a结束。基于以上前提,本实施例在上下文内容中对当前执行的入口代码的方法名称进行标记处理,方便后续根据标记处理来判断测试线程是否执行完成。
步骤S202,在测试线程中各方法结束处,均获取测试线程的上下文内容,判断上下文内容中当前执行的方法名称是否已进行标记处理。
在测试工具中通过如字节码增强等技术增强应用类可以在测试线程中各个方法的结束处获取测试线程的上下文内容。如整个测试线程会执行方法a、b、c等,在每个方法结束时,都会获取测试线程的上下文内容。上下文内容中包含当前执行的方法名称,判断上下文内容中当前执行的方法名称是否已进行标记处理,若已进行进行标记处理,即当前执行的方法名称为测试线程启动入口代码的方法名称,执行步骤S203。若未进行标记处理,即当前执行的方法名称是测试线程执行过程中的方法名称,需要继续执行测试线程,并在测试线程中各个方法的结束处执行该步骤,直至判断上下文内容中当前执行的方法名称已进行标记处理。
需要注意的是,测试线程中各方法结束处包括方法正常执行结束和方法异常执行结束。当方法正常执行结束,执行该步骤,方法异常执行结束时,也会执行该步骤。
步骤S203,确定测试完成,获取测试线程的上下文内容中记载的测试覆盖数据。
当判断出上下文内容中当前执行的方法名称已进行标记处理,即当前执行的方法名称为测试线程启动入口代码的方法名称,可以确定测试线程测试完成。测试线程的上下文内容中还包含了测试线程在测试过程中利用测试工具记载各代码被执行的测试覆盖数据。如利用jacoco测试工具在测试线程执行过程中,当一行代码被执行调用,jacoco会在测试线程上下文内容中记录该代码被测试覆盖。此时可以从测试线程的上下文内容中获取到测试工具记载的测试覆盖数据。
步骤S204,根据测试覆盖数据确定测试线程的代码测试覆盖率。
根据获取到的测试覆盖数据进行计算、统计整理等,可以确定测试线程所涉及到的调用的各个方法的代码测试覆盖率。
进一步,若测试线程为多个测试线程时,即一个测试业务会涉及多个测试线程,测试线程间异步调用。每个测试线程的上下文内容都包含业务信息。业务信息可以为业务ID。步骤S201在业务测试的每个测试线程启动时均执行,获取各个测试线程的上下文内容中包含的方法名称,并对各个测试线程代码入口的方法名称进行标记处理,方便后续步骤S202针对每个测试线程判断测试进程是否执行完成。步骤S203对应的获取各个测试线程的上下文内容中记载的测试覆盖数据。在步骤S203获取测试覆盖数据时,可以基于业务信息,获取相同业务信息的多个测试线程的上下文内容中记载的测试覆盖数据。步骤S204对多个测试线程的测试覆盖数据进行整合,确定业务对应的多个测试线程的代码测试覆盖率,得到测试业务执行时,对代码产生的代码测试覆盖率。
根据本发明提供的获取代码测试覆盖率的方法,在测试线程的执行过程中,通过对代码入口方法名称的标记,在确定测试线程执行完成后,自动获取到代码在测试过程中的测试覆盖数据,从而实现无需在代码中增加额外测试代码,即可获取到代码测试覆盖率。
本申请还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的获取代码测试覆盖率的方法。
图3示出了根据本发明一个实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图3所示,该电子设备可以包括:处理器(processor)302、通信接口(Communications Interface)304、存储器(memory)306、以及通信总线308。
其中:
处理器302、通信接口304、以及存储器306通过通信总线308完成相互间的通信。
通信接口304,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器302,用于执行程序310,具体可以执行上述获取代码测试覆盖率的方法实施例中的相关步骤。
具体地,程序310可以包括程序代码,该程序代码包括计算机操作指令。
处理器302可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器306,用于存放程序310。存储器306可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序310具体可以用于使得处理器302执行上述任意方法实施例中的获取代码测试覆盖率的方法。程序310中各步骤的具体实现可以参见上述获取代码测试覆盖率的实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的获取代码测试覆盖率的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种获取代码测试覆盖率的装置,其包括:
标记模块,执行于测试线程启动处,适于获取测试线程上下文内容中包含的方法名称,并对所述方法名称进行标记处理;
判断模块,执行于测试线程中各方法结束处,适于获取测试线程的上下文内容,判断所述上下文内容中当前执行的方法名称是否已进行标记处理;
获取模块,适于若所述判断模块判断出所述上下文内容中当前执行的方法名称已进行标记处理,则确定测试完成,获取所述测试线程的上下文内容中记载的测试覆盖数据;
确定模块,适于根据所述测试覆盖数据确定所述测试线程的代码测试覆盖率。
2.根据权利要求1所述的装置,其中,所述标记模块进一步适于:
获取启动测试时测试线程的上下文内容,其中,所述上下文内容中包含当前执行的方法名称;
在所述上下文内容中对当前执行的入口代码的方法名称进行标记处理。
3.根据权利要求1所述的装置,其中,所述测试线程的上下文内容还包含测试过程中利用测试工具记载代码被执行的测试覆盖数据;所述测试工具为jacoco。
4.根据权利要求1-3中任一项所述的装置,其中,所述测试线程为多个测试线程,每个测试线程的上下文内容还包含业务信息;
所述获取模块进一步适于:获取相同业务信息的多个测试线程的上下文内容中记载的测试覆盖数据;
所述确定模块进一步适于:对多个测试线程的测试覆盖数据进行整合,确定业务对应的测试线程的代码测试覆盖率。
5.一种获取代码测试覆盖率的方法,其包括:
在测试线程启动时,获取测试线程上下文内容中包含的方法名称,并对所述方法名称进行标记处理;
在测试线程中各方法结束处,均获取测试线程的上下文内容,判断所述上下文内容中当前执行的方法名称是否已进行标记处理;
若是,则确定测试完成,获取所述测试线程的上下文内容中记载的测试覆盖数据;
根据所述测试覆盖数据确定所述测试线程的代码测试覆盖率。
6.根据权利要求5所述的方法,其中,所述在测试线程启动时,获取测试线程上下文内容中包含的方法名称,并对所述方法名称进行标记处理进一步包括:
在测试线程启动时,获取启动测试时测试线程的上下文内容,其中,所述上下文内容中包含当前执行的方法名称;
在所述上下文内容中对当前执行的入口代码的方法名称进行标记处理。
7.根据权利要求5所述的方法,其中,所述测试线程的上下文内容还包含测试过程中利用测试工具记载代码被执行的测试覆盖数据;所述测试工具为jacoco。
8.根据权利要求5-7中任一项所述的方法,其中,所述测试线程为多个测试线程,每个测试线程的上下文内容还包含业务信息;
所述获取所述测试线程的上下文内容中记载的测试覆盖数据进一步包括:获取相同业务信息的多个测试线程的上下文内容中记载的测试覆盖数据;
所述根据所述测试覆盖数据确定所述测试线程的代码测试覆盖率进一步包括:对多个测试线程的测试覆盖数据进行整合,确定业务对应的测试线程的代码测试覆盖率。
9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求5-8中任一项所述的获取代码测试覆盖率的方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求5-8中任一项所述的获取代码测试覆盖率的方法对应的操作。
CN201910226405.XA 2019-03-25 2019-03-25 获取代码测试覆盖率的装置及方法 Active CN109992511B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910226405.XA CN109992511B (zh) 2019-03-25 2019-03-25 获取代码测试覆盖率的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910226405.XA CN109992511B (zh) 2019-03-25 2019-03-25 获取代码测试覆盖率的装置及方法

Publications (2)

Publication Number Publication Date
CN109992511A true CN109992511A (zh) 2019-07-09
CN109992511B CN109992511B (zh) 2022-11-22

Family

ID=67131410

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910226405.XA Active CN109992511B (zh) 2019-03-25 2019-03-25 获取代码测试覆盖率的装置及方法

Country Status (1)

Country Link
CN (1) CN109992511B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111061639A (zh) * 2019-12-18 2020-04-24 中信百信银行股份有限公司 一种高效多系统测试代码覆盖率的管理方法
CN113791986A (zh) * 2021-11-18 2021-12-14 云账户技术(天津)有限公司 一种代码覆盖率的统计方法及装置
CN114996152A (zh) * 2022-06-17 2022-09-02 抖音视界(北京)有限公司 一种单元测试方法、装置、设备及介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146340A1 (en) * 2008-12-09 2010-06-10 International Business Machines Corporation Analyzing Coverage of Code Changes
CN102819488A (zh) * 2012-06-29 2012-12-12 用友软件股份有限公司 测试处理装置和测试处理方法
US20130117542A1 (en) * 2011-11-04 2013-05-09 International Business Machines Corporation Code coverage framework
CN103365780A (zh) * 2013-07-22 2013-10-23 百度在线网络技术(北京)有限公司 异常测试覆盖率计算方法及装置
CN104199773A (zh) * 2014-09-03 2014-12-10 腾讯科技(深圳)有限公司 获取代码覆盖信息的方法及装置
CN105468505A (zh) * 2014-08-12 2016-04-06 腾讯科技(深圳)有限公司 覆盖率测试方法及覆盖率测试装置
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
CN105608000A (zh) * 2015-12-16 2016-05-25 北京奇虎科技有限公司 获取代码覆盖率数据的方法及装置
CN106227671A (zh) * 2016-08-05 2016-12-14 网易(杭州)网络有限公司 程序运行性能分析方法及装置
CN106502901A (zh) * 2016-10-24 2017-03-15 网易(杭州)网络有限公司 覆盖率检测方法、装置和设备
CN108170600A (zh) * 2017-12-27 2018-06-15 广州品唯软件有限公司 前端代码测试的覆盖率统计方法、装置及系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146340A1 (en) * 2008-12-09 2010-06-10 International Business Machines Corporation Analyzing Coverage of Code Changes
US20130117542A1 (en) * 2011-11-04 2013-05-09 International Business Machines Corporation Code coverage framework
CN102819488A (zh) * 2012-06-29 2012-12-12 用友软件股份有限公司 测试处理装置和测试处理方法
CN103365780A (zh) * 2013-07-22 2013-10-23 百度在线网络技术(北京)有限公司 异常测试覆盖率计算方法及装置
CN105468505A (zh) * 2014-08-12 2016-04-06 腾讯科技(深圳)有限公司 覆盖率测试方法及覆盖率测试装置
CN104199773A (zh) * 2014-09-03 2014-12-10 腾讯科技(深圳)有限公司 获取代码覆盖信息的方法及装置
CN105573915A (zh) * 2015-12-16 2016-05-11 北京奇虎科技有限公司 一种基于代码覆盖率的测试方法和装置
CN105608000A (zh) * 2015-12-16 2016-05-25 北京奇虎科技有限公司 获取代码覆盖率数据的方法及装置
CN106227671A (zh) * 2016-08-05 2016-12-14 网易(杭州)网络有限公司 程序运行性能分析方法及装置
CN106502901A (zh) * 2016-10-24 2017-03-15 网易(杭州)网络有限公司 覆盖率检测方法、装置和设备
CN108170600A (zh) * 2017-12-27 2018-06-15 广州品唯软件有限公司 前端代码测试的覆盖率统计方法、装置及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ALBERT TRAN等: "A Hardware-Assisted Tool for Fast, Full Code Coverage Analysis", 《2008 19TH INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING (ISSRE)》 *
姚伟平等: "二进制代码覆盖率评估系统的设计与实现", 《计算机工程与设计》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111061639A (zh) * 2019-12-18 2020-04-24 中信百信银行股份有限公司 一种高效多系统测试代码覆盖率的管理方法
CN111061639B (zh) * 2019-12-18 2023-03-24 中信百信银行股份有限公司 一种高效多系统测试代码覆盖率的管理方法
CN113791986A (zh) * 2021-11-18 2021-12-14 云账户技术(天津)有限公司 一种代码覆盖率的统计方法及装置
CN114996152A (zh) * 2022-06-17 2022-09-02 抖音视界(北京)有限公司 一种单元测试方法、装置、设备及介质

Also Published As

Publication number Publication date
CN109992511B (zh) 2022-11-22

Similar Documents

Publication Publication Date Title
CN109189665B (zh) 数据录制、数据回放和自动测试的方法及装置
CN105468529B (zh) 一种安卓应用ui控件精准遍历方法和装置
CN109992511A (zh) 获取代码测试覆盖率的装置及方法
CN105608000B (zh) 获取代码覆盖率数据的方法及装置
CN105589805B (zh) 一种代码覆盖率报告的生成方法和装置
CN105512015B (zh) 一种安卓目标应用崩溃统计方法和装置
CN109992498B (zh) 测试用例的生成方法及系统、计算机系统
US11036507B2 (en) Processor testing using pairs of counter incrementing and branch instructions
US20150363296A1 (en) Function test apparatus based on unit test cases reusing and function test method thereof
CN105573915B (zh) 一种基于代码覆盖率的测试方法和装置
CN105511977B (zh) 一种车载导航系统测试方法与装置
CN104035863B (zh) 一种浏览器测试方法及装置
CN111756575A (zh) 存储服务器的性能分析方法及装置、电子设备
CN107370740A (zh) 跳转拦截方法和装置
CN105630671B (zh) 代码覆盖率报告的生成方法及装置
CN106059860A (zh) 一种测试网卡的方法和装置
CN109255240A (zh) 一种漏洞处理方法和装置
WO2016015220A1 (en) Executable code abnormality detection
CN108009085B (zh) 渠道包测试方法
CN111198809A (zh) 接口自动化测试方法和装置
CN111026638A (zh) 一种网页自动化测试方法、装置、电子设备和存储介质
CN111221721B (zh) 一种单元测试案例自动化录制和执行方法及装置
CN106326102A (zh) 测试方法和装置
CN107291619A (zh) 内存占用分析方法及装置
CN107688534A (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