CN116521536A - 一种代码覆盖率确定方法、装置、电子设备及存储介质 - Google Patents

一种代码覆盖率确定方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116521536A
CN116521536A CN202310429855.5A CN202310429855A CN116521536A CN 116521536 A CN116521536 A CN 116521536A CN 202310429855 A CN202310429855 A CN 202310429855A CN 116521536 A CN116521536 A CN 116521536A
Authority
CN
China
Prior art keywords
information
code
coverage rate
determining
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
CN202310429855.5A
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.)
Agricultural Bank of China
Original Assignee
Agricultural Bank of China
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 Agricultural Bank of China filed Critical Agricultural Bank of China
Priority to CN202310429855.5A priority Critical patent/CN116521536A/zh
Publication of CN116521536A publication Critical patent/CN116521536A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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

本发明公开了一种代码覆盖率确定方法、装置、电子设备及存储介质。所述代码覆盖率确定方法,应用于集成在电子设备上的团队基础服务器TFS,所述方法包括:确定输入项信息,所述输入项信息包括覆盖率确定插件所需输入的信息;部署待测代码的测试环境,并对所述待测代码进行代码覆盖率测试;根据所述输入项信息,通过所述覆盖率确定插件确定所述待测代码的代码覆盖率信息。上述技术方案,无需通过流水线配置多个步骤,再基于所配置的多个步骤确定代码覆盖率信息,而是通过覆盖率确定插件即可实现代码覆盖率的自动化确定,提高了确定代码覆盖率的便捷性。

Description

