CN116303064A - 一种获取单元代码覆盖率的方法及装置 - Google Patents

一种获取单元代码覆盖率的方法及装置 Download PDF

Info

Publication number
CN116303064A
CN116303064A CN202310313437.XA CN202310313437A CN116303064A CN 116303064 A CN116303064 A CN 116303064A CN 202310313437 A CN202310313437 A CN 202310313437A CN 116303064 A CN116303064 A CN 116303064A
Authority
CN
China
Prior art keywords
code
unit
developer
codes
coverage
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
CN202310313437.XA
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.)
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 CN202310313437.XA priority Critical patent/CN116303064A/zh
Publication of CN116303064A publication Critical patent/CN116303064A/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/3676Test management for coverage analysis
    • 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

本发明提供了一种获取单元代码覆盖率的方法及装置,包括:用于获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;通过预先设置的流水线,构建所述目标应用程序的单元测试用例;基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。可以对各开发人员在应用程序开发中的开发质量进行评估。

Description

一种获取单元代码覆盖率的方法及装置
技术领域
本发明涉及代码测试技术领域,具体而言,涉及一种获取单元代码覆盖率的方法及装置。
背景技术
随着计算机技术的发展,大多数业务都可通过应用程序实现,在进行应用程序开发时,为了提升开发的应用程序的质量,需要对开发的应用程序的单元代码进行代码覆盖率测试,以便评估单元代码的开发质量。代码覆盖率作为衡量单元代码质量的准则,用于描述开发的应用程序中单元代码被测试的比例和程度,代码覆盖率越高,表示开发的单元代码的质量越高。
由于一个应用程序的开发,是由很多开发人员参与开发编辑,而代码覆盖率测试,是以应用程序的单元代码为单位进行测试,无法评估各开发人员在应用程序开发中的开发工作量以及开发质量。
发明内容
有鉴于此,本发明的目的在于提供获取单元代码覆盖率的方法及装置,以对各开发人员在应用程序开发中的开发质量进行评估。
第一方面,本发明实施例提供了获取单元代码覆盖率的方法,包括:
用于获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;
通过预先设置的流水线,构建所述目标应用程序的单元测试用例;
基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;
基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;
针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员,包括:
调用git的应用程序接口,依据提交的开发人员的信息进行查询,返回所述开发人员的代码文件名;
依据git的应用程序接口返回的文件名,从源代码中,提取与所述代码文件名相匹配的待匹配代码文件名,依据待匹配代码文件名确定开发人员。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员,包括:
遍历所述代码覆盖率测试结果中的覆盖代码,查询源代码,获取与该覆盖代码相匹配的单元代码;
依据获取的单元代码的标记,查询是否记录有该标记对应的开发人员,若有,将该开发人员的单元代码数加1,若没有,记录该开发人员,并将该开发人员的单元代码数设置为1。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率,包括:
计算单元代码数与提交的单元代码数的商,得到代码覆盖率。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率,包括:
依据匹配的单元代码,查询开发人员提交的单元代码,若匹配的单元代码对应提交的单元代码有多个,依据多个单元代码对该开发人员提交的单元代码数进行更新;
计算获取的匹配的单元代码数与更新的开发人员提交的单元代码数的商,得到该开发人员的代码覆盖率。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,在所述获取代码覆盖率测试结果之后,基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配之前,所述方法还包括:
调用预先设置的单元代码覆盖率查询工具,依据所述目标应用程序的名称和版本号进行查询,获取所述目标应用程序的代码覆盖率测试结果。
结合第一方面的第五种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述方法还包括:
依据所述目标应用程序的代码覆盖率测试结果中的覆盖代码,确定覆盖代码对应的所述目标应用程序的覆盖功能;
依据所述目标应用程序包含的功能以及所述覆盖功能,确定是否对所述单元测试用例进行调整。
第二方面,本发明实施例提供了获取单元代码覆盖率的装置,包括:
标记模块,用于获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;
测试用例构建模块,用于通过预先设置的流水线,构建所述目标应用程序的单元测试用例;
测试结果获取模块,用于基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;
开发人员定位模块,用于基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;
覆盖率细粒度模块,用于针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。
第三方面,本发明实施例提供了计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述的获取单元代码覆盖率的方法的步骤。
第四方面,本发明实施例提供了计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述的获取单元代码覆盖率的方法的步骤。
本发明实施例提供的获取单元代码覆盖率的方法及装置,包括:用于获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;通过预先设置的流水线,构建所述目标应用程序的单元测试用例;基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。这样,可以实现对各开发人员在应用程序开发中的开发质量进行评估。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例所提供的获取单元代码覆盖率的方法流程示意图;
图2示出了本发明实施例所提供的获取单元代码覆盖率的装置结构示意图;
图3为本申请实施例提供的一种计算机设备300的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种获取单元代码覆盖率的方法及装置,下面通过实施例进行描述。
图1示出了本发明实施例所提供的获取单元代码覆盖率的方法流程示意图。如图1所示,该方法包括:
步骤101,获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;
本发明实施例中,在进行应用程序开发时,由各开发人员进行分工合作,进行应用程序各功能模块的单元代码的开发设计,在开发设计好单元代码后,进行上传,依据上传的各开发人员的单元代码,进行编译。
本发明实施例中,作为一可选实施例,对各开发人员提交的单元代码进行标记,包括:
从提交的单元代码中,提取代码文件名,对该代码文件名进行开发人员信息标记。
本发明实施例中,每一代码文件名对应实现应用程序的一单元功能,包括有多行单元代码。每一应用程序对应一源代码,每一源代码以应用程序的名称进行标识。
步骤102,通过预先设置的流水线,构建所述目标应用程序的单元测试用例;
本发明实施例中,利用流水线(测试流程)构建单元测试用例,用于对应用程序的各功能进行测试,具体可参见相关技术文献,在此略去详述。
步骤103,基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;
本发明实施例中,作为一可选实施例,利用单元代码测试平台进行代码测试,单元代码测试平台可以通过并行的方式运行多个单元测试用例,从而基于构建的单元测试用例运行源代码,利用jacoco生成代码覆盖率测试结果。
步骤104,基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;
本发明实施例中,作为一可选实施例,在单元代码测试平台中设置单元代码覆盖率查询工具进行查询。因而,在获取代码覆盖率测试结果之后,基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配之前,该方法还包括:
调用预先设置的单元代码覆盖率查询工具,依据所述目标应用程序的名称和版本号进行查询,获取所述目标应用程序的代码覆盖率测试结果。
本发明实施例中,基于单元代码覆盖率查询工具进行查询搜索,例如,在单元代码覆盖率查询工具的开发人员单测数据查询界面,在系统名称搜索框内,输入待查询的应用程序的名称:FB-APPSVR,版本号搜索框内,输入版本号:20221027。
本发明实施例中,同一应用程序,可能会应用于不同的环境,对应有不同的源代码,因而,作为另一可选实施例,单元代码覆盖率查询工具还设置有环境搜索框,依据环境名称进行搜索,例如,在环境搜索框内,输入:FAT001。
本发明实施例中,基于应用程序名称和版本号进行查询,可以获取待查询应用程序的覆盖代码行。
本发明实施例中,作为一可选实施例,基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员,包括:
调用git的应用程序接口,依据提交的开发人员的信息进行查询,返回所述开发人员的代码文件名;
依据git的应用程序接口返回的文件名,从源代码中,提取与所述代码文件名相匹配的待匹配代码文件名,依据待匹配代码文件名确定开发人员。
本发明实施例中,调用git的应用程序接口,依据输入的开发人员的信息,从代码覆盖率测试结果中进行查询,获取标记有开发人员的代码文件,依据代码文件的代码文件名,从源代码中,获取与该代码文件名相匹配的代码文件。
本发明实施例中,还可以依据代码覆盖率测试结果中的每一覆盖代码,在源代码中进行查询,依据查询结果进行归类,从而确定代码覆盖率测试结果包含的开发人员以及开发人员对应的覆盖代码。因而,作为另一可选实施例,基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员,包括:
遍历所述代码覆盖率测试结果中的覆盖代码,查询源代码,获取与该覆盖代码相匹配的单元代码;
依据获取的单元代码的标记,查询是否记录有该标记对应的开发人员,若有,将该开发人员的单元代码数加1,若没有,记录该开发人员,并将该开发人员的单元代码数设置为1。
本发明实施例中,代码覆盖率测试结果中的覆盖代码,在源代码中,可能会存在一个或多个与该覆盖代码相匹配的单元代码,对应标记有一个或多个开发人员。若覆盖代码在源代码中对应有多个相匹配的单元代码,则分别将对应开发人员的单元代码数加1,从而得到开发人员对应的匹配的单元代码数。
步骤105,针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。
本发明实施例中,作为一可选实施例,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率,包括:
计算单元代码数与提交的单元代码数的商,得到代码覆盖率。
本发明实施例中,作为一可选实施例,利用下式计算增量代码覆盖率:
增量代码覆盖率=(总增量代码覆盖行/总增量代码行)*100%。
本发明实施例中,一开发人员开发的同一单元代码,可能会在代码文件名A中提交,也可能会在代码文件名B中提交,因而,作为另一可选实施例,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率,包括:
依据匹配的单元代码,查询开发人员提交的单元代码,若匹配的单元代码对应提交的单元代码有多个,依据多个单元代码对该开发人员提交的单元代码数进行更新;
计算获取的匹配的单元代码数与更新的开发人员提交的单元代码数的商,得到该开发人员的代码覆盖率。
本发明实施例中,依据去重处理后的开发人员提交的单元代码数,进行开发人员的代码覆盖率的计算,这样,可以提升代码覆盖率的计算精度。举例来说,某一开发人员提交的单元代码中,包含有10个代码文件名,总共有1000行,通过单元测试用例的测试,获取的代码覆盖率测试结果中,对应该开发人员的覆盖代码数(匹配的单元代码数)为800行,其中,800行的覆盖代码中,假设有10行覆盖代码分别对应10个代码文件名,即该10行覆盖代码中的每一行覆盖代码分别与10个代码文件名中的一单元代码相匹配,则对该开发人员提交的单元代码数(1000行)进行更新后,更新的开发人员提交的单元代码数为:1000-(10x10-10)=910,得到的该开发人员的代码覆盖率为:800/910,相对于:800/1000,更能反映该开发人员的实际代码覆盖情况。
本发明实施例中,作为一可选实施例,该方法还包括:
展示包含开发人员的代码覆盖率的查询结果。
本发明实施例中,用于展示开发人员的代码覆盖率的查询结果展示界面包括:应用程序、版本分支号、开发人员、新增行数、覆盖行数以及代码覆盖率。其中,新增行数是开发人员开发设计的单元代码行数,覆盖行数是该开发人员对应代码覆盖率测试结果中的覆盖代码行数。
本发明实施例中,作为另一可选实施例,该方法还包括:
依据各开发人员的代码覆盖率,确定代码平均覆盖率;
若代码平均覆盖率小于预先设置的覆盖率阈值,调整单元测试用例以增加对所述目标应用程序的测试功能。
本发明实施例中,若对单元代码进行测试得到的代码覆盖率较小,表明单元测试用例可能未覆盖应用程序的各主要功能,需要调整单元测试用例,使其能够覆盖应用程序的更多功能。
本发明实施例中,作为再一可选实施例,该方法还包括:
依据所述目标应用程序的代码覆盖率测试结果中的覆盖代码,确定覆盖代码对应的所述目标应用程序的覆盖功能;
依据所述目标应用程序包含的功能以及所述覆盖功能,确定是否对所述单元测试用例进行调整。
本发明实施例中,根据代码覆盖率对应的覆盖代码,确定单元测试用例对目标应用程序的功能的覆盖情况。若单元测试用例未覆盖到目标应用程序的全部功能或预先设定的功能,则依据覆盖功能的情况,针对性地增加单元测试用例中的测试功能,这样,可进一步提升单元测试用例能够覆盖的目标应用程序的功能数,进而提升应用程序测试的质量。
本发明实施例中,通过在编译的源代码中,对各开发人员提交的单元代码进行标记,从而基于标记的单元代码以及覆盖代码,统计每个开发人员的单元代码进行测试的代码增量覆盖率,即统计开发人员当前提交的增量单元代码中,通过单元测试用例被执行的单元代码量,基于被执行的单元代码量以及提交的增量单元代码量,对开发人员进行评估。能够准确评估各开发人员在应用程序开发中的开发工作量以及开发质量。
本发明实施例中,相对于现有只能统计每个应用程序版本的代码覆盖率情况,使得数据分析效率以及质量较低,无法准确获取每位开发人员编写单元测试的覆盖率情况,利用本发明实施例的方法,可以快速统计出每位开发人员的单元测试数据,使得数据更加细分,分析更加准确。进一步地,相对于现有需要人工进行统计数据,使得数据统计效率较低,同时还易引起统计出错,利用本发明实施例的方法,利用工具进行数据统计分析,一个应用程序各开发人员的单元代码覆盖率计算方法,可以节省0.5人天,一百个应用程序便可节省50人天,而且出错的机率几乎接近于0,数据统计速度更快,更加节省人力,分析效率更高。
图2示出了本发明实施例所提供的获取单元代码覆盖率的装置结构示意图。如图2所示,该装置包括:
标记模块201,用于获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;
本发明实施例中,作为一可选实施例,对各开发人员提交的单元代码进行标记,包括:
从提交的单元代码中,提取代码文件名,对该代码文件名进行开发人员信息标记。
测试用例构建模块202,用于通过预先设置的流水线,构建所述目标应用程序的单元测试用例;
测试结果获取模块203,用于基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;
本发明实施例中,作为一可选实施例,利用jacoco生成代码覆盖率测试结果。
开发人员定位模块204,用于基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;
本发明实施例中,作为一可选实施例,开发人员定位模块204,具体用于:
调用git的应用程序接口,依据提交的开发人员的信息进行查询,返回所述开发人员的代码文件名;
依据git的应用程序接口返回的文件名,从源代码中,提取与所述代码文件名相匹配的待匹配代码文件名,依据待匹配代码文件名确定开发人员。
本发明实施例中,作为另一可选实施例,开发人员定位模块204,具体用于:
遍历所述代码覆盖率测试结果中的覆盖代码,查询源代码,获取与该覆盖代码相匹配的单元代码;
依据获取的单元代码的标记,查询是否记录有该标记对应的开发人员,若有,将该开发人员的单元代码数加1,若没有,记录该开发人员,并将该开发人员的单元代码数设置为1。
本发明实施例中,作为再一可选实施例,开发人员定位模块204,具体用于:
调用预先设置的单元代码覆盖率查询工具,依据所述目标应用程序的名称和版本号进行查询,获取所述目标应用程序的代码覆盖率测试结果。
覆盖率细粒度模块205,用于针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。
本发明实施例中,作为一可选实施例,覆盖率细粒度模块205,具体用于:
计算单元代码数与提交的单元代码数的商,得到代码覆盖率。
本发明实施例中,作为另一可选实施例,覆盖率细粒度模块205,具体用于:
依据匹配的单元代码,查询开发人员提交的单元代码,若匹配的单元代码对应提交的单元代码有多个,依据多个单元代码对该开发人员提交的单元代码数进行更新;
计算获取的匹配的单元代码数与更新的开发人员提交的单元代码数的商,得到该开发人员的代码覆盖率。
本发明实施例中,作为一可选实施例,该装置还包括:
测试用例调整模块(图中未示出),用于依据所述目标应用程序的代码覆盖率测试结果中的覆盖代码,确定覆盖代码对应的所述目标应用程序的覆盖功能;
依据所述目标应用程序包含的功能以及所述覆盖功能,确定是否对所述单元测试用例进行调整。
本发明实施例中,作为另一可选实施例,该装置还包括:
展示模块,用于展示包含开发人员的代码覆盖率的查询结果。
本发明实施例中,作为一可选实施例,查询结果展示界面包括:应用程序、版本分支号、开发人员、新增行数、覆盖行数、代码覆盖率以及总代码覆盖率。
本发明实施例中,作为再一可选实施例,该装置还包括:
测试功能扩展模块,用于依据各开发人员的代码覆盖率,确定代码平均覆盖率;
若代码平均覆盖率小于预先设置的覆盖率阈值,调整单元测试用例以增加对所述目标应用程序的测试功能。
如图3所示,本申请一实施例提供了一种计算机设备300,用于执行图1中的获取单元代码覆盖率的方法,该设备包括存储器301、与存储器301通过总线相连的处理器302及存储在该存储器301上并可在该处理器302上运行的计算机程序,其中,上述处理器302执行上述计算机程序时实现上述获取单元代码覆盖率的方法的步骤。
具体地,上述存储器301和处理器302能够为通用的存储器和处理器,这里不做具体限定,当处理器302运行存储器301存储的计算机程序时,能够执行上述获取单元代码覆盖率的方法。
对应于图1中的获取单元代码覆盖率的方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述获取单元代码覆盖率的方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述获取单元代码覆盖率的方法。
应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种获取单元代码覆盖率的方法,其特征在于,包括:
获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;
通过预先设置的流水线,构建所述目标应用程序的单元测试用例;
基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;
基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;
针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。
2.根据权利要求1所述的方法,其特征在于,所述基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员,包括:
调用git的应用程序接口,依据提交的开发人员的信息进行查询,返回所述开发人员的代码文件名;
依据git的应用程序接口返回的文件名,从源代码中,提取与所述代码文件名相匹配的待匹配代码文件名,依据待匹配代码文件名确定开发人员。
3.根据权利要求1所述的方法,其特征在于,所述基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员,包括:
遍历所述代码覆盖率测试结果中的覆盖代码,查询源代码,获取与该覆盖代码相匹配的单元代码;
依据获取的单元代码的标记,查询是否记录有该标记对应的开发人员,若有,将该开发人员的单元代码数加1,若没有,记录该开发人员,并将该开发人员的单元代码数设置为1。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率,包括:
计算单元代码数与提交的单元代码数的商,得到代码覆盖率。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率,包括:
依据匹配的单元代码,查询开发人员提交的单元代码,若匹配的单元代码对应提交的单元代码有多个,依据多个单元代码对该开发人员提交的单元代码数进行更新;
计算获取的匹配的单元代码数与更新的开发人员提交的单元代码数的商,得到该开发人员的代码覆盖率。
6.根据权利要求1至3任一项所述的方法,其特征在于,在所述获取代码覆盖率测试结果之后,基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配之前,所述方法还包括:
调用预先设置的单元代码覆盖率查询工具,依据所述目标应用程序的名称和版本号进行查询,获取所述目标应用程序的代码覆盖率测试结果。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
依据所述目标应用程序的代码覆盖率测试结果中的覆盖代码,确定覆盖代码对应的所述目标应用程序的覆盖功能;
依据所述目标应用程序包含的功能以及所述覆盖功能,确定是否对所述单元测试用例进行调整。
8.一种获取单元代码覆盖率的装置,其特征在于,包括:
标记模块,用于获取各开发人员提交的针对目标应用程序的单元代码,编译为所述目标应用程序的源代码,在所述源代码中,对各开发人员提交的单元代码进行标记;
测试用例构建模块,用于通过预先设置的流水线,构建所述目标应用程序的单元测试用例;
测试结果获取模块,用于基于所述单元测试用例,对所述源代码进行代码测试,获取代码覆盖率测试结果;
开发人员定位模块,用于基于所述代码覆盖率测试结果中的每一覆盖代码,与所述源代码进行匹配,获取匹配的源代码中标记的单元代码对应的开发人员;
覆盖率细粒度模块,用于针对每一开发人员,依据获取的匹配的单元代码数以及该开发人员提交的单元代码数,计算该开发人员的代码覆盖率。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一项所述的获取单元代码覆盖率的方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一项所述的获取单元代码覆盖率的方法的步骤。
CN202310313437.XA 2023-03-27 2023-03-27 一种获取单元代码覆盖率的方法及装置 Pending CN116303064A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310313437.XA CN116303064A (zh) 2023-03-27 2023-03-27 一种获取单元代码覆盖率的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310313437.XA CN116303064A (zh) 2023-03-27 2023-03-27 一种获取单元代码覆盖率的方法及装置

