CN113032281A - 一种代码覆盖率实时获取方法及装置 - Google Patents

一种代码覆盖率实时获取方法及装置 Download PDF

Info

Publication number
CN113032281A
CN113032281A CN202110475322.1A CN202110475322A CN113032281A CN 113032281 A CN113032281 A CN 113032281A CN 202110475322 A CN202110475322 A CN 202110475322A CN 113032281 A CN113032281 A CN 113032281A
Authority
CN
China
Prior art keywords
code
coverage rate
coverage
acquiring
list
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
CN202110475322.1A
Other languages
English (en)
Other versions
CN113032281B (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110475322.1A priority Critical patent/CN113032281B/zh
Publication of CN113032281A publication Critical patent/CN113032281A/zh
Application granted granted Critical
Publication of CN113032281B publication Critical patent/CN113032281B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/368Test management for test version control, e.g. updating test cases to a new software version
    • 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

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)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种代码覆盖率实时获取方法及装置,可以应用于金融领域,方法包括:通过预先设置的采集插件获取代码的原始覆盖率和配置信息;通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单;对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。通过仅对变更程序清单中的程序进行重点监控,在应用服务器终端存储的程序数据量较大的情况下也能够重点监控发生变更的程序的覆盖率,做到有的放矢避免了系统资源的浪费。同时,通过实时对发生变更的程序的覆盖率进行整合,避免了更新的延迟,测试人员可以实时得知覆盖率是否达标是否需要对程序进行补测,对测试充分性的作用更为直接高效。

Description

