CN110413532A - 适用于敏捷测试的多过程版本变更代码覆盖率获取方法 - Google Patents

适用于敏捷测试的多过程版本变更代码覆盖率获取方法 Download PDF

Info

Publication number
CN110413532A
CN110413532A CN201910731191.1A CN201910731191A CN110413532A CN 110413532 A CN110413532 A CN 110413532A CN 201910731191 A CN201910731191 A CN 201910731191A CN 110413532 A CN110413532 A CN 110413532A
Authority
CN
China
Prior art keywords
code
version
coverage
change
code 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
CN201910731191.1A
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 NEW CENTURY NETWORK Co Ltd
Original Assignee
SHANGHAI NEW CENTURY NETWORK 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 NEW CENTURY NETWORK Co Ltd filed Critical SHANGHAI NEW CENTURY NETWORK Co Ltd
Priority to CN201910731191.1A priority Critical patent/CN110413532A/zh
Publication of CN110413532A publication Critical patent/CN110413532A/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version

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

本发明公开了一种适用于敏捷测试的多过程版本变更代码覆盖率获取方法,包括如下步骤:S1:获取版本标号,将版本标号组成一个有序数组;S2:取相邻的两个版本标号,获取版本代码;S3:根据版本代码,获取全量代码覆盖率和变更代码信息;S4:根据全量代码覆盖率和变更代码信息得到变更代码覆盖率;S5:重复步骤S2‑S4,得到所有相邻版本的变更代码覆盖率;S6:将所有相邻版本间的变更代码覆盖率进行叠加,得到多过程的变更代码覆盖率。本发明基于软件配置管理工具和覆盖率工具,得到变更代码测试覆盖率的数据,了解被修改代码的代码覆盖率情况;通过整个版本的测试覆盖率数据,体现整个版本的测试情况,提高了代码覆盖率的准确性。

Description

