CN112346981A - 联调测试覆盖率检测方法及系统 - Google Patents

联调测试覆盖率检测方法及系统 Download PDF

Info

Publication number
CN112346981A
CN112346981A CN202011255496.9A CN202011255496A CN112346981A CN 112346981 A CN112346981 A CN 112346981A CN 202011255496 A CN202011255496 A CN 202011255496A CN 112346981 A CN112346981 A CN 112346981A
Authority
CN
China
Prior art keywords
coverage rate
test
coverage
client
joint debugging
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
CN202011255496.9A
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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202011255496.9A priority Critical patent/CN112346981A/zh
Publication of CN112346981A publication Critical patent/CN112346981A/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/3688Test management for test execution, e.g. scheduling of test suites
    • 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/3692Test management for test results analysis

Abstract

本申请公开了一种联调测试覆盖率检测方法,该方法包括:配置jacococlientservice服务;通过所述jacococlientservice服务定时从客户端获取覆盖率数据;根据所述客户端提供的测试项目信息对所述覆盖率数据进行区分存储;在联调测试结束后,解析所述覆盖率数据并生成覆盖率报告。本申请还公开了另一种联调测试覆盖率检测方法、联调测试覆盖率检测系统、电子装置和计算机可读存储介质。由此,能够实现开发联调测试的代码覆盖率数据收集,有效判断所述覆盖率数据是否符合条件,减少因为自测不充分导致的测试异常。

Description

