CN110413532A - 适用于敏捷测试的多过程版本变更代码覆盖率获取方法 - Google Patents
适用于敏捷测试的多过程版本变更代码覆盖率获取方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000008859 change Effects 0.000 title claims abstract description 70
- 238000012360 testing method Methods 0.000 title claims abstract description 41
- 230000008569 process Effects 0.000 title claims abstract description 34
- 230000004048 modification Effects 0.000 claims abstract description 24
- 238000012986 modification Methods 0.000 claims abstract description 24
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000010998 test method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test 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根据全量代码覆盖率数据及差异代码信息获取差异代码覆盖率数据包括:将被执行的代码的包、类、方法及行信息与被修改的代码的包、类、方法及行信息进行对比,获取被执行的代码中被修改代码占修改版本代码中被修改代码的总行数的比例。
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)
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)
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 | 百度在线网络技术(北京)有限公司 | 多版本测试数据处理方法、装置、设备及存储介质 |
-
2019
- 2019-08-08 CN CN201910731191.1A patent/CN110413532A/zh active Pending
Patent Citations (4)
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)
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 |