一种代码覆盖率确定方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及测试技术领域,尤其涉及一种代码覆盖率确定方法、装置、电子设备及存储介质。
背景技术
在对系统进行测试时,需要确定测试案例的代码覆盖率,如全量代码覆盖率和增量代码覆盖率,进而衡量测试案例设计的全面性和执行的充分性。
现有技术中,可以借助代码覆盖率的测试工具,结合团队基础服务器(TeamFoundation Server,TFS)的多个现有插件来确定测试案例的代码覆盖率,通过流水线配置多个步骤,再基于所配置的多个步骤生成测试案例的代码覆盖率报告。
然而,当确定代码覆盖率的应用环境发生变化时,需要重新对流水线进行部署,因此需要重新通过流水线配置多个步骤来确定代码覆盖率,且对测试人员的技术能力要求较高。故,如何提高确定代码覆盖率的便捷性是当前亟待解决的技术问题。
发明内容
本发明提供了一种代码覆盖率确定方法、装置、电子设备及存储介质,通过覆盖率确定插件即可实现代码覆盖率的自动化确定,提高了确定代码覆盖率的便捷性。
第一方面,本发明实施例提供了一种代码覆盖率确定方法,应用于集成在电子设备上的团队基础服务器TFS,所述方法包括:
确定输入项信息,所述输入项信息包括覆盖率确定插件所需输入的信息;
部署待测代码的测试环境,并对所述待测代码进行代码覆盖率测试;
根据所述输入项信息,通过所述覆盖率确定插件确定所述待测代码的代码覆盖率信息。
第二方面,本发明实施例提供了一种代码覆盖率确定装置,包括:
第一确定模块,用于确定输入项信息,所述输入项信息包括覆盖率确定插件所需输入的信息;
第一测试模块,用于部署待测代码的测试环境,并对所述待测代码进行代码覆盖率测试;
第二确定模块,用于根据所述输入项信息,通过所述覆盖率确定插件确定所述待测代码的代码覆盖率信息。
第三方面,本发明实施例提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的方法。
本发明实施例的技术方案,首先确定输入项信息,输入项信息包括覆盖率确定插件所需输入的信息;然后部署待测代码的测试环境,并对待测代码进行代码覆盖率测试;最后根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息。上述技术方案,无需通过流水线配置多个步骤,再基于所配置的多个步骤确定代码覆盖率信息,而是通过覆盖率确定插件即可实现代码覆盖率的自动化确定,提高了确定代码覆盖率的便捷性。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种代码覆盖率确定方法的流程图;
图2是根据本发明实施例二提供的一种代码覆盖率确定方法的流程图;
图3是根据本发明实施例三提供的一种基于TFS的系统测试覆盖率的方法的流程图;
图4是根据本发明实施例四提供的一种代码覆盖率确定装置的结构示意图;
图5示出了可以用来实施本发明的实施例的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
可以理解的是,在使用本发明各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围以及使用场景等告知用户并获得用户的授权。
实施例一
图1是根据本发明实施例一提供的一种代码覆盖率确定方法的流程图,本实施例可适用于对待测代码的代码覆盖率进行确定的情况,该方法可以由代码覆盖率确定装置来执行,该代码覆盖率确定装置可以采用软件和/或硬件的形式实现,并集成在电子设备中。进一步的,电子设备包括但不限定于:计算机、笔记本电脑、智能手机、服务器等。
如图1所示,一种代码覆盖率确定方法,应用于集成在电子设备上的团队基础服务器TFS,该方法包括:
S110、确定输入项信息,输入项信息包括覆盖率确定插件所需输入的信息。
其中,覆盖率确定插件可以是指确定待测代码的代码覆盖率的插件,覆盖率确定插件可以是根据实际应用需要设定的插件,覆盖率确定插件可以集成在TFS系统中,在需要确定待测代码的代码覆盖率信息时,TFS系统可以通过覆盖率确定插件来确定待测代码的代码覆盖率信息。
在本发明实施例中,无需通过流水线配置多个步骤,再基于所配置的多个步骤确定代码覆盖率信息,而是通过覆盖率确定插件即可确定待测代码的代码覆盖率信息。覆盖率确定插件对外只需必要的输入和输出,覆盖率确定插件所需输入的信息即为本发明实施例中的输入项信息,覆盖率确定插件所输出的信息即为本发明实施例中的代码覆盖率信息。
对输入项信息不作限定,可以根据实际应用需要确定输入项信息。输入项信息包括覆盖率确定插件所需输入的信息,即通过确定输入项信息并将输入项信息输入覆盖率确定插件,即可确定输入项信息对应的代码覆盖率信息,实现代码覆盖率信息的按需生成或者重新生成。
在TFS系统内可以有确定输入项信息的界面,在该界面用户可以通过人机交互装置(如鼠标或键盘等)实现输入项信息的确定,如可以响应于用户在该界面的点击或选择操作,将用户在该界面通过点击或选择操作所触发的信息确定为输入项信息。
在一个实施例中,通过确定输入项信息,可以确定最终生成的代码覆盖率信息在TFS系统中的存储路径;还可以确定待测代码对应的测试流水线部署在云上;还可以确定最终生成的代码覆盖率信息对应当前部署的流水线,或对应当前部署之前部署的流水线等,具体可以根据实际应用需要设定TFS系统内确定输入项信息的界面所显示的内容,以便用户可以通过该界面按需选择所需确定的输入项信息。
S120、部署待测代码的测试环境,并对待测代码进行代码覆盖率测试。
在确定输入项信息之前,可以先进行待测代码的测试环境部署的准备工作。即在实际应用中,可以先进行待测代码的测试环境部署的准备工作,然后执行确定输入项信息的操作,再根据待测代码的测试环境部署的准备工作,执行待测代码的测试环境的部署。
对于待测代码的测试环境部署的准备工作,具体可以分为以下步骤:
首先进行组织级环境准备,可以将网络附属存储(Network Attached Storage,NAS)挂载至TFS系统对应的云上,再将代码覆盖率确定工具(如Jacoco)安装至NAS上;准备构建机并安装,以便后续通过覆盖率确定插件与构建机实现信息交互,进而通过覆盖率确定插件确定待测代码的代码覆盖率信息;然后由开发人员进行测试部署的修改,以便后续在测试环境部署时可以挂载NAS并启动代码覆盖率确定工具(如Jacoco)。
其中,网络附属存储可以理解为一种特殊的数据存储服务器,网络附属存储可以连接至网络,具备资料存储的功能,因此也称为“网络存储器”。网络附属存储可以以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而可以释放带宽,提高性能。
对待测代码进行代码覆盖率测试,可以是先将NAS挂载在pod上,并启动代码覆盖率确定工具以监测测试执行,再对待测代码进行代码覆盖率测试。
S130、根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息。
代码覆盖率信息可以是指待测代码的代码覆盖率所指示的信息,通过代码覆盖率信息可以反映待测代码设计的全面性和执行的充分性。代码覆盖率信息可以包括待测代码的全量代码覆盖率和增量代码覆盖率,还可以包括基于待测代码的全量代码覆盖率生成的全量代码覆盖率报告,或基于待测代码的增量代码覆盖率生成的增量代码覆盖率报告。
其中,待测代码的全量代码覆盖率可以是指测试用例(即待测代码)执行对待测系统(如TFS系统)或模块全部代码的覆盖程度,主要保证历史已覆盖的代码不因为新增代码而影响原有案例的执行。增量代码覆盖率可以是预先指定待测系统或模块的基线版本代码(即比较代码,可以是当前生产版本),当前待测代码对应的版本与基线版本代码相比,增加或修改的代码为增量代码,测试用例执行对这些增量代码的覆盖程度为增量代码覆盖率,增量代码覆盖率可以用于衡量本次代码修改是否全部都被执行过。
根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息的方式不作限定,如根据输入项信息,通过构建机获取报告中间文件(即.exec文件)、待测代码和字节码文件(即.class文件),通过构建机以报告中间文件、待测代码和字节码文件作为代码覆盖率确定工具的输入源,运行代码覆盖率确定工具以确定待测代码的代码覆盖率信息,最终在覆盖率确定插件内部与构建机实现信息交互,进而通过覆盖率确定插件确定待测代码的代码覆盖率信息。其中,构建机可以看作覆盖率确定插件的一部分,且构建机可以实现覆盖率确定插件所应实现的主要功能。
本发明实施例的技术方案,首先确定输入项信息,输入项信息包括覆盖率确定插件所需输入的信息;然后部署待测代码的测试环境,并对待测代码进行代码覆盖率测试;最后根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息。上述技术方案,无需通过流水线配置多个步骤,再基于所配置的多个步骤确定代码覆盖率信息,而是通过覆盖率确定插件即可实现代码覆盖率的自动化确定,提高了确定代码覆盖率的便捷性。
在一个实施例中,该方法还包括:
显示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告;
显示代码覆盖率测试的执行情况,执行情况包括测试结果和覆盖率确定插件运行时产生的日志;
其中,测试结果包括指示代码覆盖率测试成功或测试失败的结果。
全量代码覆盖率报告可以是指基于待测代码的全量代码覆盖率生成的报告,全量代码覆盖率报告可以指示待测代码的全量代码覆盖率,如全量代码覆盖率报告可以指示待测代码的行覆盖率、未覆盖的行数或覆盖的行数等信息。增量代码覆盖率报告可以是指基于待测代码的增量代码覆盖率生成的报告,增量代码覆盖率报告可以指示待测代码的增量代码覆盖率。
代码覆盖率测试的执行情况可以包括测试结果和覆盖率确定插件运行时产生的日志,其中,覆盖率确定插件运行时产生的日志可以反映覆盖率确定插件运行的情况,测试结果可以反映代码覆盖率测试成功或测试失败的结果。
在TFS系统内可以设定一个显示界面,该显示界面用于显示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告,和/或显示代码覆盖率测试的执行情况,以便用户可以通过该显示界面获取全量代码覆盖率报告、增量代码覆盖率报告和/或代码覆盖率测试的执行情况。其中,显示界面可以根据实际应用需要设定,具体不作限定。
实施例二
图2是根据本发明实施例二提供的一种代码覆盖率确定方法的流程图,本实施例是在上述实施例一的基础上,对确定输入项信息,以及根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息的进一步细化,如图2所示,该方法包括:
S111、响应于输入项信息确定界面的输入项信息确定操作,确定输入项信息。
其中,输入项信息确定界面为TFS内的界面;输入项信息确定操作为用于确定输入项信息的操作。
输入项信息确定界面可以是指TFS内用于确定输入项信息的界面,在输入项信息确定界面可以显示用于确定输入项信息的内容;输入项信息确定操作为用于确定输入项信息的操作,如输入项信息确定操作为用户在输入项信息确定界面内对复选框或下拉框的点击或选择操作,或用户在输入项信息确定界面内对输入框的输入操作等。
在输入项信息确定界面可以根据用于确定输入项信息的内容,设定一个或多个复选框、输入框或下拉框等,用户可以通过人机交互装置在输入项信息确定界面内实现输入项信息的确定,如可以响应于用户在输入项信息确定界面内对复选框或下拉框的点击或选择操作,或响应于用户在输入项信息确定界面内对输入框的输入操作,进而确定输入项信息。
进一步的,输入项信息至少包括:
流水线部署信息,流水线部署信息指示确定代码覆盖率信息所对应流水线为当前部署的流水线,或指示确定代码覆盖率信息所对应流水线为当前部署之前部署的流水线;
部署类型信息,部署类型信息指示所部署流水线的类型为云端部署;
报告构建信息,报告构建信息指示代码覆盖率信息对应单次部署的流水线和/或多次部署的流水线;
云端信息,云端信息指示与TFS所对应云端的信息;
文件路径信息,文件路径信息指示覆盖率需求信息的存储路径;
比较代码信息,比较代码信息指示用于确定代码覆盖率信息所包括增量代码覆盖率报告的比较代码的信息;
报告存储路径信息,报告存储路径信息指示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告的存储路径。
其中,流水线部署信息指示需要确定当前部署的流水线(即本次部署的流水线)对应的代码覆盖率信息,或指示需要确定当前部署之前部署的流水线(即上次部署的流水线)对应的代码覆盖率信息。流水线即为用于确定待测代码的代码覆盖率信息的流水线。
部署类型信息指示所部署流水线的类型为云端部署,即在TFS系统对应的云上部署流水线。
报告构建信息指示所需构建的报告为通过单次部署的流水线确定的报告(即单次构建报告),或指示所需构建的报告为通过多次部署的流水线确定的报告(即合并报告),可以在输入项信息确定界面设置复选框使用户能够选择单次构建报告或合并报告,或单次构建报告和合并报告同时选择。其中,报告可以是指代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告。
云端信息可以指示云上部署Kubernetes服务、命名空间(即Yaml中的namespace的值)、应用程序(Application,App)标签(即Yaml中app的值)。其中,App标签由用户通过人机交互装置在输入项信息确定界面输入。
文件路径信息指示覆盖率需求信息的存储路径,如文件路径信息指示报告中间文件(即.exec文件)、待测代码(即源代码)和字节码文件(即.class文件)在TFS系统中的存储路径,上述存储路径可以由用户通过人机交互装置在输入项信息确定界面输入。
比较代码信息指示用于确定代码覆盖率信息所包括增量代码覆盖率报告的比较代码的信息,如比较代码信息可以包括比较分支名称(即比较代码的名称)和比较代码路径(即比较代码在TFS系统中的存储路径),比较分支名称和比较代码路径可以由用户通过人机交互装置在输入项信息确定界面输入。其中,比较代码为用于与待测代码进行比较以确定增量代码覆盖率的代码,如比较代码可以是待测代码的基线版本代码。
报告存储路径信息指示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告的存储路径,即全量代码覆盖率报告和增量代码覆盖率报告在TFS系统中的存储路径。
表1为用于确定输入项信息的内容,该表为对输入项信息的示例性说明。
表1用于确定输入项信息的内容
其中,序号2对应的输入项对应部署类型信息;序号3对应的输入项对应流水线部署信息;序号4对应的输入项对应报告构建信息;序号5、6和7对应的输入项对应云端信息;序号8、9和10对应的输入项对应文件路径信息;序号11和12对应的输入项对应比较代码信息;序号13和14对应的输入项对应报告存储路径信息。
在一个实施例中,输入项信息还可以包括显示名称(对应表1中序号1对应的输入项),显示名称即为TFS系统内所显示的覆盖率确定插件对应的名称,显示名称可以是用户在TFS系统内输入的名称,还可以是默认设定好的名称,如“系统测试报告生成”,具体不作限定。
S120、部署待测代码的测试环境,并对待测代码进行代码覆盖率测试。
S131、在获取到触发信息时,通过覆盖率确定插件获取覆盖率需求信息,覆盖率需求信息包括确定代码覆盖率信息所需的信息。
触发信息包括触发确定代码覆盖率信息的操作的信息,对触发信息不作限定,只要能够通过触发信息触发确定代码覆盖率信息的操作即可。如触发信息可以是响应于用户点击生成报告控件的信息,还可以是触发定时生成报告的信息,其中,生成报告控件可以显示在TFS系统内的界面,以便用户在该界面内点击生成报告控件,进而触发确定代码覆盖率信息的操作;可以预先设定定时生成报告,在到达设定时间时即可自动触发确定代码覆盖率信息的操作;上述报告可以是指代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告。
在获取到触发信息时,需执行确定代码覆盖率信息的操作,则可以通过覆盖率确定插件获取覆盖率需求信息,如通过覆盖率确定插件从所部署的待测代码的测试环境和/或TFS系统的本地存储中获取覆盖率需求信息。
进一步的,通过覆盖率确定插件获取覆盖率需求信息,包括:
通过覆盖率确定插件,从所部署的待测代码的测试环境中获取报告中间文件;
通过覆盖率确定插件,获取待测代码;
通过覆盖率确定插件,对待测代码进行编译得到字节码文件;
其中,覆盖率需求信息包括确定代码覆盖率信息所需的信息,覆盖率需求信息包括报告中间文件(即.exec文件)、待测代码和字节码文件(即.class文件)。
在TFS系统中,可以将NAS挂载至pod上,通过pod从所部署的待测代码的测试环境中获取报告中间文件,再由pod将所获取的报告中间文件传输至构建机;通过构建机从TFS系统的本地存储中获取待测代码;通过构建机对待测代码进行编译得到字节码文件;最终在覆盖率确定插件内部与构建机实现信息交互,进而通过覆盖率确定插件获取覆盖率需求信息。其中,构建机可以看作覆盖率确定插件的一部分,且构建机可以实现覆盖率确定插件所应实现的主要功能。
在一个实施例中,可以通过覆盖率确定插件结合输入项信息获取覆盖率需求信息,如通过覆盖率确定插件结合输入项信息,可以确定待测代码在TFS系统的本地存储中的路径,进而可以使覆盖率确定插件能够通过该路径获取待测代码。
S132、通过覆盖率确定插件,根据覆盖率需求信息和输入项信息确定待测代码的代码覆盖率信息。
通过覆盖率确定插件,根据覆盖率需求信息和输入项信息确定待测代码的代码覆盖率信息的方式不作限定,如根据输入项信息可以确定覆盖率确定插件所需输入的信息,例如最终所需生成的代码覆盖率信息应对应当前部署的流水线,或对应当前部署之前部署的流水线等;通过覆盖率确定插件,以输入项信息所指示的覆盖率确定插件所需输入的信息为基础,以覆盖率需求信息作为代码覆盖率确定工具的输入源,运行代码覆盖率确定工具,进而确定待测代码的代码覆盖率信息。
进一步的,通过覆盖率确定插件,根据覆盖率需求信息和输入项信息确定待测代码的代码覆盖率信息,包括:
通过覆盖率确定插件,根据覆盖率需求信息和输入项信息运行代码覆盖率确定工具;
将运行代码覆盖率确定工具得到的信息,确定为待测代码的代码覆盖率信息。
通过覆盖率确定插件,可以以输入项信息所指示的覆盖率确定插件所需输入的信息为基础,以覆盖率需求信息作为Jacoco的输入源,运行Jacoco进而确定待测代码的代码覆盖率信息所包括的全量代码覆盖率报告;再通过覆盖率确定插件运行diff-cover进而确定待测代码的代码覆盖率信息所包括的增量代码覆盖率报告。其中,Jacoco和diff-cover可以为代码覆盖率确定工具,在实际应用中还可以通过其他代码覆盖率确定工具确定待测代码的代码覆盖率信息,具体不作限定。
本发明实施例的技术方案,通过响应于输入项信息确定界面的输入项信息确定操作,确定输入项信息;部署待测代码的测试环境,并对待测代码进行代码覆盖率测试;在获取到触发信息时,通过覆盖率确定插件获取覆盖率需求信息;通过覆盖率确定插件,根据覆盖率需求信息和输入项信息确定待测代码的代码覆盖率信息。上述技术方案,无需通过流水线配置多个步骤,再基于所配置的多个步骤确定代码覆盖率信息,而是通过覆盖率确定插件即可实现代码覆盖率的自动化确定,提高了确定代码覆盖率的便捷性。
实施例三
本发明实施例是对上述各实施例提供的一种代码覆盖率确定方法的示例性说明。本发明实施例提供了一种基于TFS的系统测试覆盖率的方法,通过系统测试代码覆盖率插件(即覆盖率确定插件),在DevOps流水线中实现自动监测系统测试执行情况并生成代码覆盖全量报告(即全量代码覆盖率报告)和增量报告(即增量代码覆盖率报告)功能,辅助测试人员发现案例设计盲点,提升系统测试充分性。
系统测试代码覆盖率流水线实现在部署完成后,针对当前测试部署按需生成代码覆盖全量和增量报告,系统测试代码覆盖全量报告和增量报告可在TFS中进行查看;支持多pod合并功能;系统测试全量报告和增量报告的生成功能使用插件来完成。
图3是根据本发明实施例三提供的一种基于TFS的系统测试覆盖率的方法的流程图,具体如下:
首先进行组织级环境准备,将网络附属存储NAS挂载至TFS系统对应的云上,再在NAS上安装Jacocoagent;准备构建机并安装TFSAgent/Jdk/diff-cover/git/Python/Jacococli;
其次由开发人员进行测试部署的修改,以便后续在测试环境部署时可以挂载NAS并启动Jacoco;
确定输入项信息;
test流水线部署测试环境,POD挂载NAS,启动Jacoco监测测试执行,系统测试(即部署待测代码的测试环境,并对待测代码进行代码覆盖率测试);
手动点击生成报告;
通过系统测试报告生成插件(即覆盖率确定插件)生成全量报告和增量报告(即根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息)。
其中,在系统测试报告生成插件内部可以实现确定待测代码的代码覆盖率信息的操作,具体的:
在TFS系统中,可以将NAS挂载至pod上,由pod生成.exec文件并将.exec文件传送至构建机;
通过构建机从TFS系统的本地存储中获取源代码(即待测代码);
通过构建机生成.class文件;
以.exec、.class和源代码为输入源,通过构建机运行Jacoco生成全量报告;
通过构建机运行diff-cover生成增量报告;
在TFS系统内查看报告(即显示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告;显示代码覆盖率测试的执行情况,执行情况包括测试结果和覆盖率确定插件运行时产生的日志);
流程结束。
本发明实施例的技术方案,仅使用一个插件即可完成系统测试代码覆盖全量和增量报告生成的功能,所有中间步骤均集成在插件中,对外只暴露必要的输入和输出,进行了最大化的简化,使用门槛较低,易用性强。
实施例四
图4是根据本发明实施例四提供的一种代码覆盖率确定装置的结构示意图,本实施例可适用于对待测代码的代码覆盖率进行确定的情况。如图4所示,该装置的具体结构包括:
第一确定模块21,用于确定输入项信息,输入项信息包括覆盖率确定插件所需输入的信息;
第一测试模块22,用于部署待测代码的测试环境,并对待测代码进行代码覆盖率测试;
第二确定模块23,用于根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息。
本实施例提供的代码覆盖率确定装置,首先通过第一确定模块确定输入项信息,输入项信息包括覆盖率确定插件所需输入的信息;然后通过第一测试模块部署待测代码的测试环境,并对待测代码进行代码覆盖率测试;最后通过第二确定模块根据输入项信息,通过覆盖率确定插件确定待测代码的代码覆盖率信息。
进一步的,第二确定模块23具体用于:
在获取到触发信息时,通过覆盖率确定插件获取覆盖率需求信息,覆盖率需求信息包括确定代码覆盖率信息所需的信息;
通过覆盖率确定插件,根据覆盖率需求信息和输入项信息确定待测代码的代码覆盖率信息;
其中,触发信息包括触发确定代码覆盖率信息的操作的信息。
进一步的,第二确定模块23具体用于:
通过覆盖率确定插件,从所部署的待测代码的测试环境中获取报告中间文件;
通过覆盖率确定插件,获取待测代码;
通过覆盖率确定插件,对待测代码进行编译得到字节码文件;
其中,覆盖率需求信息包括报告中间文件、待测代码和字节码文件。
进一步的,第二确定模块23具体用于:
通过覆盖率确定插件,根据覆盖率需求信息和输入项信息运行代码覆盖率确定工具;
将运行代码覆盖率确定工具得到的信息,确定为待测代码的代码覆盖率信息。
进一步的,第一确定模块21具体用于:
响应于输入项信息确定界面的输入项信息确定操作,确定输入项信息;
其中,输入项信息确定界面为TFS内的界面;输入项信息确定操作为用于确定输入项信息的操作。
进一步的,输入项信息至少包括:
流水线部署信息,流水线部署信息指示确定代码覆盖率信息所对应流水线为当前部署的流水线,或指示确定代码覆盖率信息所对应流水线为当前部署之前部署的流水线;
部署类型信息,部署类型信息指示所部署流水线的类型为云端部署;
报告构建信息,报告构建信息指示代码覆盖率信息对应单次部署的流水线和/或多次部署的流水线;
云端信息,云端信息指示与TFS所对应云端的信息;
文件路径信息,文件路径信息指示覆盖率需求信息的存储路径;
比较代码信息,比较代码信息指示用于确定代码覆盖率信息所包括增量代码覆盖率报告的比较代码的信息;
报告存储路径信息,报告存储路径信息指示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告的存储路径。
进一步的,该装置还包括:
第一显示模块,用于显示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告;
第二显示模块,用于显示代码覆盖率测试的执行情况,执行情况包括测试结果和覆盖率确定插件运行时产生的日志;
其中,测试结果包括指示代码覆盖率测试成功或测试失败的结果。
本发明实施例所提供的代码覆盖率确定装置可执行本发明任意实施例所提供的代码覆盖率确定方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5示出了可以用来实施本发明的实施例的电子设备的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如代码覆盖率确定方法。
在一些实施例中,代码覆盖率确定方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的代码覆盖率确定方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行代码覆盖率确定方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种代码覆盖率确定方法,其特征在于,应用于集成在电子设备上的团队基础服务器TFS,所述方法包括:
确定输入项信息,所述输入项信息包括覆盖率确定插件所需输入的信息;
部署待测代码的测试环境,并对所述待测代码进行代码覆盖率测试;
根据所述输入项信息,通过所述覆盖率确定插件确定所述待测代码的代码覆盖率信息。
2.根据权利要求1所述的方法,其特征在于,根据所述输入项信息,通过所述覆盖率确定插件确定所述待测代码的代码覆盖率信息,包括:
在获取到触发信息时,通过所述覆盖率确定插件获取覆盖率需求信息,所述覆盖率需求信息包括确定所述代码覆盖率信息所需的信息;
通过所述覆盖率确定插件,根据所述覆盖率需求信息和所述输入项信息确定所述待测代码的代码覆盖率信息;
其中,所述触发信息包括触发确定代码覆盖率信息的操作的信息。
3.根据权利要求2所述的方法,其特征在于,通过所述覆盖率确定插件获取覆盖率需求信息,包括:
通过所述覆盖率确定插件,从所部署的待测代码的测试环境中获取报告中间文件;
通过所述覆盖率确定插件,获取所述待测代码;
通过所述覆盖率确定插件,对所述待测代码进行编译得到字节码文件;
其中,所述覆盖率需求信息包括所述报告中间文件、所述待测代码和所述字节码文件。
4.根据权利要求2所述的方法,其特征在于,通过所述覆盖率确定插件,根据所述覆盖率需求信息和所述输入项信息确定所述待测代码的代码覆盖率信息,包括:
通过所述覆盖率确定插件,根据所述覆盖率需求信息和所述输入项信息运行代码覆盖率确定工具;
将运行所述代码覆盖率确定工具得到的信息,确定为所述待测代码的代码覆盖率信息。
5.根据权利要求1所述的方法,其特征在于,确定输入项信息,包括:
响应于输入项信息确定界面的输入项信息确定操作,确定所述输入项信息;
其中,所述输入项信息确定界面为TFS内的界面;所述输入项信息确定操作为用于确定所述输入项信息的操作。
6.根据权利要求1所述的方法,其特征在于,所述输入项信息至少包括:
流水线部署信息,所述流水线部署信息指示确定所述代码覆盖率信息所对应流水线为当前部署的流水线,或指示确定所述代码覆盖率信息所对应流水线为当前部署之前部署的流水线;
部署类型信息,所述部署类型信息指示所部署流水线的类型为云端部署;
报告构建信息,所述报告构建信息指示所述代码覆盖率信息对应单次部署的流水线和/或多次部署的流水线;
云端信息,所述云端信息指示与所述TFS所对应云端的信息;
文件路径信息,所述文件路径信息指示覆盖率需求信息的存储路径;
比较代码信息,所述比较代码信息指示用于确定代码覆盖率信息所包括增量代码覆盖率报告的比较代码的信息;
报告存储路径信息,所述报告存储路径信息指示代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告的存储路径。
7.根据权利要求1所述的方法,其特征在于,还包括:
显示所述代码覆盖率信息包括的全量代码覆盖率报告和增量代码覆盖率报告;
显示代码覆盖率测试的执行情况,所述执行情况包括测试结果和所述覆盖率确定插件运行时产生的日志;
其中,所述测试结果包括指示代码覆盖率测试成功或测试失败的结果。
8.一种代码覆盖率确定装置,其特征在于,包括:
第一确定模块,用于确定输入项信息,所述输入项信息包括覆盖率确定插件所需输入的信息;
第一测试模块,用于部署待测代码的测试环境,并对所述待测代码进行代码覆盖率测试;
第二确定模块,用于根据所述输入项信息,通过所述覆盖率确定插件确定所述待测代码的代码覆盖率信息。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202310429855.5A 2023-04-20 2023-04-20 一种代码覆盖率确定方法、装置、电子设备及存储介质 Pending CN116521536A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310429855.5A CN116521536A (zh) 2023-04-20 2023-04-20 一种代码覆盖率确定方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310429855.5A CN116521536A (zh) 2023-04-20 2023-04-20 一种代码覆盖率确定方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116521536A true CN116521536A (zh) 2023-08-01