一种代码覆盖率实时获取方法及装置
技术领域
本申请属于系统测试技术领域,具体地讲,涉及一种代码覆盖率实时获取方法及装置。
背景技术
代码覆盖情况是了解测试充分性的重要手段,通过代码覆盖情况能了解测试的结果,发现测试的死角。在现阶段,测试人员查看的测试覆盖率报告是按天统计的,即每日汇总从应用服务器终端获取的覆盖率结果和增量代码结果,得出增量代码的覆盖率。
现有的获取代码覆盖情况的方式,带来的结果就是反馈不及时,测试人员无法实时得知覆盖率不达标需要补测,对测试充分性的作用不直接,效率不高,但是,一个应用服务器终端往往存在几千甚至几万个程序,如果测试人员的每一次点击的覆盖率信息都收集并展示,会存在信息爆炸,信息冗余的问题。
发明内容
为了解决现有技术中存在的问题,本申请提供了一种代码覆盖率实时获取方法及装置,以至少解决现有的获取代码覆盖情况的方式反馈不及时,测试人员无法实时得知覆盖率不达标需要补测,对测试充分性的作用不直接,效率不高的问题。
根据本申请的第一个方面,提供了一种代码覆盖率实时获取方法,包括:
通过预先设置的采集插件获取代码的原始覆盖率和配置信息;
通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单;
对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。
在一实施例中,通过预先设置的采集插件获取代码的原始覆盖率和配置信息,包括:
实时采集代码的原始覆盖率并标识出该代码所属应用系统名称和该代码的配置信息;配置信息包括:版本库、所属分支、该代码的当前提交点和首次提交点。
在一实施例中,通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单,包括:
根据输入的版本库和所属分支查找对应的代码并从原始覆盖率中获取该代码的变更情况;
根据代码的变更情况筛选出发生变更的代码并判断发生变更的代码是否为首次运行;
根据判断结果生成变更程序清单。
在一实施例中,根据判断结果生成变更程序清单,包括:
如果是首次运行,获取当前提交点和首次提交点之间所有的变更记录,并将本地提交点更新为当前提交点;
如果非首次运行,获取当前提交点和首次提交点之间所有的变更记录,并记录本地提交点;
在一实施例中,对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率,包括:
从变更程序清单中剔除失效的覆盖率;
将变更程序清单中有效的覆盖率与原始覆盖率进行合并获得更新后的覆盖率。
在一实施例中,代码覆盖率实时获取方法还包括:
代码所属的应用系统名称、版本库、对应的分支和对应的更新后的代码覆盖率发送至前端进行展示。
根据本申请的第二个方面,还提供了一种代码覆盖率实时获取装置,包括:
采集单元,用于通过预先设置的采集插件获取代码的原始覆盖率和配置信息;
清单生成单元,通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单;
覆盖率更新单元,用于对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。
在一实施例中,采集单元包括:
配置信息采集模块,用于实时采集代码的原始覆盖率并标识出该代码所属应用系统名称和该代码的配置信息;配置信息包括:版本库、所属分支、该代码的当前提交点和首次提交点。
在一实施例中,清单生成单元包括:
变更情况获取模块,用于根据输入的版本库和所属分支查找对应的代码并从原始覆盖率中获取该代码的变更情况;
首次运行判断模块,用于根据代码的变更情况筛选出发生变更的代码并判断发生变更的代码是否为首次运行;
清单生成模块,用于根据判断结果生成变更程序清单。
在一实施例中,清单生成模块包括:
首次运行处理模块,用于如果是首次运行,获取当前提交点和首次提交点之间所有的变更记录,并将本地提交点更新为当前提交点;
非首次运行处理模块,用于如果非首次运行,获取当前提交点和首次提交点之间所有的变更记录,并记录本地提交点;
在一实施例中,覆盖率更新单元包括:
失效剔除模块,用于从变更程序清单中剔除失效的覆盖率;
整合模块,用于将变更程序清单中有效的覆盖率与原始覆盖率进行合并获得更新后的覆盖率。
在一实施例中,代码覆盖率实时获取装置还包括:
发送展示模块,用于将代码所属的应用系统名称、版本库、对应的分支和对应的更新后的代码覆盖率发送至前端进行展示。
根据本申请的第三个方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现代码覆盖率实时获取方法的步骤。
根据本申请的第四个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现代码覆盖率实时获取方法的步骤。
由上述技术方案可知,本申请提供的一种代码覆盖率实时获取方法及装置,方法包括:通过预先设置的采集插件获取代码的原始覆盖率和配置信息;通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单;对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。通过根据源代码生成变更程序清单实时掌握发生变更的程序,并对变更程序清单中的程序进行重点监控,避免了资源的浪费,在应用服务器终端存储的程序数据量较大的情况下也能够重点监控发生变更的程序的覆盖率,做到有的放矢避免了系统资源的浪费。同时,通过实时对发生变更的程序的覆盖率进行整合,无需人工整合监控,同时还具备即时性,不需要在某一特定时段进行整合,避免了更新的延迟,使得覆盖率能够及时上报给测试人员,测试人员可以实时得知覆盖率是否达标是否需要对程序进行补测,对测试充分性的作用更为直接高效。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种程序覆盖率实时获取方法流程图。
图2为本申请实施例中变更程序清单生成的方法流程图。
图3为本申请实施例中根据判断结果生成变更程序清单的流程图。
图4为本申请实施例中覆盖率整合流程图。
图5为本申请提供的一种程序覆盖率实施获取装置的结构框图。
图6为本申请实施例中清单生成单元的结构框图。
图7为本申请实施例中清单生成模块的结构框图。
图8为本申请实施例中覆盖率更新单元的结构框图。
图9为本申请实施例中一种电子设备的具体实施方式。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本申请公开的代码覆盖率实时获取方法及装置可用于金融技术领域,也可用于除金融技术领域之外的任意领域,本申请公开的代码覆盖率实时获取方法及装置的应用领域不做限定。
目前,代码覆盖情况是了解测试充分性的重要手段,通过代码覆盖情况能了解测试的结果,发现测试的死角。在现阶段,测试人员查看的测试覆盖率报告是按天统计的,即每日汇总从应用服务器终端获取的覆盖率结果和增量代码结果,得出增量代码的覆盖率。这种获取代码覆盖情况的方式,带来的结果就是反馈不及时,测试人员无法实时得知覆盖率不达标需要补测,对测试充分性的作用不直接,效率不高。
基于上述问题,为了提升代码覆盖情况反馈的速度和及时性,本申请分别提供了一种代码覆盖率实时获取方法、代码覆盖率实时获取装置、电子设备和计算机可读存储介质。通过根据源代码生成变更程序清单实时掌握发生变更的程序,并对变更程序清单中的程序进行重点监控,避免了资源的浪费,在应用服务器终端存储的程序数据量较大的情况下也能够重点监控发生变更的程序的覆盖率,做到有的放矢避免了系统资源的浪费。同时,通过实时对发生变更的程序的覆盖率进行整合,无需人工整合监控,同时还具备即时性,不需要在某一特定时段进行整合,避免了更新的延迟,使得覆盖率能够及时上报给测试人员,测试人员可以实时得知覆盖率是否达标是否需要对程序进行补测,对测试充分性的作用更为直接高效。
基于上述内容,本申请还提供一种用于实现本申请一个或多个实施例中提供的代码覆盖率实时获取方法的代码覆盖率实时获取装置,该代码覆盖率实时获取装置可以自行或通过第三方服务器等与客户端设备之间通信连接,以接收各个客户端设备分别发起的请求,然后触发本装置中用于实现本申请一个或多个实施例中提供的代码覆盖率实时获取方法的程序执行故障测试步骤。
可以理解的是,所述客户端设备可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在另一种实际应用情形中,前述的PaaS云平台故障测试装置进行PaaS云平台故障测试的部分可以在如上述内容的服务器中执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器,用于批量业务处理中故障自动诊断的具体处理。
上述的客户端设备可以具有通信模块(即通信单元),可以与远程的服务器进行通信连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通信链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
上述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure Call Protocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。
具体通过下述各个实施例及应用实例分别进行详细说明。
为了提升代码覆盖情况反馈的速度和及时性,本申请提供了一种代码覆盖率实时获取方法,如图1所示,包括:
S101:通过预先设置的采集插件获取代码的原始覆盖率和配置信息。
在S101的一种实现方式中,可以由用户触发本申请实施例提供的代码覆盖率实时获取过程,具体可以为:接收客户端发送的代码覆盖率获取请求,其中,所述代码覆盖率获取请求中包含有待测试应用程序的名称和配置信息,配置信息包括版本库、所属分支、该代码的当前提交点和首次提交点等。
在S101的另一种实现方式中,可以在用户设定的自动化执行代码覆盖率获取的时间点上,启动自动化代码获取程序。
S102:通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单。
在一具体实施例中,为了实现覆盖数据的初始采集,将采集插件投放在每一个应用服务器终端上。定时采集之后,为每一份报告打上标签,标识出具体的应用系统ID,代码部署的配置信息,包括版本库repo,分支deploy_branch,代码对应的当前提交点current_commit_point,代码对应的首次提交点first_commit_point。
由上述可知,通过根据源代码生成变更程序清单实时掌握发生变更的程序,并对变更程序清单中的程序进行重点监控,避免了资源的浪费,在应用服务器终端存储的程序数据量较大的情况下也能够重点监控发生变更的程序的覆盖率,做到有的放矢避免了系统资源的浪费。
S103:对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。
在一具体实施例中,从S101和S102获取到的覆盖率结果和变更程序清单,两者都带有类名属性,可通过类名匹配把覆盖率结果关联到变更程序清单上,并剔除了无用的覆盖率结果,利用有效的覆盖率结果与初始覆盖率结果进行整合得到新的覆盖率结果。
由上可知,通过实时对发生变更的程序的覆盖率进行整合,无需人工整合监控,同时还具备即时性,不需要在某一特定时段进行整合,避免了更新的延迟,使得覆盖率能够及时上报给测试人员,测试人员可以实时得知覆盖率是否达标是否需要对程序进行补测,对测试充分性的作用更为直接高效。
在一实施例中,通过预先设置的采集插件获取代码的原始覆盖率和配置信息,包括:
实时采集代码的原始覆盖率并标识出该代码所属应用系统名称和该代码的配置信息;配置信息包括:版本库、所属分支、该代码的当前提交点和首次提交点。
在一实施例中,通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单,如图2所示,包括:
S201:根据输入的版本库和所属分支查找对应的代码并从原始覆盖率中获取该代码的变更情况。
S202:根据代码的变更情况筛选出发生变更的代码并判断发生变更的代码是否为首次运行。
S203:根据判断结果生成变更程序清单。
在一具体实施例中,为了实现获取变更源码清单,需要测试人员提供应用服务器的版本控制工具的权限,使用执行机模拟测试人员的代码拉取工作,输入版本库repo,分支deploy_branch即可获取到所有部署在应用服务器终端上的源码和每一次程序代码变更情况。下一步是获取到本次新发布代码和上一版本之间变化的程序,即为测试人员应该关注的重点程序。如果是首次运行,则直接获取当前提交点current_commit_point和首次提交点first_commit_point的之间的所有变更记录,并记录载入提交点load_commit_point为当前提交点current_commit_point。如果是非首次载入,则获取当前提交点current_commit_point和load_commit_point之间的所有变更程序,并更新载入提交点load_commit_point。通过保存载入提交点的方式,做到增量拉取变更源码清单,更高效。
在一实施例中,根据判断结果生成变更程序清单,如图3所示,包括:
S301:如果是首次运行,获取当前提交点和首次提交点之间所有的变更记录,并将本地提交点更新为当前提交点。
S302:如果非首次运行,获取当前提交点和首次提交点之间所有的变更记录,并记录本地提交点。
在一具体实施例中,如果是首次运行,则直接获取当前提交点current_commit_point和首次提交点first_commit_point的之间的所有变更记录,并记录载入提交点load_commit_point为当前提交点current_commit_point。如果是非首次载入,则获取当前提交点current_commit_point和load_commit_point之间的所有变更程序,并更新载入提交点load_commit_point。通过保存载入提交点的方式,做到增量拉取变更源码清单,更高效。
在一实施例中,对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率,如图4所示,包括:
S501:从变更程序清单中剔除失效的覆盖率。
S502:将变更程序清单中有效的覆盖率与原始覆盖率进行合并获得更新后的覆盖率。
在一实施例中,代码覆盖率实时获取方法还包括:
代码所属的应用系统名称、版本库、对应的分支和对应的更新后的代码覆盖率发送至前端进行展示。
在一具体实施例中,从S101和S102获取到的覆盖率结果和变更程序清单,两者都带有类名属性,可通过类名匹配把覆盖率结果关联到变更程序清单上,并剔除了无用的覆盖率结果,利用有效的覆盖率结果与初始覆盖率结果进行整合得到新的覆盖率结果。例如,如果之前覆盖的程序,到现在为止没有发生新的变化,则两个覆盖率结果可以合并,即原来覆盖了1 2 3行,现在覆盖率4 5 6行,最终结果为覆盖了1 2 3 4 5 6共6行。反之,之前覆盖的程序到现在为止又出现了新的变化,则保留最后的覆盖率结果。最终形成的是一个版本库下的所有程序的覆盖率结果。可按应用系统id,版本库库repo,分支deploy_branch展示每个程序自开始测试以来的覆盖率结果。
基于同一发明构思,本申请实施例还提供了一种代码覆盖率实时获取装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该代码覆盖率实时获取装置解决问题的原理与代码覆盖率实时获取方法相似,因此代码覆盖率实时获取装置的实施可以参见代码覆盖率实时获取方法的实施。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图5所示,本申请还提供了一种代码覆盖率实时获取装置,包括:
采集单元601,用于通过预先设置的采集插件获取代码的原始覆盖率和配置信息;
在采集单元601的一种实现方式中,可以由用户触发本申请实施例提供的代码覆盖率实时获取过程,具体可以为:接收客户端发送的代码覆盖率获取请求,其中,所述代码覆盖率获取请求中包含有待测试应用程序的名称和配置信息,配置信息包括版本库、所属分支、该代码的当前提交点和首次提交点等。
在采集单元601的另一种实现方式中,可以在用户设定的自动化执行代码覆盖率获取的时间点上,启动自动化代码获取程序。
清单生成单元602,通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单;
在一具体实施例中,为了实现覆盖数据的初始采集,将采集插件投放在每一个应用服务器终端上。定时采集之后,为每一份报告打上标签,标识出具体的应用系统ID,代码部署的配置信息,包括版本库repo,分支deploy_branch,代码对应的当前提交点current_commit_point,代码对应的首次提交点first_commit_point。
由上述可知,通过根据源代码生成变更程序清单实时掌握发生变更的程序,并对变更程序清单中的程序进行重点监控,避免了资源的浪费,在应用服务器终端存储的程序数据量较大的情况下也能够重点监控发生变更的程序的覆盖率,做到有的放矢避免了系统资源的浪费。
覆盖率更新单元603,用于对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。
在一具体实施例中,从S101和S102获取到的覆盖率结果和变更程序清单,两者都带有类名属性,可通过类名匹配把覆盖率结果关联到变更程序清单上,并剔除了无用的覆盖率结果,利用有效的覆盖率结果与初始覆盖率结果进行整合得到新的覆盖率结果。
由上可知,通过实时对发生变更的程序的覆盖率进行整合,无需人工整合监控,同时还具备即时性,不需要在某一特定时段进行整合,避免了更新的延迟,使得覆盖率能够及时上报给测试人员,测试人员可以实时得知覆盖率是否达标是否需要对程序进行补测,对测试充分性的作用更为直接高效。
在一实施例中,采集单元601包括:
配置信息采集模块,用于实时采集代码的原始覆盖率并标识出该代码所属应用系统名称和该代码的配置信息;配置信息包括:版本库、所属分支、该代码的当前提交点和首次提交点。
在一实施例中,如图6所示,清单生成单元602包括:
变更情况获取模块701,用于根据输入的版本库和所属分支查找对应的代码并从原始覆盖率中获取该代码的变更情况;
首次运行判断模块702,用于根据代码的变更情况筛选出发生变更的代码并判断发生变更的代码是否为首次运行;
清单生成模块703,用于根据判断结果生成变更程序清单。
在一具体实施例中,为了实现获取变更源码清单,需要测试人员提供应用服务器的版本控制工具的权限,使用执行机模拟测试人员的代码拉取工作,输入版本库repo,分支deploy_branch即可获取到所有部署在应用服务器终端上的源码和每一次程序代码变更情况。下一步是获取到本次新发布代码和上一版本之间变化的程序,即为测试人员应该关注的重点程序。如果是首次运行,则直接获取当前提交点current_commit_point和首次提交点first_commit_point的之间的所有变更记录,并记录载入提交点load_commit_point为当前提交点current_commit_point。如果是非首次载入,则获取当前提交点current_commit_point和load_commit_point之间的所有变更程序,并更新载入提交点load_commit_point。通过保存载入提交点的方式,做到增量拉取变更源码清单,更高效。
在一实施例中,如图7所示,清单生成模块703包括:
首次运行处理模块801,用于如果是首次运行,获取当前提交点和首次提交点之间所有的变更记录,并将本地提交点更新为当前提交点;
非首次运行处理模块802,用于如果非首次运行,获取当前提交点和首次提交点之间所有的变更记录,并记录本地提交点;
在一具体实施例中,如果是首次运行,则直接获取当前提交点current_commit_point和首次提交点first_commit_point的之间的所有变更记录,并记录载入提交点load_commit_point为当前提交点current_commit_point。如果是非首次载入,则获取当前提交点current_commit_point和load_commit_point之间的所有变更程序,并更新载入提交点load_commit_point。通过保存载入提交点的方式,做到增量拉取变更源码清单,更高效。
在一实施例中,如图8所示,覆盖率更新单元603包括:
失效剔除模块901,用于从变更程序清单中剔除失效的覆盖率;
整合模块902,用于将变更程序清单中有效的覆盖率与原始覆盖率进行合并获得更新后的覆盖率。
在一实施例中,代码覆盖率实时获取装置还包括:
发送展示模块,用于将代码所属的应用系统名称、版本库、对应的分支和对应的更新后的代码覆盖率发送至前端进行展示。
在一具体实施例中,从采集单元601和清单生成单元602获取到的覆盖率结果和变更程序清单,两者都带有类名属性,可通过类名匹配把覆盖率结果关联到变更程序清单上,并剔除了无用的覆盖率结果,利用有效的覆盖率结果与初始覆盖率结果进行整合得到新的覆盖率结果。例如,如果之前覆盖的程序,到现在为止没有发生新的变化,则两个覆盖率结果可以合并,即原来覆盖了1 2 3行,现在覆盖率4 5 6行,最终结果为覆盖了1 2 3 4 5 6共6行。反之,之前覆盖的程序到现在为止又出现了新的变化,则保留最后的覆盖率结果。最终形成的是一个版本库下的所有程序的覆盖率结果。可按应用系统id,版本库库repo,分支deploy_branch展示每个程序自开始测试以来的覆盖率结果。
本申请提供的一种代码覆盖率实时获取方法及装置,优点在于,通过根据源代码生成变更程序清单实时掌握发生变更的程序,并对变更程序清单中的程序进行重点监控,避免了资源的浪费,在应用服务器终端存储的程序数据量较大的情况下也能够重点监控发生变更的程序的覆盖率,做到有的放矢避免了系统资源的浪费。同时,通过实时对发生变更的程序的覆盖率进行整合,无需人工整合监控,同时还具备即时性,不需要在某一特定时段进行整合,避免了更新的延迟,使得覆盖率能够及时上报给测试人员,测试人员可以实时得知覆盖率是否达标是否需要对程序进行补测,对测试充分性的作用更为直接高效。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图9,所述电子设备具体包括如下内容:
处理器(processor)1001、内存1002、通信接口(Communications Interface)1003、总线1004和非易失性存储器1005;
其中,所述处理器1001、内存1002、通信接口1003通过所述总线1004完成相互间的通信;
所述处理器1001用于调用所述内存1002和非易失性存储器1005中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S101:通过预先设置的采集插件获取代码的原始覆盖率和配置信息。
S102:通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单。
S103:对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S101:通过预先设置的采集插件获取代码的原始覆盖率和配置信息。
S102:通过版本控制工具根据原始覆盖率和配置信息生成变更程序清单。
S103:对变更程序清单进行清洗,并将清洗后的变更程序清单和原始覆盖率进行合并获得更新后的覆盖率。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。
在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。