联调测试覆盖率检测方法及系统
技术领域
本申请涉及测试技术领域,尤其涉及一种联调测试覆盖率检测方法、系统、电子装置及计算机可读存储介质。
背景技术
在项目开发过程中,一个项目在提测之前,需要进行联调和自测,自测通过之后才可以进入提测过程,来保证提测的质量。所述联调测试一般是在测试服务器与多个客户端之间进行。但是,目前无法通过数据来衡量提测质量,存在自测不充分的情况,直接提测会有较多问题导致测试不能正常进行,导致延误测试周期等后果。因此,需要一个定量的指标来衡量自测数据,从而提高提测质量和工作效率。
需要说明的是,上述内容并不用于限制申请保护范围。
发明内容
本申请的主要目的在于提出一种联调测试覆盖率检测方法、系统、电子装置及计算机可读存储介质,旨在解决以上技术问题。
为实现上述目的,本申请实施例提供了一种联调测试覆盖率检测方法,应用于客户端,所述方法包括:
配置联调服务的测试项目信息;
根据服务端提供的IP和端口配置代理参数;
通过所述代理生成所述客户端在联调测试中的代码覆盖率数据;及
定时获取所述覆盖率数据并发送至所述服务端,以供所述服务端根据所述覆盖率数据和所述测试项目信息生成覆盖率报告。
可选地,所述配置联调服务的测试项目信息包括:
通过数据库的方式配置所述测试项目信息,包括测试项目名称、测试起止时间、联调服务列表、分支信息、版本信息。
可选地,所述根据服务端提供的IP和端口配置代理参数包括:
获取服务端启动jacococlient service后提供的IP和端口;
在代理参数中配置所述IP和所述端口;
根据所述IP和所述端口在所述客户端和所述服务端之间进行服务打通,以向所述服务端发送数据。
此外,为实现上述目的,本申请实施例还提出一种联调测试覆盖率检测系统,所述系统包括:
配置模块,用于配置联调服务的测试项目信息,并根据服务端提供的IP和端口配置代理参数;
生成模块,用于通过所述代理生成所述客户端在联调测试中的代码覆盖率数据;
发送模块,用于定时获取所述覆盖率数据并发送至所述服务端,以供所述服务端根据所述覆盖率数据和所述测试项目信息生成覆盖率报告。
为实现上述目的,本申请实施例还提出另一种联调测试覆盖率检测方法,应用于服务端,所述方法包括:
配置jacococlientservice服务;
通过所述jacococlientservice服务定时从客户端获取覆盖率数据;
根据所述客户端提供的测试项目信息对所述覆盖率数据进行区分存储;及
在联调测试结束后,解析所述覆盖率数据并生成覆盖率报告。
可选地,所述配置jacococlientservice服务包括:
配置定时数据拉取功能,以定时从所述客户端获取所述覆盖率数据;
配置读取MySQL功能,以读取所述测试项目信息;
向所述客户端提供所述服务端的IP和端口。
可选地,所述解析所述覆盖率数据并生成覆盖率报告包括:
通过diff-jacoco工程对所述覆盖率数据进行解析,生成增量报告或全量报告。
可选地,当需要生成增量报告时,所述解析所述覆盖率数据并生成覆盖率报告包括:
根据所述测试项目信息对测试项目进行版本比对,获取差量文件信息;
根据所述差量文件信息对所述覆盖率数据中存在差异的文件进行解析;
根据解析结果生成增量报告。
为实现上述目的,本申请实施例还提出另一种联调测试覆盖率检测系统,所述系统包括:
配置模块,用于配置jacococlientservice服务;
获取模块,用于通过所述jacococlientservice服务定时从客户端获取覆盖率数据;
存储模块,用于根据所述客户端提供的测试项目信息对所述覆盖率数据进行区分存储;
生成模块,用于在联调测试结束后,解析所述覆盖率数据并生成覆盖率报告。
为实现上述目的,本申请实施例还提出一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的联调测试覆盖率检测程序,所述联调测试覆盖率检测程序被所述处理器执行时实现如上述的联调测试覆盖率检测方法。
为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有联调测试覆盖率检测程序,所述联调测试覆盖率检测程序被处理器执行时实现如上述的联调测试覆盖率检测方法。
本申请实施例提出的联调测试覆盖率检测方法、系统、电子装置及计算机可读存储介质,能够通过在客户端添加代理来生成覆盖率数据,并在服务端通过jacococlinetservice定时收集各个客户端的覆盖率数据,服务端获取数据后根据测试项目信息进行存储并生成覆盖率报告,实现了开发联调测试的代码覆盖率数据收集,可以有效判断所述覆盖率数据是否符合条件,提高提测质量,减少因为自测不充分导致的测试异常。
附图说明
图1为实现本申请各个实施例的一种应用环境架构图;
图2为本申请第一实施例提出的一种联调测试覆盖率检测方法的流程图;
图3为本申请第二实施例提出的一种联调测试覆盖率检测方法的流程图;
图4为本申请第三实施例提出的一种电子装置的硬件架构示意图;
图5为本申请第四实施例提出的一种联调测试覆盖率检测系统的模块示意图;
图6为本申请第五实施例提出的一种联调测试覆盖率检测系统的模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
请参阅图1,图1为实现本申请各个实施例的一种应用环境架构图。本申请可应用于包括,但不仅限于客户端2、服务端4、网络6的应用环境中。
所述服务端4通过所述网络6与多个所述客户端2通信连接,以进行数据传输和交互,从而实现与多个所述客户端2之间的联调测试。
其中,所述客户端2用于提供本地应用服务,包括配置测试项目信息,配置代理参数并通过代理生成联调测试时代码的覆盖率数据,然后将所述覆盖率数据发送至服务端4。所述客户端2可以为应用服务器或PC(Personal Computer,个人电脑)、手机、平板电脑、便携计算机、可穿戴设备等终端设备。
所述服务端4为测试服务器,用于配置jacococlientservice服务,从客户端2获取所述覆盖率数据,并在联调测试结束后,解析所述覆盖率数据并生成结果报告,得到开发本地联调测试的代码覆盖情况,对开发的自测情况做到数据上的评估。所述服务端4可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
所述网络6可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
实施例一
如图2所示,为本申请第一实施例提出的一种联调测试覆盖率检测方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,以所述客户端为主要执行主体进行示例性描述。
该方法包括以下步骤:
S200,配置联调服务的测试项目信息。
通过数据库的方式来配置测试项目的基本信息,后续获取到的联调服务的测试数据根据客户端IP和测试项目信息进行存储并生成覆盖率报告。
在本实施例中,所述测试项目信息主要包括以下方面:
测试项目名称(project_name):联调测试的各个测试项目的名称,用于项目信息获取、数据存储文件夹区分。
测试起止时间:包括起始时间(start_time)和结束时间(end_time),用于判断所连接服务器是否为在联调服务,如果当前时间在起始时间和结束时间之间则表示为在联调服务,服务器对收集到的数据进行存储,否则无视。
联调服务列表(service_list):包括应用列表和可能的所有本地应用服务(客户端)IP信息,用于进行联调服务和本地数据存储时的文件区分,收集所有的联调服务的测试数据。
分支信息(tree_name):代码各个分支的名称,用于增量报告生成。
版本信息(compare_sha):包括起始版本和结束版本,用于增量报告生成。
S202,根据服务端提供的IP和PORT配置代理参数。
在客户端中开发本地应用服务,添加jacocoagent配置。例如,在Java项目启动参数添加如下内容:
-javaagent:/app/jacocoagent.jar=includes=*,output=tcpclient,address=IP
port=PORT,append=true
其中,IP为服务端启动jacococlient service后暴露出的IP地址,PORT为服务端启动jacococlient service后暴露出的端口。jacococlientservice用于主动从客户端拉取覆盖率数据到服务端,启动该服务后对外提供服务端的IP和PORT。客户端获取服务端提供的所述IP和PORT,通过jacocoagent配置所述IP和PORT,并根据所述IP和PORT在客户端和服务端之间进行服务打通,从而向服务端发送数据。
S204,通过所述代理生成客户端在联调测试中的代码覆盖率数据。
代码覆盖(Code coverage)是软件测试中的一种度量,表示源代码被测试的比例和程度,所得比例称为代码覆盖率,是衡量测试质量的一个重要指标。
Jacoco使用一系列的不同的计数器来做覆盖率的度量计算。所有这些计数器都是从java的class文件中获取信息,这些class文件可以包含调试的信息在里面。即使在没有源码的情况下,该方式也可以实时有效地对应用程序进行度量和分析。在大部分情况下,收集到的信息可以映射到源码,可视化到每一行代码的粒度。通过在客户端配置jacocoagent,可以根据从class文件中获取的信息生成覆盖率数据。所述覆盖率数据为Exec文件,包含的是原始的二进制数据。
S206,定时获取所述覆盖率数据并发送至服务端,以供服务端根据所述覆盖率数据和测试项目信息生成覆盖率报告。
根据jacocoagent配置的服务端的IP和PORT进行服务打通后,可以将所述覆盖率数据发送至服务端。另外,所述测试项目信息也需要提供给服务端读取,从而使服务端根据所述测试项目信息对所述覆盖率数据进行区分存储,并通过分析所述覆盖率数据生成覆盖率报告。
本实施例提出的联调测试覆盖率检测方法,可以通过在客户端部署的本地应用服务上添加jacoco agent来生成覆盖率数据,并在服务端通过jacococlinetservice定时收集各个客户端的覆盖率数据。另外,通过数据库的方式来配置测试项目基本信息,服务端获取数据后按客户端IP和测试项目信息进行存储并生成覆盖率报告。本方法实现了开发联调测试的代码覆盖率数据收集,可以有效判断所述覆盖率数据是否符合条件,提高提测质量,减少因为自测不充分导致的测试异常。
实施例二
如图3所示,为本申请第二实施例提出的一种联调测试覆盖率检测方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。在本实施例中,以所述服务端为主要执行主体进行示例性描述。
该方法包括以下步骤:
S300,配置jacococlientservice服务。
jacococlientservice用于主动从客户端拉取覆盖率数据到服务端,启动该服务后对外提供服务端的IP和PORT,使得客户端通过jacocoagent配置该IP和PORT进行服务打通,从而向服务端发送数据。
在本实施例中,采用jacoco demo项目的ExecutionDataServer工程实现所述jacococlientservice服务。但是,在该工程中添加了定时数据拉取功能,用于将定时从客户端获取所述覆盖率数据,并按客户端IP和测试项目信息进行区分存储。并且,修改该工程添加读取MySQL功能,用于测试项目信息的读取与存储,且添加结果合并(merge)功能。编译生成jar包启动后,可暴露出IP和指定PORT(自定义),提供给客户端。
S304,通过jacococlientservice定时从客户端获取覆盖率数据。
服务端通过jacococlientservice可以主动从客户端拉取覆盖率数据。客户端通过jacocoagent配置服务端提供的IP和PORT进行服务打通,从而向服务端发送所述覆盖率数据。
S306,根据客户端提供的测试项目信息对所述覆盖率数据进行区分存储。
服务端得到所述覆盖率数据后,根据客户端IP和所述测试项目信息对所述覆盖率数据进行区分存储。例如,首先根据客户端IP区分从各个客户端中拉取的覆盖率数据,然后针对每个客户端的覆盖率数据,根据测试项目名称、联调服务列表等信息进一步进行存储文件夹的区分。在本实施例中,所存储的所述覆盖率数据为Exec文件。
S308,在联调测试结束后,解析所述覆盖率数据并生成覆盖率报告。
在服务端与各个客户端之间的联调测试结束后,服务端解析联调测试过程中所存储的Exec文件,生成覆盖率报告,解析后的格式为HTML包。在本实施例中,通过diff-jacoco工程对获取的覆盖率数据进行解析,生成增量或者全量报告。其中,通过exec_merge.py脚本对获取的同项目的数据进行合并并生成source、class等必要文件夹信息。
本实施例引入的diff-jacoco工程,修改了报告生成逻辑,使其支持全量报告、增量报告等多模式。编译生成可执行jar包,并配置jacoco.sh启动脚本,可直接运行脚本进行报告生成。另外,该工程还引入jgit包对测试项目(git项目)进行版本比对,获取差量文件信息。报告生成时可只对所述覆盖率数据中存在差异的文件进行解析,根据解析结果生成增量报告。
具体地,本实施例将jacoco client service和diff-jacoco工程合并为一个,产生新的diff-jacoco工程,该工程可直接通过命令mvn clean install-Dmaven.javadoc.test=true-Dmaven.test.skip=true编译,将编译好的工程中的diff-jacoco/org.jacoco.startup/target/org.jacoco.startup.tar.gz解压。然后,修改conf/jacoco.conf文件,可配置MySQL、日志、以及测试项目等信息。再执行bin/jacoco_service.sh,可启动jacococlientservice服务,用于覆盖率数据的收集。另外,执行bin/jacoco.sh,添加jacoco.sh参数可执行生成全量或者增量报告。
其中,所述jacoco.sh参数可以包括:
jacoco.sh--git-work-dir{git项目路径}–branch{分支}–tag{初始commit版本}--compare-tag{当前commit版本}--report-dir{生成报告路径}--source-dirs{源码路径}--class-dirs{class路径}--remote-host{拉取数据address}--remote-port{端口}–exec{源覆盖率文件路径}。
若不传入remote-host参数,则默认需要指定Exec文件路径。若不传入branch参数,则生成全量报告。若gitPath、branch、tag、compareTag参数均传入,则生成增量报告。主干(master)比较只需传入gitPath、branch参数,而分支之间比较只需要传入gitPath、branch、compareBranch参数。
本实施例提出的联调测试覆盖率检测方法,可以通过在客户端部署的本地应用服务上添加jacoco agent来生成覆盖率数据,并在服务端通过jacococlinetservice定时收集各个客户端的覆盖率数据。另外,通过数据库的方式来配置测试项目基本信息,服务端获取数据后按客户端IP和测试项目信息进行存储并生成覆盖率报告。本方法实现了开发联调测试的代码覆盖率数据收集,可有效的获取到开发联调的具体覆盖率数据是否符合预期,通过增量分析获取新增代码覆盖率是否符合提测条件,提高提测质量,减少因为自测不充分导致的测试异常。
实施例三
如图4所示,为本申请第三实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图4仅示出了具有组件21-23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置20可以是所述客户端2或所述服务端4。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如联调测试覆盖率检测系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述联调测试覆盖率检测系统60等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。
实施例四
如图5所示,为本申请第四实施例提出一种联调测试覆盖率检测系统60的模块示意图。所述联调测试覆盖率检测系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,所述联调测试覆盖率检测系统60应用于所述客户端2,包括:
第一配置模块600,用于配置联调服务的测试项目信息。
通过数据库的方式来配置测试项目的基本信息,后续获取到的联调服务的测试数据根据客户端IP和测试项目信息进行存储并生成覆盖率报告。
在本实施例中,所述测试项目信息主要包括以下方面:
测试项目名称:联调测试的各个测试项目的名称,用于项目信息获取、数据存储文件夹区分。
测试起止时间:包括起始时间和结束时间,用于判断所连接服务器是否为在联调服务,如果当前时间在起始时间和结束时间之间则表示为在联调服务,服务器对收集到的数据进行存储,否则无视。
联调服务列表:包括应用列表和可能的所有本地应用服务(客户端)IP信息,用于进行联调服务和本地数据存储时的文件区分,收集所有的联调服务的测试数据。
分支信息:代码各个分支的名称,用于增量报告生成。
版本信息(compare_sha):包括起始版本和结束版本,用于增量报告生成。
所述第一配置模块600,还用于根据服务端提供的IP和PORT配置代理参数。
在客户端中开发本地应用服务,添加jacocoagent配置。例如,在Java项目启动参数添加如下内容:
-javaagent:/app/jacocoagent.jar=includes=*,output=tcpclient,address=IP
port=PORT,append=true
其中,IP为服务端启动jacococlient service后暴露出的IP地址,PORT为服务端启动jacococlient service后暴露出的端口。jacococlientservice用于主动从客户端拉取覆盖率数据到服务端,启动该服务后对外提供服务端的IP和PORT。客户端获取服务端提供的所述IP和PORT,通过jacocoagent配置所述IP和PORT,并根据所述IP和PORT在客户端和服务端之间进行服务打通,从而向服务端发送数据。
第一生成模块602,用于通过所述代理生成客户端在联调测试中的代码覆盖率数据。
Jacoco使用一系列的不同的计数器来做覆盖率的度量计算。所有这些计数器都是从java的class文件中获取信息,这些class文件可以包含调试的信息在里面。即使在没有源码的情况下,该方式也可以实时有效地对应用程序进行度量和分析。在大部分情况下,收集到的信息可以映射到源码,可视化到每一行代码的粒度。通过在客户端配置jacocoagent,可以根据从class文件中获取的信息生成覆盖率数据。所述覆盖率数据为Exec文件,包含的是原始的二进制数据。
发送模块604,用于定时获取所述覆盖率数据并发送至服务端,以供服务端根据所述覆盖率数据和测试项目信息生成覆盖率报告。
根据jacocoagent配置的服务端的IP和PORT进行服务打通后,可以将所述覆盖率数据发送至服务端。另外,所述测试项目信息也需要提供给服务端读取,从而使服务端根据所述测试项目信息对所述覆盖率数据进行区分存储,并通过分析所述覆盖率数据生成覆盖率报告。
本实施例提出的联调测试覆盖率检测系统,可以通过在客户端部署的本地应用服务上添加jacoco agent来生成覆盖率数据,并在服务端通过jacococlinetservice定时收集各个客户端的覆盖率数据。另外,通过数据库的方式来配置测试项目基本信息,服务端获取数据后按客户端IP和测试项目信息进行存储并生成覆盖率报告。本系统实现了开发联调测试的代码覆盖率数据收集,可以有效判断所述覆盖率数据是否符合条件,提高提测质量,减少因为自测不充分导致的测试异常。
实施例五
如图6所示,为本申请第五实施例提出一种联调测试覆盖率检测系统60的模块示意图。在本实施例中,所述联调测试覆盖率检测系统60应用于所述服务端4,包括:
第二配置模块610,用于配置jacococlientservice服务。
jacococlientservice用于主动从客户端拉取覆盖率数据到服务端,启动该服务后对外提供服务端的IP和PORT,使得客户端通过jacocoagent配置该IP和PORT进行服务打通,从而向服务端发送数据。
在本实施例中,采用jacoco demo项目的ExecutionDataServer工程实现所述jacococlientservice服务。但是,在该工程中添加了定时数据拉取功能,用于将定时从客户端获取所述覆盖率数据,并按客户端IP和测试项目信息进行区分存储。并且,修改该工程添加读取MySQL功能,用于测试项目信息的读取与存储,且添加结果合并功能。编译生成jar包启动后,可暴露出IP和指定PORT(自定义),提供给客户端。
获取模块612,用于通过jacococlientservice定时从客户端获取覆盖率数据。
服务端通过jacococlientservice可以主动从客户端拉取覆盖率数据。客户端通过jacocoagent配置服务端提供的IP和PORT进行服务打通,从而向服务端发送所述覆盖率数据。
存储模块614,用于根据客户端提供的测试项目信息对所述覆盖率数据进行区分存储。
服务端得到所述覆盖率数据后,根据客户端IP和所述测试项目信息对所述覆盖率数据进行区分存储。例如,首先根据客户端IP区分从各个客户端中拉取的覆盖率数据,然后针对每个客户端的覆盖率数据,根据测试项目名称、联调服务列表等信息进一步进行存储文件夹的区分。在本实施例中,所存储的所述覆盖率数据为Exec文件。
第二生成模块616,用于在联调测试结束后,解析所述覆盖率数据并生成覆盖率报告。
在服务端与各个客户端之间的联调测试结束后,服务端解析联调测试过程中所存储的Exec文件,生成覆盖率报告,解析后的格式为HTML包。在本实施例中,通过diff-jacoco工程对获取的覆盖率数据进行解析,生成增量或者全量报告。其中,通过exec_merge.py脚本对获取的同项目的数据进行合并并生成source、class等必要文件夹信息。
本实施例引入的diff-jacoco工程,修改了报告生成逻辑,使其支持全量报告、增量报告等多模式。编译生成可执行jar包,并配置jacoco.sh启动脚本,可直接运行脚本进行报告生成。另外,该工程还引入jgit包对测试项目(git项目)进行版本比对,获取差量文件信息。报告生成时可只对所述覆盖率数据中存在差异的文件进行解析,根据解析结果生成增量报告。
具体地,本实施例将jacoco client service和diff-jacoco工程合并为一个,产生新的diff-jacoco工程,该工程可直接通过命令mvn clean install-Dmaven.javadoc.test=true-Dmaven.test.skip=true编译,将编译好的工程中的diff-jacoco/org.jacoco.startup/target/org.jacoco.startup.tar.gz解压。然后,修改conf/jacoco.conf文件,可配置MySQL、日志、以及测试项目等信息。再执行bin/jacoco_service.sh,可启动jacococlientservice服务,用于覆盖率数据的收集。另外,执行bin/jacoco.sh,添加jacoco.sh参数可执行生成全量或者增量报告。
其中,所述jacoco.sh参数可以包括:
jacoco.sh--git-work-dir{git项目路径}–branch{分支}–tag{初始commit版本}--compare-tag{当前commit版本}--report-dir{生成报告路径}--source-dirs{源码路径}--class-dirs{class路径}--remote-host{拉取数据address}--remote-port{端口}–exec{源覆盖率文件路径}。
若不传入remote-host参数,则默认需要指定Exec文件路径。若不传入branch参数,则生成全量报告。若gitPath、branch、tag、compareTag参数均传入,则生成增量报告。主干(master)比较只需传入gitPath、branch参数,而分支之间比较只需要传入gitPath、branch、compareBranch参数。
本实施例提出的联调测试覆盖率检测系统,可以通过在客户端部署的本地应用服务上添加jacoco agent来生成覆盖率数据,并在服务端通过jacococlinetservice定时收集各个客户端的覆盖率数据。另外,通过数据库的方式来配置测试项目基本信息,服务端获取数据后按客户端IP和测试项目信息进行存储并生成覆盖率报告。本系统实现了开发联调测试的代码覆盖率数据收集,可有效的获取到开发联调的具体覆盖率数据是否符合预期,通过增量分析获取新增代码覆盖率是否符合提测条件,提高提测质量,减少因为自测不充分导致的测试异常。
实施例六
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有联调测试覆盖率检测程序,所述联调测试覆盖率检测程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的联调测试覆盖率检测方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。

