CN109766261B - 覆盖测试方法、装置、计算机设备和存储介质 - Google Patents

覆盖测试方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN109766261B
CN109766261B CN201811533053.4A CN201811533053A CN109766261B CN 109766261 B CN109766261 B CN 109766261B CN 201811533053 A CN201811533053 A CN 201811533053A CN 109766261 B CN109766261 B CN 109766261B
Authority
CN
China
Prior art keywords
code data
original
coverage rate
coverage
detected
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
CN201811533053.4A
Other languages
English (en)
Other versions
CN109766261A (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 Property and Casualty Insurance Company of China Ltd
Original Assignee
Ping An Property and Casualty Insurance Company of China 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 Property and Casualty Insurance Company of China Ltd filed Critical Ping An Property and Casualty Insurance Company of China Ltd
Priority to CN201811533053.4A priority Critical patent/CN109766261B/zh
Publication of CN109766261A publication Critical patent/CN109766261A/zh
Application granted granted Critical
Publication of CN109766261B publication Critical patent/CN109766261B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种测试工具领域的覆盖测试方法、装置、计算机设备和存储介质。所述方法包括:获取差异分析指令以及待检测代码数据,获取待检测代码数据的原始覆盖率,根据差异分析指令中的预先设置的查询标签,查询得到查询标签对应的原始代码数据,将待检测代码数据和原始代码数据进行内容比对,得到改动代码数据,调用覆盖率分析工具对改动代码数据进行覆盖率分析,得到改动代码数据对应的改动覆盖率,根据改动覆盖率以及原始覆盖率,得到待检测代码数据的覆盖测试结果。采用本方法能够提高代码覆盖测试的效率。

Description

覆盖测试方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种覆盖测试方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,程序开发技术也得到长足的发展。在对新的程序进行测试时,代码覆盖测试是一个重要的质量衡量指标,通过程序的代码覆盖率可以反映出程序中存在的问题。通常而言,开发人员会根据代码覆盖测试结果进行程序的反向检查,从而根据多次程序版本的迭代,直到程序的代码覆盖率达到测试的要求。
在传统技术中,每次对程序进行修改后,均需要对修改后的程序进行覆盖测试,在这种测试方式下,繁杂代码导致测试周期长,另外,由于测试结果无法直观体现修改后程序中修改内容对程序的代码覆盖率的影响,使程序后期修改没有针对性,从而导致程序的代码覆盖测试效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够解决程序的代码覆盖测试效率低问题的覆盖测试方法、装置、计算机设备和存储介质。
一种覆盖测试方法,所述方法包括:
获取差异分析指令以及待检测代码数据;
获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;
根据所述待检测代码数据和所述原始代码数据,得到改动代码数据;
对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果。
在其中一个实施例中,还包括:解析所述差异分析指令,得到预先设置的查询标签;所述查询标签中包含原始代码数据的数据序列号;根据所述查询标签,确定所述数据序列号对应的原始代码数据。
在其中一个实施例中,还包括:根据预先设置的规则,为所述待检测代码数据设置数据序列号;将所述待检测代码数据转化为原始代码数据,并存入预先设置的原始代码库中。
在其中一个实施例中,还包括:将所述待检测代码数据和所述原始代码数据输入预先设置的差异分析脚本;通过所述差异分析脚本,对所述待检测代码数据和所述原始代码数据进行编译分析,得到所述待检测代码数据和所述原始代码数据的差异代码部分;确定所述差异代码部分为改动代码数据。
在其中一个实施例中,还包括:根据所述改动覆盖率生成改动覆盖率图表,以及根据所述原始覆盖率生成原始覆盖率图表;将所述改动覆盖率图表以及所述原始覆盖率图表存储在预先设置的数据库中;接收到可视化平台的数据库调用请求时,将所述数据库中的所述改动覆盖率图表以及所述原始覆盖率图表发送至预先设置的可视化平台,以使所述可视化平台可视化展示所述待检测代码数据的覆盖测试结果。
在其中一个实施例中,还包括:对所述待检测代码数据进行编译,得到目标文件;将所述待检测代码数据、所述目标文件以及所述改动覆盖率,生成改动覆盖率图表。
在其中一个实施例中,还包括:对所述原始覆盖率进行过滤计算,得到精简原始覆盖率;根据所述精简原始覆盖率生成原始覆盖率图表。
一种覆盖测试装置,所述装置包括:
接口模块,用于获取差异分析指令以及待检测代码数据;
数据获取模块,用于获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;
差异分析模块,用于根据所述待检测代码数据和所述原始代码数据,得到改动代码数据
覆盖率分析模块,用于对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
覆盖测试模块,用于根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取差异分析指令以及待检测代码数据;
获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;
根据所述待检测代码数据和所述原始代码数据,得到改动代码数据;
对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取差异分析指令以及待检测代码数据;
获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;
根据所述待检测代码数据和所述原始代码数据,得到改动代码数据;
对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果。
上述覆盖测试方法、装置、计算机设备和存储介质,通过获取待检测代码数据的原始覆盖率,然后根据差异分析指令,选择历史修改版本的原始代码数据,其中,原始代码数据对应待检测代码数据,从而进一步根据待检测代码数据和原始代码数据得到改动代码数据,然后针对改动代码数据,分析改动代码数据的改动覆盖率,在进行待检测代码数据的代码覆盖率分析时,可以同时根据改动覆盖率和原始覆盖率,针对性的分析待检测代码数据的代码覆盖率,同时,也可以反映出改动代码数据对待检测代码数据的代码覆盖率的影响,从而给出优化待检测代码数据的方向,因此,通过本发明实施例,可以提高程序代码覆盖测试的效率。
附图说明
图1为一个实施例中覆盖测试方法的应用场景图;
图2为一个实施例中覆盖测试方法的流程示意图;
图3为一个实施例中得到原始代码数据步骤的流程示意图;
图4为另一个实施例中覆盖测试方法的流程示意图;
图5为一个实施例中覆盖测试装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的覆盖测试方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
其中,程序开发人员通过操作终端102进行程序的覆盖测试,在进行覆盖测试时,通过终端102进行网络访问服务器104,终端102通过网络将待检测代码数据发送至服务器104,服务器104在接收到待检测代码数据时,对待检测代码数据进行覆盖率检测。
具体的,终端102通过WEB网页访问服务器104,通过WEB网页的接口功能将待检测代码数据上传至服务器104。
另外,根据服务器104中预先配置的脚本文件,还需要在终端102的WEB网页中进行编译机参数、插件参数的配置等。
具体的,服务器104在进行待检测代码数据的覆盖测试时,接收待检测代码数据,检测服务器104对应的数据库中是否存储有待检测代码数据的原始代码数据,原始代码数据指的是待检测代码数据的历史版本。若存在原始代码数据,则通过服务器104中配置的编译机对待检测代码数据和原始代码数据进行差异分析,得到改动代码数据,然后通过服务器中配置的覆盖率分析工具,对待检测代码数据进行覆盖率分析,得到原始覆盖率,服务器104还对改动代码数据进行覆盖率分析,得到改动代码数据对应的改动覆盖率。从而,服务器104根据改动覆盖率和原始覆盖率,得到待检测代码数据的覆盖率的测试结果。
在一个实施例中,如图2所示,提供了一种覆盖测试方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,获取差异分析指令以及待检测代码数据。
其中,差异分析指令可以是有终端发送,在程序开发人员需要进行覆盖测试时,通过终端生成差异分析指令,此时,服务器接收终端生成的差异分析指令。与此同时,服务器还获取待检测代码数据,待检测代码数据即为覆盖测试的对象,也是通过终端发送。
具体的,差异分析指令用于触发服务器进行覆盖测试,待检测代码数据可以是程序开发人员开发的程序的代码文件或者代码片段。
另外,在一具体实施例中,在一个程序的代码覆盖率检测周期内,服务器将每次接收的待检测代码数据保存在数据库中作为原始代码数据,以便下次程序的代码覆盖率检测时,可以直接从数据库中调用。
步骤204,获取待检测代码数据的原始覆盖率,根据差异分析指令中的预先设置的查询标签,查询得到查询标签对应的原始代码数据。
其中,原始覆盖率是指对待检测代码数据进行代码覆盖测试得到的覆盖率,服务器可以调用覆盖率分析工具对待检测代码数据进行覆盖测试,得到原始覆盖率。查询标签可以是一种计算机可识别的标签,服务器在接收到差异分析指令后,可以得到识别标签。
在一实施例中,覆盖率分析工具可以部署在服务器中,因此,服务器还包括覆盖率检测子服务器,覆盖率检测子服务器中集成了Jacoco工具,覆盖率检测子服务器接收待检测代码数据,然后通过Jacoco工具对带检测代码数据进行覆盖率分析。
服务器接收到原始覆盖率时,开始进行待检测代码的覆盖测试,服务器解析差异分析指令,根据解析结果选择对应的原始代码数据。待检测代码数据为原始代码数据的迭代数据,原始代码数据可以保存在服务器对应的数据库。
步骤206,将待检测代码数据和原始代码数据进行内容比对,得到改动代码数据。
由于待检测代码数据是原始代码数据的迭代版本,因此待检测代码数据和原始代码数据中有部分是一致的,因此,将待检测代码数据和原始代码数据进行比对,可以得到改动代码数据。其中,改动代码数据是待检测代码数据与原始代码数据的代码部分,也可以是包含差异的差异信息,根据差异信息和原始代码数据,可以得到待检测代码数据。
步骤208,调用覆盖率分析工具对改动代码数据进行覆盖率分析,得到改动代码数据对应的改动覆盖率。
其中,改动覆盖率是对改动代码数据进行覆盖率分析得到的,改动覆盖率反映了改动代码数据中代码的覆盖率情况,从而可以得到本次修改中,改动部分代码的质量情况。
步骤210,根据改动覆盖率以及原始覆盖率,得到待检测代码数据的覆盖测试结果。
其中,覆盖率的测试结果中包含了改动覆盖率情况和原始覆盖率情况,改动覆盖率可以反映改动部分的代码质量情况,原始覆盖率可以反映代码整体的质量情况,通过覆盖测试结果,不仅可以确定本次改动的代码质量情况,可以从整体,得到改动后整体代码的质量情况,从而根据测试结果,可以指引程序开发人员对程序代码的进一步改进。
上述覆盖测试方法中,当接收到待检测代码数据的原始覆盖率时,根据差异分析指令,选择历史修改版本的原始代码数据,其中,原始代码数据对应待检测代码数据,从而进一步根据待检测代码数据和原始代码数据得到改动代码数据,然后针对改动代码数据,分析改动代码数据的改动覆盖率,在进行待检测代码数据的代码覆盖率分析时,可以同时根据改动覆盖率和原始覆盖率,针对性的分析待检测代码数据的代码覆盖率,同时,也可以反映出改动代码数据对待检测代码数据的代码覆盖率的影响,从而给出优化待检测代码数据的方向,因此,通过本发明实施例,可以提高程序代码覆盖测试的效率。
在一个实施例中,如图3所示,提供一种得到原始代码数据步骤的示意性流程图,具体步骤如下:
步骤302,解析差异分析指令,得到预先设置的查询标签;查询标签中包含原始代码数据的数据序列号。
步骤304,根据查询标签,确定数据序列号对应的原始代码数据。
本实施例中,通过查询标签中的数据序列号,然后通过数据序列号查询数据库,可以确定本次覆盖测试的原始代码数据,方便准确,而且易于配置。
在另一实施例中,可以在服务器中还包括GIT子服务器(分布式版本控制***),通过GIT子服务器对原始代码数据进行数据序列号的标记。
在又一实施例中,还包括更新原始代码库的步骤,具体如下:根据预先设置的规则,为所述待检测代码数据设置数据序列号,将所述待检测代码数据转化为原始代码数据,并存入预先设置的原始代码库中。在本实施例中,原始代码库用于存储原始代码数据,原始代码数据的数据序列号唯一。
在一具体实施例中,还可以在获取待检测代码数据时,直接获取待检测代码数据对应的数据序列号,将待检测代码数据和其对应的数据序列号对应保存,从而在完成覆盖测试时,存入原始代码库,以供下次覆盖测试使用。
在一实施例中,进行覆盖测试时,需要进行配置信息的设置,配置信息中包括选择原始代码数据的数据序列号,可以将该配置信息转化为差异分析指令,以此获取原始代码数据。
在一具体实施例中,数据序列号可以通过在GIT子服务器中设置commit_ID实现,通过提交待检测代码数据的commit_ID和原始代码数据的commit_ID,GIT子服务器通过识别两个文件的commit_ID,可以对应从获取对应的文件数据。
在一实施例中,得到改动代码数据的步骤可以如下:将待检测代码数据和原始代码数据输入预先设置的差异分析脚本,通过差异分析脚本,对待检测代码数据和原始代码数据进行编译分析,得到待检测代码数据和原始代码数据的差异代码部分,确定所述差异代码部分为改动代码数据。
具体的,差异分析脚本可以通过GIT子服务器实现,GIT子服务器通过识别待检测代码数据的commit_ID和原始代码数据的commit_ID,获取待检测代码数据的文件和原始代码数据的文件。然后分别对原始代码数据和待检测代码数据进行编译,得到两个目标文件,即待检测代码数据对应的第一目标文件和原始代码数据对应的第二目标文件,通过第一目标文件和第二目标文件的比对,可以得到改动代码数据。因此,本实施例的技术方案,可以通过提交不同的commit_ID来进行不同文件之间的差异分析,从而可以根据需求,进行全面的覆盖率分析,以此加快代码覆盖率的测试进度。
在一实施例中,如图4所示,提供一种覆盖测试方法的示意性流程图,具体步骤如下:
步骤402,根据改动覆盖率生成改动覆盖率图表,以及根据原始覆盖率生成原始覆盖率图表。
改动覆盖率图表和原始覆盖率图表实质上为图表数据,即将图表数据输入图表显示软件,可以在图表显示软件中显示图表数据对应的图表。
步骤404,将改动覆盖率图表以及原始覆盖率图表存储在预先设置的数据库中。
数据库是服务器对应的数据库,用于存储服务器中的数据。
步骤406,接收到可视化平台的数据库调用请求时,将数据库中的改动覆盖率图表以及原始覆盖率图表发送至预先设置的可视化平台,以使可视化平台可视化展示待检测代码数据的覆盖测试结果。
本实施例中,可视化平台可以部署在程序开发人员的终端中,终端发送数据库调用请求时,可以将改动覆盖率图表和原始覆盖率图表显示在终端中的可视化平台中。通过对测试结果的可视化显示,可以快速得到待检测代码数据的覆盖率情况,从而可以提高代码覆盖测试的效率。
对于步骤402,生成改动覆盖率图表的步骤可以是:对改动代码数据进行编译,得到目标文件,将改动代码数据、目标文件以及改动覆盖率,生成改动覆盖率图表。
本实施例中,可以通过服务器中部署的编译机对待检测代码数据进行编译,得到待检测代码数据对应的目标文件,编译指的是将程序代码语言转化为计算机可以识别的语言,即二进制语言。
具体的,根据改动代码数据,可以获取改动代码数据的总行数,从而根据改动代码覆盖率可以计算得到覆盖的总行数,结合服务器对目标文件进行识别,可以得知具体没有被覆盖到的行,从而可以生成改动覆盖率图表。该图表中即可以反映改动代码数据的代码改动信息,还可以反映,改动代码数据的具体改动情况,以及改动后代码的覆盖情况。
在具体应用时,在GIT子服务器生成改动代码数据时,maven插件根据原始覆盖率和改动代码数据,生成改动覆盖率,以此通过maven插件生成改动覆盖率图表和原始覆盖率图表。
对于步骤402,在一实施例中,可以通过覆盖率分析程序,对原始代码数据进行覆盖测试,得到原始覆盖率,原始覆盖率中主要包括方法、类、行、分支、指令以及圈的覆盖率检测,以此通过上述覆盖率检测,可以得到原始代码数据中的原始覆盖率。
由于原始覆盖率中数据量较大,因此可以对原始覆盖率进行过滤计算,得到精简原始覆盖率,精简原始覆盖率数据中去除了对改动覆盖率没有影响的部分,因此,在生成原始覆盖率图表时,可以根据精简原始覆盖率生成原始覆盖率图表,从而是的原始覆盖率图表更加精简。
在一具体实施例中,给出一具体的覆盖测试分析方法,该方法可以应用在覆盖测试平台中,覆盖测试平台中包括:编译机、跳板机、STG机器以及数据库。
该覆盖测试平台中还设置与终端进行交互的接口,终端通过访问覆盖测试平台地址,进入覆盖测试的参数配置界面,由于覆盖测试平台中配置多种插件,因此,首先需要在参数配置界面中配置多种参数,例如:maven插件和运行所需的环境参数并发送给编译机,配置好exp脚本、ssh密钥发送给跳板机,配置STG机器账号、服务路径、jvm启动参数发送给STG机器,最后将上述配置参数都发送给数据库,以便终端中的动态修改。
覆盖测试平台对上述配置参数进行校验,检测通过后,进入操作界面。在操作界面中上传待检测代码数据,并输入待检测代码数据的commit_ID和原始代码数据的commit_ID,GIT子服务器根据commit_ID从数据库中获取待检测代码数据和原始代码数据,从而通过GIT子服务器获取待检测代码数据和原始代码数据的改动代码信息,此时,STG机器执行覆盖率收集脚本,收集到待检测代码数据的原始覆盖率,STG机器将原始覆盖率数据通过跳板机推送到编译机中,此时,借助maven插件生成覆盖率中间结果,其中,中间结果包括改动覆盖率和原始覆盖率。
得到改动覆盖率和原始覆盖率后,进入报表界面,在报表界面中,将各个代码文件、改动代码数据以及中间结果发送给终端,并且将分析得到的原始覆盖率图表和改动覆盖率图表发送给终端,通过终端,将上述数据保存为一条日志存储在数据库中,以便调用。若在报表界面进行测试分析操作,可以调取数据库中的日志文件以及日志文件对应的上述数据,在终端的可视化界面中对上述数据以及图表进行可视化显示。
应该理解的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种覆盖测试装置,包括:接口模块502、数据获取模块504、差异分析模块506、覆盖率分析模块508和覆盖测试模块510,其中:
接口模块502,用于获取差异分析指令以及待检测代码数据。
数据获取模块504,获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据。
差异分析模块506,用于将所述待检测代码数据和所述原始代码数据进行内容比对,得到改动代码数据。
覆盖率分析模块508,用于调用覆盖率分析工具对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率。
覆盖测试模块510,用于根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果。
在一个实施例中,数据获取模块504还用于解析所述差异分析指令,得到预先设置的查询标签;所述查询标签中包含原始代码数据的数据序列号;根据所述查询标签,确定所述数据序列号对应的原始代码数据。
在一个实施例中,原始代码更新模块,用于根据预先设置的规则,为所述待检测代码数据设置数据序列号;将所述待检测代码数据转化为原始代码数据,并存入预先设置的原始代码库中。
在一个实施例中,差异分析模块506还用于将所述待检测代码数据和所述原始代码数据输入预先设置的差异分析脚本;通过所述差异分析脚本,对所述待检测代码数据和所述原始代码数据进行编译分析,得到所述待检测代码数据和所述原始代码数据的差异代码部分;确定所述差异代码部分为改动代码数据。
在一个实施例中,覆盖测试模块510还用于根据所述改动覆盖率生成改动覆盖率图表,以及根据所述原始覆盖率生成原始覆盖率图表;将所述改动覆盖率图表以及所述原始覆盖率图表存储在预先设置的数据库中;接收到可视化平台的数据库调用请求时,将所述数据库中的所述改动覆盖率图表以及所述原始覆盖率图表发送至预先设置的可视化平台,以使所述可视化平台可视化展示所述待检测代码数据的覆盖测试结果。
在一个实施例中,覆盖测试模块510还用于对所述改动代码数据进行编译,得到目标文件;将所述改动代码数据、所述目标文件以及所述改动覆盖率,生成改动覆盖率图表。
在一个实施例中,覆盖测试模块510还用于对所述原始覆盖率进行过滤计算,得到精简原始覆盖率;根据所述精简原始覆盖率生成原始覆盖率图表。
关于覆盖测试装置的具体限定可以参见上文中对于覆盖测试方法的限定,在此不再赘述。上述覆盖测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储待检测代码数据、原始代码数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种覆盖测试方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取差异分析指令以及待检测代码数据;
获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;
将所述待检测代码数据和所述原始代码数据进行内容比对,得到改动代码数据;
调用覆盖率分析工具对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:解析所述差异分析指令,得到预先设置的查询标签;所述查询标签中包含原始代码数据的数据序列号;根据所述查询标签,确定所述数据序列号对应的原始代码数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据预先设置的规则,为所述待检测代码数据设置数据序列号;将所述待检测代码数据转化为原始代码数据,并存入预先设置的原始代码库中。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将所述待检测代码数据和所述原始代码数据输入预先设置的差异分析脚本;通过所述差异分析脚本,对所述待检测代码数据和所述原始代码数据进行编译分析,得到所述待检测代码数据和所述原始代码数据的差异代码部分;确定所述差异代码部分为改动代码数据。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据所述改动覆盖率生成改动覆盖率图表,以及根据所述原始覆盖率生成原始覆盖率图表;将所述改动覆盖率图表以及所述原始覆盖率图表存储在预先设置的数据库中;接收到可视化平台的数据库调用请求时,将所述数据库中的所述改动覆盖率图表以及所述原始覆盖率图表发送至预先设置的可视化平台,以使所述可视化平台可视化展示所述待检测代码数据的覆盖测试结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对所述改动代码数据进行编译,得到目标文件;将所述改动代码数据、所述目标文件以及所述改动覆盖率,生成改动覆盖率图表。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对所述原始覆盖率进行过滤计算,得到精简原始覆盖率;根据所述精简原始覆盖率生成原始覆盖率图表。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取差异分析指令以及待检测代码数据;
获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;
将所述待检测代码数据和所述原始代码数据进行内容比对,得到改动代码数据;
调用覆盖率分析工具对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:解析所述差异分析指令,得到预先设置的查询标签;所述查询标签中包含原始代码数据的数据序列号;根据所述查询标签,确定所述数据序列号对应的原始代码数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据预先设置的规则,为所述待检测代码数据设置数据序列号;将所述待检测代码数据转化为原始代码数据,并存入预先设置的原始代码库中。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将所述待检测代码数据和所述原始代码数据输入预先设置的差异分析脚本;通过所述差异分析脚本,对所述待检测代码数据和所述原始代码数据进行编译分析,得到所述待检测代码数据和所述原始代码数据的差异代码部分;确定所述差异代码部分为改动代码数据。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据所述改动覆盖率生成改动覆盖率图表,以及根据所述原始覆盖率生成原始覆盖率图表;将所述改动覆盖率图表以及所述原始覆盖率图表存储在预先设置的数据库中;接收到可视化平台的数据库调用请求时,将所述数据库中的所述改动覆盖率图表以及所述原始覆盖率图表发送至预先设置的可视化平台,以使所述可视化平台可视化展示所述待检测代码数据的覆盖测试结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对所述改动代码数据进行编译,得到目标文件;将所述改动代码数据、所述目标文件以及所述改动覆盖率,生成改动覆盖率图表。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对所述原始覆盖率进行过滤计算,得到精简原始覆盖率;根据所述精简原始覆盖率生成原始覆盖率图表。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种覆盖测试方法,应用于覆盖测试平台中,所述方法包括:
获取差异分析指令以及待检测代码数据;
获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;其中,进行覆盖测试时的配置信息中包括原始代码数据的数据序列号,所述配置信息用于转化为差异分析指令,以获取所述原始代码数据;
将所述待检测代码数据和所述原始代码数据进行内容比对,得到改动代码数据;
调用覆盖率分析工具对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果;所述改动覆盖率用于反映改动部分的代码质量情况,所述原始覆盖率用于反映改动后整体代码的代码质量情况,所述覆盖测试结果用于确定出优化所述待检测代码数据的方向;
其中,所述覆盖测试平台包括:编译机、跳板机、STG机器、数据库与终端进行交互的接口,所述终端通过访问覆盖测试平台地址,进入覆盖测试的参数配置界面,并在所述参数配置界面中配置多种参数;所述编译机用于接收maven插件和运行所需的环境参数,所述跳板机用于接收配置好的exp脚本和ssh密钥,所述STG机器用于接收配置好的STG机器账号、服务路径和jvm启动参数,所述数据库用于接收各配置参数,用于实现动态修改;其中,所述STG机器用于执行覆盖率收集脚本,收集到待检测代码数据的原始覆盖率,并将原始覆盖率数据通过所述跳板机推送到所述编译机中,所述编译机通过借助所述maven插件根据原始覆盖率和改动代码数据生成覆盖率中间结果,所述覆盖率中间结果包括改动覆盖率和原始覆盖率。
2.根据权利要求1所述的方法,其特征在于,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据,包括:
解析所述差异分析指令,得到预先设置的查询标签;所述查询标签中包含原始代码数据的数据序列号;
根据所述查询标签,确定所述数据序列号对应的原始代码数据。
3.根据权利要求2所述的方法,其特征在于,在根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖率的测试结果之后,还包括:
根据预先设置的规则,为所述待检测代码数据设置数据序列号;
将所述待检测代码数据转化为原始代码数据,并存入预先设置的原始代码库中。
4.根据权利要求1所述的方法,其特征在于,将所述待检测代码数据和所述原始代码数据进行内容比对,得到改动代码数据,包括:
将所述待检测代码数据和所述原始代码数据输入预先设置的差异分析脚本;
通过所述差异分析脚本,对所述待检测代码数据和所述原始代码数据进行编译分析,得到所述待检测代码数据和所述原始代码数据的差异代码部分;
确定所述差异代码部分为改动代码数据。
5.根据权利要求1至4任一项所述的方法,其特征在于,根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖测试结果,包括:
根据所述改动覆盖率生成改动覆盖率图表,以及根据所述原始覆盖率生成原始覆盖率图表;
将所述改动覆盖率图表以及所述原始覆盖率图表存储在预先设置的数据库中;
接收到可视化平台的数据库调用请求时,将所述数据库中的所述改动覆盖率图表以及所述原始覆盖率图表发送至预先设置的可视化平台,以使所述可视化平台可视化展示所述待检测代码数据的覆盖测试结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述改动覆盖率生成改动覆盖率图表,包括:
对所述改动代码数据进行编译,得到目标文件;
将所述改动代码数据、所述目标文件以及所述改动覆盖率,生成改动覆盖率图表。
7.根据权利要求5所述的方法,其特征在于,在根据所述原始覆盖率生成原始覆盖率图表之前,还包括:
对所述原始覆盖率进行过滤计算,得到精简原始覆盖率;
所述根据所述原始覆盖率生成原始覆盖率图表,包括:
根据所述精简原始覆盖率生成原始覆盖率图表。
8.一种覆盖测试装置,应用于覆盖测试平台,其特征在于,所述装置包括:
接口模块,用于获取差异分析指令以及待检测代码数据;
数据获取模块,用于获取所述待检测代码数据的原始覆盖率,根据所述差异分析指令中的预先设置的查询标签,查询得到所述查询标签对应的原始代码数据;其中,进行覆盖测试时的配置信息中包括原始代码数据的数据序列号,所述配置信息用于转化为差异分析指令,以获取所述原始代码数据;
差异分析模块,用于将所述待检测代码数据和所述原始代码数据进行内容比对,得到改动代码数据;
覆盖率分析模块,用于调用覆盖率分析工具对所述改动代码数据进行覆盖率分析,得到所述改动代码数据对应的改动覆盖率;
覆盖测试模块,用于根据所述改动覆盖率以及所述原始覆盖率,得到所述待检测代码数据的覆盖率的测试结果;所述改动覆盖率用于反映改动部分的代码质量情况,所述原始覆盖率用于反映改动后整体代码的代码质量情况,覆盖测试结果用于确定出优化所述待检测代码数据的方向;
其中,所述覆盖测试平台包括:编译机、跳板机、STG机器、数据库与终端进行交互的接口,所述终端通过访问覆盖测试平台地址,进入覆盖测试的参数配置界面,并在所述参数配置界面中配置多种参数;所述编译机用于接收maven插件和运行所需的环境参数,所述跳板机用于接收配置好的exp脚本和ssh密钥,所述STG机器用于接收配置好的STG机器账号、服务路径和jvm启动参数,所述数据库用于接收各配置参数,用于实现动态修改;其中,所述STG机器用于执行覆盖率收集脚本,收集到待检测代码数据的原始覆盖率,并将原始覆盖率数据通过所述跳板机推送到所述编译机中,所述编译机通过借助所述maven插件根据原始覆盖率和改动代码数据生成覆盖率中间结果,所述覆盖率中间结果包括改动覆盖率和原始覆盖率。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN201811533053.4A 2018-12-14 2018-12-14 覆盖测试方法、装置、计算机设备和存储介质 Active CN109766261B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811533053.4A CN109766261B (zh) 2018-12-14 2018-12-14 覆盖测试方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811533053.4A CN109766261B (zh) 2018-12-14 2018-12-14 覆盖测试方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN109766261A CN109766261A (zh) 2019-05-17
CN109766261B true CN109766261B (zh) 2024-05-24

Family

ID=66450711

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811533053.4A Active CN109766261B (zh) 2018-12-14 2018-12-14 覆盖测试方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN109766261B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347381A (zh) * 2019-05-22 2019-10-18 平安证券股份有限公司 数据加工代码的管理方法及装置
CN110532174B (zh) * 2019-07-24 2024-05-31 平安科技(深圳)有限公司 计算增量代码覆盖率的方法、装置、计算机设备及存储介质
CN110781071B (zh) * 2019-09-09 2022-10-14 中国平安财产保险股份有限公司 应用程序升级版本的测试方法、装置及计算机设备
CN111813412B (zh) * 2020-06-28 2023-03-24 中国科学院计算机网络信息中心 构建评测二进制代码比对工具的测试数据集的方法及***
CN112597041B (zh) * 2020-12-28 2023-01-20 上海品顺信息科技有限公司 代码覆盖率的跨分支合并方法、***、设备及存储介质
CN114706749A (zh) * 2022-03-03 2022-07-05 网宿科技股份有限公司 代码覆盖率的确定方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608011A (zh) * 2016-03-01 2016-05-25 网易(杭州)网络有限公司 代码测试覆盖率统计结果的确定方法及装置
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN107480066A (zh) * 2017-08-18 2017-12-15 网易(杭州)网络有限公司 代码覆盖率统计方法、装置、存储介质、处理器和终端
CN108829580A (zh) * 2018-05-07 2018-11-16 百度在线网络技术(北京)有限公司 多版本测试数据处理方法、装置、设备及存储介质
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9317410B2 (en) * 2013-03-15 2016-04-19 International Business Machines Corporation Testing functional correctness and idempotence of software automation scripts

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608011A (zh) * 2016-03-01 2016-05-25 网易(杭州)网络有限公司 代码测试覆盖率统计结果的确定方法及装置
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN107480066A (zh) * 2017-08-18 2017-12-15 网易(杭州)网络有限公司 代码覆盖率统计方法、装置、存储介质、处理器和终端
CN108829580A (zh) * 2018-05-07 2018-11-16 百度在线网络技术(北京)有限公司 多版本测试数据处理方法、装置、设备及存储介质
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN109766261A (zh) 2019-05-17

Similar Documents

Publication Publication Date Title
CN109766261B (zh) 覆盖测试方法、装置、计算机设备和存储介质
CN110399293B (zh) ***测试方法、装置、计算机设备和存储介质
CN106844217B (zh) 对应用的控件进行埋点的方法及装置、可读存储介质
CN109446068B (zh) 接口测试方法、装置、计算机设备和存储介质
CN108427613B (zh) 异常接口定位方法、装置、计算机设备和存储介质
US20060294503A1 (en) Code coverage analysis
CN111475324B (zh) 日志信息的分析方法、装置、计算机设备和存储介质
CN111026647B (zh) 代码覆盖率的获取方法、装置、计算机设备和存储介质
CN112559365A (zh) 一种测试用例筛选方法、装置、计算机设备和存储介质
CN112559354A (zh) 前端代码规范检测方法、装置、计算机设备及存储介质
CN108874661B (zh) 测试映射关系库生成方法、装置、计算机设备和存储介质
CN110321284B (zh) 测试数据录入方法、装置、计算机设备和存储介质
CN110362479B (zh) ***升级测试方法和***
CN113342685A (zh) 精准测试方法、装置、计算机设备和存储介质
US11816479B2 (en) System and method for implementing a code audit tool
CN108399125B (zh) 自动化测试方法、装置、计算机设备和存储介质
CN111897727A (zh) 软件测试方法、装置、计算机设备及存储介质
CN112380130A (zh) 基于调用依赖关系的应用测试方法和装置
CN112540924A (zh) 接口自动化测试方法、装置、设备及存储介质
CN110750443A (zh) 网页测试的方法、装置、计算机设备及存储介质
CN111124894B (zh) 代码覆盖率的处理方法、装置和计算机设备
CN111597069A (zh) 程序处理方法、装置、电子设备和存储介质
CN111459796B (zh) 自动化测试方法、装置、计算机设备和存储介质
CN111444093B (zh) 项目开发过程质量的确定方法、装置、计算机设备
CN105912467B (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