Claims (13)

1.一种代码覆盖率实时获取方法,其特征在于,包括:
通过预先设置的采集插件获取代码的原始覆盖率和配置信息;
通过版本控制工具根据所述原始覆盖率和所述配置信息生成变更程序清单;
对所述变更程序清单进行清洗,并将清洗后的所述变更程序清单和所述原始覆盖率进行合并获得更新后的覆盖率。
2.根据权利要求1所述的代码覆盖率实时获取方法,其特征在于,所述通过预先设置的采集插件获取代码的原始覆盖率和配置信息,包括:
实时采集代码的原始覆盖率并标识出该代码所属应用系统名称和该代码的配置信息。
3.根据权利要求2所述的代码覆盖率实时获取方法,其特征在于,所述通过版本控制工具根据所述原始覆盖率和所述配置信息生成变更程序清单,包括:
根据输入的版本库和所属分支查找对应的代码并从原始覆盖率中获取该代码的变更情况;
根据代码的变更情况筛选出发生变更的代码并判断所述发生变更的代码是否为首次运行;
根据判断结果生成所述变更程序清单。
4.根据权利要求3所述的代码覆盖率实时获取方法,其特征在于,所述根据判断结果生成所述变更程序清单,包括:
如果是首次运行,获取所述当前提交点和所述首次提交点之间所有的变更记录,并将本地提交点更新为当前提交点;
如果非首次运行,获取所述当前提交点和所述首次提交点之间所有的变更记录,并记录本地提交点。
5.根据权利要求4所述的代码覆盖率实时获取方法,其特征在于,所述对所述变更程序清单进行清洗,并将清洗后的所述变更程序清单和所述原始覆盖率进行合并获得更新后的覆盖率,包括:
从所述变更程序清单中剔除失效的覆盖率;
将所述变更程序清单中有效的覆盖率与原始覆盖率进行合并获得更新后的覆盖率。
6.根据权利要求5所述的代码覆盖率实时获取方法,其特征在于,还包括:
代码所属的应用系统名称、版本库、对应的分支和对应的更新后的代码覆盖率发送至前端进行展示。
7.根据权利要求2所述的代码覆盖率实时获取方法,其特征在于,所述配置信息包括:版本库、所属分支、该代码的当前提交点和首次提交点。
8.一种代码覆盖率实时获取装置,其特征在于,包括:
采集单元,用于通过预先设置的采集插件获取代码的原始覆盖率和配置信息;
清单生成单元,通过版本控制工具根据所述原始覆盖率和所述配置信息生成变更程序清单;
覆盖率更新单元,用于对所述变更程序清单进行清洗,并将清洗后的所述变更程序清单和所述原始覆盖率进行合并获得更新后的覆盖率。
9.根据权利要求8所述的代码覆盖率实时获取装置,其特征在于,所述采集单元包括:
配置信息采集模块,用于实时采集代码的原始覆盖率并标识出该代码所属应用系统名称和该代码的配置信息;所述配置信息包括:版本库、所属分支、该代码的当前提交点和首次提交点。
10.根据权利要求9所述的代码覆盖率实时获取装置,其特征在于,所述清单生成单元包括:
变更情况获取模块,用于根据输入的版本库和所属分支查找对应的代码并从原始覆盖率中获取该代码的变更情况;
首次运行判断模块,用于根据代码的变更情况筛选出发生变更的代码并判断所述发生变更的代码是否为首次运行;
清单生成模块,用于根据判断结果生成所述变更程序清单。
11.根据权利要求10所述的代码覆盖率实时获取装置,其特征在于,所述清单生成模块包括:
首次运行处理模块,用于如果是首次运行,获取所述当前提交点和所述首次提交点之间所有的变更记录,并将本地提交点更新为当前提交点;
非首次运行处理模块,用于如果非首次运行,获取所述当前提交点和所述首次提交点之间所有的变更记录,并记录本地提交点。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述的代码覆盖率实时获取方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7任一项所述的代码覆盖率实时获取方法的步骤。
CN202110475322.1A 2021-04-29 2021-04-29 一种代码覆盖率实时获取方法及装置 Active CN113032281B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110475322.1A CN113032281B (zh) 2021-04-29 2021-04-29 一种代码覆盖率实时获取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110475322.1A CN113032281B (zh) 2021-04-29 2021-04-29 一种代码覆盖率实时获取方法及装置