Claims (11)

1.一种联调测试覆盖率检测方法,应用于客户端,其特征在于,所述方法包括:
配置联调服务的测试项目信息;
根据服务端提供的IP和端口配置代理参数;
通过所述代理生成所述客户端在联调测试中的代码覆盖率数据;及
定时获取所述覆盖率数据并发送至所述服务端,以供所述服务端根据所述覆盖率数据和所述测试项目信息生成覆盖率报告。
2.根据权利要求1所述的联调测试覆盖率检测方法,其特征在于,所述配置联调服务的测试项目信息包括:
通过数据库的方式配置所述测试项目信息,包括测试项目名称、测试起止时间、联调服务列表、分支信息、版本信息。
3.根据权利要求1所述的联调测试覆盖率检测方法,其特征在于,所述根据服务端提供的IP和端口配置代理参数包括:
获取服务端启动jacococlient service后提供的IP和端口;
在代理参数中配置所述IP和所述端口;
根据所述IP和所述端口在所述客户端和所述服务端之间进行服务打通,以向所述服务端发送数据。
4.一种联调测试覆盖率检测系统,其特征在于,所述系统包括:
配置模块,用于配置联调服务的测试项目信息,并根据服务端提供的IP和端口配置代理参数;
生成模块,用于通过所述代理生成所述客户端在联调测试中的代码覆盖率数据;
发送模块,用于定时获取所述覆盖率数据并发送至所述服务端,以供所述服务端根据所述覆盖率数据和所述测试项目信息生成覆盖率报告。
5.一种联调测试覆盖率检测方法,应用于服务端,其特征在于,所述方法包括:
配置jacococlientservice服务;
通过所述jacococlientservice服务定时从客户端获取覆盖率数据;
根据所述客户端提供的测试项目信息对所述覆盖率数据进行区分存储;及
在联调测试结束后,解析所述覆盖率数据并生成覆盖率报告。
6.根据权利要求5所述的联调测试覆盖率检测方法,其特征在于,所述配置jacococlientservice服务包括:
配置定时数据拉取功能,以定时从所述客户端获取所述覆盖率数据;
配置读取MySQL功能,以读取所述测试项目信息;
向所述客户端提供所述服务端的IP和端口。
7.根据权利要求5所述的联调测试覆盖率检测方法,其特征在于,所述解析所述覆盖率数据并生成覆盖率报告包括:
通过diff-jacoco工程对所述覆盖率数据进行解析,生成增量报告或全量报告。
8.根据权利要求7所述的联调测试覆盖率检测方法,其特征在于,当需要生成增量报告时,所述解析所述覆盖率数据并生成覆盖率报告包括:
根据所述测试项目信息对测试项目进行版本比对,获取差量文件信息;
根据所述差量文件信息对所述覆盖率数据中存在差异的文件进行解析;
根据解析结果生成增量报告。
9.一种联调测试覆盖率检测系统,其特征在于,所述系统包括:
配置模块,用于配置jacococlientservice服务;
获取模块,用于通过所述jacococlientservice服务定时从客户端获取覆盖率数据;
存储模块,用于根据所述客户端提供的测试项目信息对所述覆盖率数据进行区分存储;
生成模块,用于在联调测试结束后,解析所述覆盖率数据并生成覆盖率报告。
10.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的联调测试覆盖率检测程序,所述联调测试覆盖率检测程序被所述处理器执行时实现如权利要求1至3或5至8中任一项所述的联调测试覆盖率检测方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有联调测试覆盖率检测程序,所述联调测试覆盖率检测程序被处理器执行时实现如权利要求1至3或5至8中任一项所述的联调测试覆盖率检测方法。
CN202011255496.9A 2020-11-11 2020-11-11 联调测试覆盖率检测方法及系统 Pending CN112346981A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011255496.9A CN112346981A (zh) 2020-11-11 2020-11-11 联调测试覆盖率检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011255496.9A CN112346981A (zh) 2020-11-11 2020-11-11 联调测试覆盖率检测方法及系统