Family

ID=87403962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310429855.5A Pending CN116521536A (zh) 2023-04-20 2023-04-20 一种代码覆盖率确定方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116521536A (zh)

Similar Documents

Publication Publication Date Title
CN108984388B (zh) 一种生成自动化测试用例的方法及终端设备
KR102488582B1 (ko) 애플리케이션 실행 상태 검증 방법 및 장치
CN111654495B (zh) 用于确定流量产生来源的方法、装置、设备及存储介质
CN114168471A (zh) 测试方法、装置、电子设备及存储介质
CN115598505A (zh) 一种芯片检测方法、装置、设备和存储介质
CN115437961A (zh) 数据处理方法、装置、电子设备及存储介质
CN116521536A (zh) 一种代码覆盖率确定方法、装置、电子设备及存储介质
CN114003497A (zh) 业务系统的测试方法、装置、设备及存储介质
CN114546799A (zh) 埋点日志校验方法、装置、电子设备、存储介质及产品
CN115017047A (zh) 基于b/s架构的测试方法、系统、设备及介质
CN115203158A (zh) 一种数据比对方法、装置、设备以及存储介质
CN114389969A (zh) 客户端的测试方法、装置、电子设备和存储介质
CN116401113B (zh) 一种异构众核架构加速卡的环境验证方法、装置及介质
CN116431499A (zh) 一种自动测试方法、装置、电子设备及存储介质
CN114238149A (zh) 账务系统的批量测试方法、电子设备及存储介质
CN117648252A (zh) 软件应用的功能测试方法、装置、电子设备及存储介质
CN115374010A (zh) 功能测试方法、装置、设备及存储介质
CN116471268A (zh) 私有云项目的交付方法、装置、电子设备与可读存储介质
CN117971640A (zh) 嵌入式软件的测试方法、装置、设备和介质
CN117609064A (zh) 单元测试方法、装置、电子设备及存储介质
CN117493203A (zh) 一种服务器软件测试方法、装置、设备及存储介质
CN115599682A (zh) 一种环境可用性检测方法、装置、设备及存储介质
CN116185874A (zh) 一种测试报告生成方法、装置、设备和存储介质
CN117806943A (zh) 测试方法、装置及存储介质
CN117520195A (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