适用于敏捷测试的多过程版本变更代码覆盖率获取方法
技术领域
本发明涉及一种变更代码覆盖率获取方法,尤其涉及一种适用于敏捷测试的多过程版本变更代码覆盖率获取方法。
背景技术
代码覆盖(英语:Code coverage)是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。代码覆盖率反映测试用例对被测软件覆盖程度的重要指标,是用来度量测试完整性的一个参考值,通过代码覆盖率数据可以评估测试是否充分。在软件开发的过程中,通过客户端获取代码覆盖率数据是基于被监控项目的全部代码生成的。在很多项目工期紧张的情况下,基于全部代码的覆盖率数据对开发人员的指导意义并不是很大。即便客户端可以使用一些过滤条件来减少不关心的类,依然不能反映修改前及修改后这两个版本代码之间差异代码信息的覆盖情况,即开发人员无法准确获知被修改代码的情况,使得开发人员很难获取所需的数据,从而导致为上线增加覆盖率的测试用例不够方便快捷。
现有的技术是使用jacoco等覆盖率工具收集测试覆盖率,得到的数据即为本次测试对于全量代码的覆盖情况。目前的技术方案存在如下问题:1、除了关注全量代码覆盖率数据外,对于当前版本会更加关心变更代码的测试覆盖率情况,而这恰恰是覆盖率工具无法满足的;2、对于快速迭代的版本,每个过程版本的测试覆盖率无法体现整个版本的测试情况。
发明内容
本发明要解决的技术问题是提供一种适用于敏捷测试的多过程版本变更代码覆盖率获取方法,通过获取单个版本的变更代码覆盖率,得到多过程版本的变更代码覆盖率。
本发明为解决上述技术问题而采用的技术方案是提供一种适用于敏捷测试的多过程版本变更代码覆盖率获取方法,包括如下步骤:S1:获取前一个稳定版本、当前测试版本和两者间的各过程版本的版本标号,并根据版本修改的先后顺序将各版本的版本标号组成一个有序数组;S2:取相邻的两个版本标号,并通过版本标号获取版本代码;S3:根据步骤S2中获取的版本代码,获取全量代码覆盖率数据和变更代码信息;S4:根据步骤S3中的全量代码覆盖率数据和变更代码信息得到变更代码覆盖率;S5:重复步骤S2-S4,得到所有相邻版本间的变更代码覆盖率数据;S6:将步骤S5中获取的所有相邻版本间的变更代码覆盖率数据进行叠加,得到当前测试版本的多过程的变更代码覆盖率。
进一步的,所述版本标号唯一,所述版本标号用tag号或者commit sha1值表示。
进一步的,所述步骤S3中通过覆盖率工具进行测试并收集全量代码覆盖率数据,通过软件配置管理工具获取变更代码信息。
进一步的,所述覆盖率工具为jacoco,所述软件配置管理工具为代码版本管理工具git。
进一步的,所述全量代码覆盖率数据包括被执行的代码的包、类、方法及行信息,所述变更代码信息包括被修改的代码的包、类、方法及行信息。
进一步的,所述变更代码覆盖率数据包括被执行的代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及被执行的代码中被修改代码的包、类、方法及行信息。
进一步的,所述步骤S4根据全量代码覆盖率数据及差异代码信息获取差异代码覆盖率数据包括:将被执行的代码的包、类、方法及行信息与被修改的代码的包、类、方法及行信息进行对比,获取被执行的代码中被修改代码占修改版本代码中被修改代码的总行数的比例。
本发明对比现有技术有如下的有益效果:本发明提供的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,基于软件配置管理工具和覆盖率工具,得到变更代码测试覆盖率的数据,使得客户端可以获取同一个工程中多个过程代码的变更代码覆盖率数据,更方便的了解被修改代码的代码覆盖率情况;将各个过程版本的变更代码覆盖率数据进行叠加,得到整个版本的测试覆盖率数据,更好的体现整个版本的测试情况,提高了代码覆盖率的获取准确性,提高了开发人员增加代码覆盖率的测试用例的便捷性。
附图说明
图1为本发明实施例中适用于敏捷测试的多过程版本变更代码覆盖率获取方法流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1为本发明实施例中适用于敏捷测试的多过程版本变更代码覆盖率获取方法结构示意图。
请参见图1,本发明提供的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,包括如下步骤:
S1:获取前一个稳定版本、当前测试版本和两者间的各过程版本的版本标号,并根据版本修改的先后顺序将各版本的版本标号组成一个有序数组;
S2:取相邻的两个版本标号,并通过版本标号获取版本代码;版本标号唯一,所述版本标号用tag号或者commit sha1值表示。
S3:根据步骤S2中获取的版本代码,获取全量代码覆盖率数据和变更代码信息;通过覆盖率工具进行测试并收集全量代码覆盖率数据,通过软件配置管理工具获取变更代码信息。采用的覆盖率工具为jacoco,采用的软件配置管理工具为代码版本管理工具git。
S4:根据步骤S3中的全量代码覆盖率数据和变更代码信息得到变更代码覆盖率;
S5:重复步骤S2-S4,得到所有相邻版本间的变更代码覆盖率数据;
S6:将步骤S5中获取的所有相邻版本间的变更代码覆盖率数据进行叠加,得到当前测试版本的多过程的变更代码覆盖率。
具体的,本发明提供的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,全量代码覆盖率数据包括被执行的代码的包、类、方法及行信息,变更代码信息包括被修改的代码的包、类、方法及行信息;变更代码覆盖率数据包括被执行的代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及被执行的代码中被修改代码的包、类、方法及行信息;根据全量代码覆盖率数据及差异代码信息获取差异代码覆盖率数据包括:将被执行的代码的包、类、方法及行信息与被修改的代码的包、类、方法及行信息进行对比,获取被执行的代码中被修改代码占修改版本代码中被修改代码的总行数的比例。
具体的,本发明提供的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,将得到的各相邻版本的变更代码行数据进行合并,最终得到当前版本的变更代码行号在各个过程版本中的行号关系。其中涉及变更代码行叠加合并的场景如下:前一版本增加的行在后一版本中被删除,前一版本增加的行在后一版本删除的行后面,需要调整行号,前一版本增加的行在后一版本增加的行后面,需要调整行号,当前版本的变更代码的测试覆盖情况可以通过其对应各版本的行的覆盖情况汇总得到;对于每个过程版本都做上述的运算,而当某个版本作为最终的发版版本时,这个测试覆盖率即为整个版本的变更代码测试覆盖率。
本发明提供的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,在具体实施时,根据开发提供的工程及其对应的tag号在Jenkins中进行统一构建,后台脚本会把工程和tag号和commit sha1值记录到数据库中,并与当前测试版本关联起来。每次更新工程(过程版本)或手工重启工程时都调jacoco收集覆盖率数据,后台脚本解析数据后记录到数据库中。同时产生一条计算覆盖率的任务,后台常驻程序定时获取计算覆盖率任务并把任务入到队列中,工作线程抢占式获取任务进行变更代码测试覆盖率叠加计算,最后把计算结果记录到数据库中。
综上所述,本发明提供的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,基于软件配置管理工具和覆盖率工具,得到变更代码测试覆盖率的数据,使得客户端可以获取同一个工程中多个过程代码的变更代码覆盖率数据,更方便的了解被修改代码的代码覆盖率情况;将各个过程版本的变更代码覆盖率数据进行叠加,得到整个版本的测试覆盖率数据,更好的体现整个版本的测试情况,提高了代码覆盖率的获取准确性,提高了开发人员增加代码覆盖率的测试用例的便捷性。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。