Publications (1)

Publication Number Publication Date
CN116303064A true CN116303064A (zh) 2023-06-23

Family

ID=86803043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310313437.XA Pending CN116303064A (zh) 2023-03-27 2023-03-27 一种获取单元代码覆盖率的方法及装置

Country Status (1)

Country Link
CN (1) CN116303064A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991751A (zh) * 2023-09-28 2023-11-03 英诺达(成都)电子科技有限公司 代码测试方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116991751A (zh) * 2023-09-28 2023-11-03 英诺达(成都)电子科技有限公司 代码测试方法、装置、电子设备及存储介质
CN116991751B (zh) * 2023-09-28 2023-12-22 英诺达(成都)电子科技有限公司 代码测试方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US9268665B2 (en) System and method for identifying fault prone computer code files
CN106780045A (zh) 保单信息批改方法和装置
CN116303064A (zh) 一种获取单元代码覆盖率的方法及装置
CN111191797A (zh) 信息处理方法、装置、电子设备及存储介质
Saifullah et al. Learning from examples to find fully qualified names of api elements in code snippets
CN106970903B (zh) 物流系统中地址信息的处理方法及装置
CN113505117A (zh) 基于数据指标的数据质量评估方法、装置、设备及介质
CN111581235B (zh) 识别常见关联关系的方法及系统
CN109144999B (zh) 一种数据定位方法、装置及存储介质、程序产品
CN113010550B (zh) 结构化数据的批处理对象生成、批处理方法和装置
CN113407226B (zh) 组件信息的管理方法、装置和电子设备
CN113254352B (zh) 测试案例的测试方法、装置、设备及存储介质
CN114926082A (zh) 基于人工智能的数据波动预警方法及相关设备
CN111881382B (zh) 由计算机系统实现的信息显示方法和装置、系统和介质
CN113868137A (zh) 埋点数据的处理方法、装置、系统和服务器
CN114741276A (zh) 国产操作系统测试用例的复用方法和装置
CN112613894A (zh) 一种关联源代码和制品的方法及装置
Nakamura et al. Use of approximate inference in an index of completeness of biological inventories
CN112540913B (zh) 一种代码覆盖率确定的方法、系统、设备及可读存储介质
CN114116729B (zh) 一种测试数据的处理方法和设备
JP2004280295A (ja) ソフトウェア開発プロセス管理支援システム
EP4404067A1 (en) System and method to measure and verify data and control coupling between software components without code instrumentation
CN111111207B (zh) 游戏数据的处理方法、装置、终端设备及介质
CN116955196A (zh) 测试方法、装置及设备
CN116737573A (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