Publications (1)

Publication Number Publication Date
CN112346981A true CN112346981A (zh) 2021-02-09

Family

ID=74363465

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011255496.9A Pending CN112346981A (zh) 2020-11-11 2020-11-11 联调测试覆盖率检测方法及系统

Country Status (1)

Country Link
CN (1) CN112346981A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948249A (zh) * 2021-03-03 2021-06-11 浙江百应科技有限公司 一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391795A (zh) * 2014-12-03 2015-03-04 北京京东尚科信息技术有限公司 一种分布式系统中自动化测试覆盖率的测试方法及系统
US20170091460A1 (en) * 2015-09-25 2017-03-30 Synack, Inc. Computer system for discovery of vulnerabilities in applications including guided tester paths based on application coverage measures
CN106681912A (zh) * 2016-12-08 2017-05-17 武汉斗鱼网络科技有限公司 用于Android系统的代码覆盖率的自动化测试方法及装置
CN110188048A (zh) * 2019-06-05 2019-08-30 北京科摩仕捷科技有限公司 一种实现精准监控代码覆盖率的方法
CN110597710A (zh) * 2019-08-13 2019-12-20 平安证券股份有限公司 测试覆盖率统计方法、装置、计算机设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391795A (zh) * 2014-12-03 2015-03-04 北京京东尚科信息技术有限公司 一种分布式系统中自动化测试覆盖率的测试方法及系统
US20170091460A1 (en) * 2015-09-25 2017-03-30 Synack, Inc. Computer system for discovery of vulnerabilities in applications including guided tester paths based on application coverage measures
CN106681912A (zh) * 2016-12-08 2017-05-17 武汉斗鱼网络科技有限公司 用于Android系统的代码覆盖率的自动化测试方法及装置
CN110188048A (zh) * 2019-06-05 2019-08-30 北京科摩仕捷科技有限公司 一种实现精准监控代码覆盖率的方法
CN110597710A (zh) * 2019-08-13 2019-12-20 平安证券股份有限公司 测试覆盖率统计方法、装置、计算机设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
小小: ""Jacoco统计接口测试的代码覆盖率"", 《HTTPS://MP.WEIXIN.QQ.COM/S/CT6V5XNFOPPU7YLXH0GWUQ》 *
闻小龙: ""告别盲测—新车电商精准测试落地实战"", 《HTTPS://MP.WEIXIN.QQ.COM/S/9R8YAUBEZJWUZWE4CS5V8W》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948249A (zh) * 2021-03-03 2021-06-11 浙江百应科技有限公司 一种基于JaCoCo基础上实现增量代码覆盖率统计的方法和装置