Publications (2)

Publication Number Publication Date
CN113032281A true CN113032281A (zh) 2021-06-25
CN113032281B CN113032281B (zh) 2024-04-19

Family

ID=76454906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110475322.1A Active CN113032281B (zh) 2021-04-29 2021-04-29 一种代码覆盖率实时获取方法及装置

Country Status (1)

Country Link
CN (1) CN113032281B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114003513A (zh) * 2021-12-30 2022-02-01 云账户技术(天津)有限公司 代码覆盖率处理方法、装置、电子设备及可读存储介质
CN116501648A (zh) * 2023-06-26 2023-07-28 北京云枢创新软件技术有限公司 一种代码覆盖率的获取方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108959059A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 一种测试方法以及测试平台
CN109426604A (zh) * 2017-08-22 2019-03-05 阿里巴巴集团控股有限公司 代码开发的监控方法及设备
CN110633208A (zh) * 2019-08-22 2019-12-31 浙江大搜车软件技术有限公司 增量代码覆盖率测试方法及系统
CN111897737A (zh) * 2020-08-21 2020-11-06 中国工商银行股份有限公司 微服务系统程序测试的遗漏检测方法及装置
CN112631763A (zh) * 2021-01-07 2021-04-09 中国农业银行股份有限公司 一种主机程序的程序变更方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108959059A (zh) * 2017-05-19 2018-12-07 腾讯科技(深圳)有限公司 一种测试方法以及测试平台
CN109426604A (zh) * 2017-08-22 2019-03-05 阿里巴巴集团控股有限公司 代码开发的监控方法及设备
CN110633208A (zh) * 2019-08-22 2019-12-31 浙江大搜车软件技术有限公司 增量代码覆盖率测试方法及系统
CN111897737A (zh) * 2020-08-21 2020-11-06 中国工商银行股份有限公司 微服务系统程序测试的遗漏检测方法及装置
CN112631763A (zh) * 2021-01-07 2021-04-09 中国农业银行股份有限公司 一种主机程序的程序变更方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114003513A (zh) * 2021-12-30 2022-02-01 云账户技术(天津)有限公司 代码覆盖率处理方法、装置、电子设备及可读存储介质
CN116501648A (zh) * 2023-06-26 2023-07-28 北京云枢创新软件技术有限公司 一种代码覆盖率的获取方法及系统
CN116501648B (zh) * 2023-06-26 2023-09-15 北京云枢创新软件技术有限公司 一种代码覆盖率的获取方法及系统