Claims (7)

1.一种适用于敏捷测试的多过程版本变更代码覆盖率获取方法,其特征在于,包括如下步骤:
S1:获取前一个稳定版本、当前测试版本和两者间的各过程版本的版本标号,并根据版本修改的先后顺序将各版本的版本标号组成一个有序数组;
S2:取相邻的两个版本标号,并通过版本标号获取版本代码;
S3:根据步骤S2中获取的版本代码,获取全量代码覆盖率数据和变更代码信息;
S4:根据步骤S3中的全量代码覆盖率数据和变更代码信息得到变更代码覆盖率;
S5:重复步骤S2-S4,得到所有相邻版本间的变更代码覆盖率数据;
S6:将步骤S5中获取的所有相邻版本间的变更代码覆盖率数据进行叠加,得到当前测试版本的多过程的变更代码覆盖率。
2.如权利要求1所述的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,其特征在于,所述版本标号唯一,所述版本标号用tag号或者commit sha1值表示。
3.如权利要求1所述的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,其特征在于,所述步骤S3中通过覆盖率工具进行测试并收集全量代码覆盖率数据,通过软件配置管理工具获取变更代码信息。
4.如权利要求3所述的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,其特征在于,所述覆盖率工具为jacoco,所述软件配置管理工具为代码版本管理工具git。
5.如权利要求1所述的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,其特征在于,所述全量代码覆盖率数据包括被执行的代码的包、类、方法及行信息,所述变更代码信息包括被修改的代码的包、类、方法及行信息。
6.如权利要求1所述的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,其特征在于,所述变更代码覆盖率数据包括被执行的代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及被执行的代码中被修改代码的包、类、方法及行信息。
7.如权利要求1所述的适用于敏捷测试的多过程版本变更代码覆盖率获取方法,其特征在于,所述步骤S4根据全量代码覆盖率数据及差异代码信息获取差异代码覆盖率数据包括:将被执行的代码的包、类、方法及行信息与被修改的代码的包、类、方法及行信息进行对比,获取被执行的代码中被修改代码占修改版本代码中被修改代码的总行数的比例。
CN201910731191.1A 2019-08-08 2019-08-08 适用于敏捷测试的多过程版本变更代码覆盖率获取方法 Pending CN110413532A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910731191.1A CN110413532A (zh) 2019-08-08 2019-08-08 适用于敏捷测试的多过程版本变更代码覆盖率获取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910731191.1A CN110413532A (zh) 2019-08-08 2019-08-08 适用于敏捷测试的多过程版本变更代码覆盖率获取方法