Similar Documents

Publication Publication Date Title
CN107844421B (zh) 接口测试方法、装置、计算机设备和存储介质
CN108459962B (zh) 代码规范性检测方法、装置、终端设备及存储介质
CN107622015B (zh) 一种数据流分析方法、装置、设备及介质
CN112394942B (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
CN110543427B (zh) 测试用例存储方法、装置、电子设备及存储介质
CN112395202B (zh) 接口自动化测试方法、装置、计算机设备和存储介质
US20070245313A1 (en) Failure tagging
CN112395184A (zh) 一种信息获取方法、设备和计算机存储介质
CN113568839A (zh) 软件测试和统计测试覆盖率的方法、装置、设备及介质
CN113282513B (zh) 接口测试案例的生成方法、装置、计算机设备及存储介质
CN112346981A (zh) 联调测试覆盖率检测方法及系统
CN112729868A (zh) 一种车辆诊断方法、装置、设备及介质
CN116911588A (zh) 业务流程执行方法、装置、设备及存储介质
CN112540808A (zh) 一种程序行为层级调用关系的记录方法及相关设备
CN112527650B (zh) 一种测试用例复用方法和复用装置
CN114238130A (zh) 性能测试方法、装置、设备及存储介质
CN113806231A (zh) 一种代码覆盖率分析方法、装置、设备和介质
CN113282504A (zh) 一种增量代码覆盖率检测方法及业务开发方法、装置
CN111324542B (zh) 一种Web应用回归测试用例选择系统、方法以及设备
CN117435513B (zh) 测试用例生成方法、终端设备及计算机可读存储介质
CN114205276B (zh) 用于产品管理系统的性能测试方法及装置、电子设备
CN112559370A (zh) 一种基于前端的React项目单元测试方法及相关设备
CN112445491A (zh) 文件序列处理方法、装置、终端设备及存储介质
CN116860591A (zh) 测试脚本生成方法及装置
CN116719725A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210209