Also Published As

Publication number Publication date
CN113032281B (zh) 2024-04-19

Similar Documents

Publication Publication Date Title
US11093374B2 (en) System and method for continuous testing and delivery of software
CN109660397B (zh) 用于采集日志的系统、方法和装置
US9514033B2 (en) Systems and methods for processing software application metadata associated with a software application
CN110162471A (zh) 一种基于容器云的压力测试方法及系统
US20160350103A1 (en) Identifying Cause of Incidents in the DevOps Environment Automatically
CN113032281A (zh) 一种代码覆盖率实时获取方法及装置
CN112261118A (zh) 多媒体数据的异常检测方法、终端及服务器
CN110532021B (zh) 分布式控制系统的组态文件的处理方法、客户端及服务装置
US10372572B1 (en) Prediction model testing framework
CN113157577A (zh) 一种PaaS云平台故障测试方法及装置
CN105204986A (zh) 产品的自动化测试方法、服务器及移动设备
CN109408361A (zh) Monkey测试复原方法、装置、电子设备及计算机可读存储介质
CN111106965A (zh) 用于复杂系统的日志智能分析方法、工具、设备及介质
CN107203464B (zh) 业务问题的定位方法以及装置
CN107040504A (zh) 测试方法和装置
CN110609761B (zh) 确定故障源的方法、装置、存储介质和电子设备
CN113157586B (zh) 一种金融市场单元测试案例生成方法及装置
CN115964302A (zh) 一种数据测试的方法和装置
CN116257422A (zh) 自测用例生成方法、装置及电子设备
CN113434382A (zh) 数据库性能监控方法、装置、电子设备及计算机可读介质
CN113342650A (zh) 分布式系统的混沌工程方法及装置
CN112650815A (zh) 环境数据的同步方法及装置、存储介质及电子装置
CN113342644B (zh) 基于语法分析技术的测试脚本自动生成方法及装置
CN113391840B (zh) 一种自动识别同步冲突并解决冲突的同步方法及装置
CN105407112B (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