Publications (1)

Publication Number Publication Date
CN110413532A true CN110413532A (zh) 2019-11-05

Family

ID=68366788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910731191.1A Pending CN110413532A (zh) 2019-08-08 2019-08-08 适用于敏捷测试的多过程版本变更代码覆盖率获取方法

Country Status (1)

Country Link
CN (1) CN110413532A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026647A (zh) * 2019-11-21 2020-04-17 广州品唯软件有限公司 代码覆盖率的获取方法、装置、计算机设备和存储介质
CN112631926A (zh) * 2020-12-29 2021-04-09 平安银行股份有限公司 代码测试覆盖率显示方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160299835A1 (en) * 2015-04-08 2016-10-13 Opshub, Inc. Method and system for providing delta code coverage information
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质
CN108829580A (zh) * 2018-05-07 2018-11-16 百度在线网络技术(北京)有限公司 多版本测试数据处理方法、装置、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160299835A1 (en) * 2015-04-08 2016-10-13 Opshub, Inc. Method and system for providing delta code coverage information
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN108829580A (zh) * 2018-05-07 2018-11-16 百度在线网络技术(北京)有限公司 多版本测试数据处理方法、装置、设备及存储介质
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111026647A (zh) * 2019-11-21 2020-04-17 广州品唯软件有限公司 代码覆盖率的获取方法、装置、计算机设备和存储介质
CN111026647B (zh) * 2019-11-21 2023-06-27 广州品唯软件有限公司 代码覆盖率的获取方法、装置、计算机设备和存储介质
CN112631926A (zh) * 2020-12-29 2021-04-09 平安银行股份有限公司 代码测试覆盖率显示方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN103150249B (zh) 一种自动化测试的方法和系统
Koziolek et al. A large-scale industrial case study on architecture-based software reliability analysis
CN109858886B (zh) 一种基于集成学习的费控成功率提升分析方法
CN103793315A (zh) 监视和改善软件开发质量
CN103425093B (zh) 生产工厂中故障状态自动恢复的方法和系统
CN110413532A (zh) 适用于敏捷测试的多过程版本变更代码覆盖率获取方法
EP3502872B1 (en) Pipeline task verification for a data processing platform
CN106407640A (zh) 数据可靠性分析
CN107256457A (zh) 一种电能表自动化检定车间智能巡检系统
CN108287897A (zh) 一种可视化的分布式数据修复工具及其方法
Donghan et al. Applications and analysis of digital twin in prognostic and health management
Jharko Life cycle and quality assurance of software for systems of critical information infrastructure facilities
Markoska et al. Continuous commissioning of buildings: A case study of a campus building in Denmark
CN108132802B (zh) 一种配置模型在系统开发中的应用方法
CN106201888A (zh) 智能视频叠加处理器自动测试方法及装置
Linger et al. Cleanroom Software Engineering Reference Model: Version 1.0
CN112445948A (zh) 一种配网线变关系数据诊断分析软件系统
Hashmi et al. Impact of Software Quality Standards on Commercial Product Development and Customer Satisfaction for Software Industry in Pakistan
Li et al. FPGA software testing process management
CN117391552B (zh) 基于数字孪生的建筑部件质量控制系统及方法
Wang et al. Verification and validation of simulation models and applications: A methodological approach
Xu et al. Design of uninterruptible patrol system for electric power equipment based on digital twin technology
CN117390590B (zh) 一种基于cim模型的数据管理方法及系统
WO2021111936A1 (ja) 予測システム、情報処理装置および情報処理プログラム
CN117010050A (zh) 一种基于gis的水工结构管理系统及方法

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20191105