CN109542789A - 一种代码覆盖率统计方法及装置 - Google Patents
一种代码覆盖率统计方法及装置 Download PDFInfo
- Publication number
- CN109542789A CN109542789A CN201811416495.0A CN201811416495A CN109542789A CN 109542789 A CN109542789 A CN 109542789A CN 201811416495 A CN201811416495 A CN 201811416495A CN 109542789 A CN109542789 A CN 109542789A
- Authority
- CN
- China
- Prior art keywords
- code
- data
- filtering rule
- project
- measured
- 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
Links
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
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
技术领域
本发明涉及计算机领域,特别是涉及一种代码覆盖率统计方法及装置。
背景技术
软件测试是软件构建过程中非常重要的一环,通过软件测试可以发现软件隐藏的问题,并衡量软件的质量。在所有的软件测试中,单元测试是一个重要环节,其中,单元测试是针对应用程序中可测试的最小单元的测试,所述最小单元一般指方法、类以及可实现一个功能的代码段。
代码覆盖是软件测试中的一种度量,用于描述程式中源代码被测试的比例和程度。其中,源代码被测试的比例成为代码覆盖率。代码覆盖率是单元测试考量的重要指标之一,代码覆盖率高则表示被测代码多,覆盖率低则表示被测代码少。但是,在现有技术中的单元测试过程中通常是针对所有的代码进行测试,这样获得的代码覆盖率测试报告,无法指导开发和测试人员对核心代码的测试,进而使得在开发过程中无法保证代码的质量。
发明内容
针对于上述问题,本发明提供一种代码覆盖率统计方法及装置,基于为开发测试人员提供精准的代码覆盖率测试报告作为参考,实现了对核心代码进行测试的目的。
为了实现上述目的,本发明提供了如下技术方案:
一种代码覆盖率统计方法,该方法包括:
基于待测项目,配置获得代码测试的过滤规则文件;
对所述待测项目进行单元测试,获得初始代码覆盖率报告;
基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据;
基于所述目标统计数据,生成目标代码覆盖率报告。
可选地,所述基于待测项目,配置获得代码测试的过滤规则文件,包括:
基于待测项目,确定与所述待测项目匹配的代码层级;
按照所述代码层级的配置顺序,将所述代码层级中满足预设过滤条件的数据,生成代码测试的过滤规则文件。
可选地,所述代码层级包括:
包、类、方法、代码、分支中的一种或几种。
可选地,所述基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据,包括:
按照所述过滤规则文件中的代码层级,确定与所述过滤规则文件匹配的过滤顺序;
基于所述过滤顺序对所述初始代码覆盖率报告的统计数据进行逐层过滤,并在每一层过滤后计算获得覆盖率数据;
当所述过滤规则文件的过滤规则全部过滤完成就,根据每一层过滤后获得的覆盖率数据,生成目标统计数据。
可选地,所述基于所述目标统计数据,生成目标代码覆盖率报告,包括:
读取所述目标统计数据,获得行覆盖数据和分支覆盖数据;
根据所述行覆盖数据和所述分支覆盖数据,计算获得覆盖率数据,其中,所述覆盖率数据包括行覆盖率、分支覆盖率和总体覆盖率;
根据所述覆盖率数据,生成目标代码覆盖率报告。
可选地,该方法还包括:
响应于基于待测项目配置获得过滤规则文件,将所述过滤规则文件与所述待测项目进行匹配存储,生成过滤规则文件库。
可选地,该方法还包括:
响应于待测项目进行单元测试之前,基于所述过滤规则文件库和所述待测项目的项目信息,生成过滤规则提示信息,其中,所述提示信息用于对过滤规则的配置进行指导。
一种代码覆盖率统计装置,该装置包括:
规则配置单元,用于基于待测项目,配置获得代码测试的过滤规则文件;
初始测试单元,用于对所述待测项目进行单元测试,获得初始代码覆盖率报告;
过滤单元,用于基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据;
报告生成单元,用于基于所述目标统计数据,生成目标代码覆盖率报告。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理设备执行时实现上述的代码覆盖率统计方法。
一种电子设备,所述设备包括:
存储器,用于存储程序;
处理器,用于运行所述程序,当所述处理器运行所述程序时,所述处理器实现了所述的代码覆盖率统计方法。
相较于现有技术,本发明提供了一种代码覆盖率统计方法及装置,在该方法中能够配置获得与待测项目相匹配的过滤规则文件,这样可以将待测项目的非核心代码进行过滤,然后重现获得的目标统计数据能够更加符合被测项目的代码开发的需求,依据目标统计数据,生成的目标代码覆盖率可以为开发测试人员提供更精准的参考数据,进而实现了对核心代码进行测试的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种代码覆盖率统计方法的流程示意图;
图2为本发明实施例提供的一种过滤规则配置文件的生成方法的流程示意图;
图3为本发明实施例提供的一种过滤引擎进行逐层过滤的方法的流程示意图;
图4为本发明实施例提供的一种代码覆盖率统计装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
在本发明实施例中提供了一种代码覆盖率统计方法,参见图1,该方法包括:
S101、基于待测项目,配置获得代码测试的过滤规则文件。
对于每一个准备进行测试的代码项目,并不是所有的代码都需要统计其覆盖率,例如,框架自动生成的类、函数、代码等这些较为成熟的代码并不需要每次进行代码测试时都进行测试,所以为了能够针对核心代码的测试,应该在代码覆盖率的统计过程中对这些数据进行剔除。
在本发明实施例中,将这类不需要进行代码覆盖率统计的相关数据生成过滤规则文件。在该过滤规则文件中记载了不需要进行统计的规则。
为了提高整体统计的效率,并降低数据处理的复杂性。在本发明实施例中还提供了一种过滤规则配置文件的生成方法,参见图2,该方法包括:
S201、基于待测项目,确定与所述待测项目匹配的代码层级;
S202、按照所述代码层级的配置顺序,将所述代码层级中满足预设过滤条件的数据,生成代码测试的过滤规则文件。
在生成过滤规则文件的时候需要考虑代码层级,该代码层级表示代码层之间的大小关系或者能够表征上下级的关系。例如,将代码层级分为了包、类、方法、代码和分支五个层级对代码覆盖做过滤,并且层级是一个由大到小的关系。
根据该代码层级确定满足预设过滤条件的数据作为过滤规则,其中,预设过滤条件规定了需要进行过滤的代码,例如,需要过滤哪些包、哪些类等等。这样按层级编写配置过滤规则的好处是一方面可以使得代码过滤上更加清晰,另一方面可以使得工作量减少,若过滤掉某个包,则可以同时过滤掉这个包涵盖的类、方法等。
S102、对待测项目进行单元测试,获得初始代码覆盖率报告。
对于还未进行单元测试的待测项目,先对其按照传统的测试方式进行测试然后获得一个初始代码覆盖率报告,该报告为对所有代码进行测试的报告。当然,若已经进行了单元测试的项目,则可以直接获得代码覆盖率报告。需要说明的是,在本发明实施例中单元测试只是代码测试的一个最小单元,当然也可以采用其他的测试方式,也属于代码测试的范围,本发明实施例不做一一解释说明。
S103、基于过滤规则文件对初始代码覆盖率报告的统计数据进行过滤,获得目标统计数据。
读取待测项目的初始代码覆盖率报告的所有统计数据,包括总行数、航覆盖率、总分支数据、分支覆盖率、总方法数据、总类数等。从过滤规则文件中获取过滤规则将需要过滤的代码相关的统计数据从该初始统计数据中减去,得到新的统计数据并保存。需要说明的是,该过滤规则文件中过滤规则可能包括多条或者多层,需要按照一定的顺序逐层过滤可以提高过滤准确性和效率。
对应的,在本发明的另一实施例中提供了一种逐层过滤的方法,该方法包括:
按照所述过滤规则文件中的代码层级,确定与所述过滤规则文件匹配的过滤顺序;
基于所述过滤顺序对所述初始代码覆盖率报告的统计数据进行逐层过滤,并在每一层过滤后计算获得覆盖率数据;
当所述过滤规则文件的过滤规则全部过滤完成就,根据每一层过滤后获得的覆盖率数据,生成目标统计数据。
由于在过滤规则文件的配置过程中是按照代码层级的配置顺序进行配置的,所以在过滤时需要按照该配置顺序确定一个过滤顺序,即先过滤哪个规则再过滤哪个规则,通常按照一个从大到小的顺序,例如,先过滤包、再过滤类,然后过滤方法层级。最终将每个层级过滤后的数据进行汇总重新计算获得统计数据,即目标统计数据。
S104、基于所述目标统计数据,生成目标代码覆盖率报告。
根据重新计算获得的目标统计数据,同时还可以根据报告呈现的形式和要求,生成该目标代码覆盖率报告,为测试人员提供数据参考。
例如,目标代买覆盖率报告中会包括多个覆盖率数据,通常直观呈现的是行覆盖率、分支覆盖率和总体覆盖率。对应的该报告的生成过程可以包括:
读取所述目标统计数据,获得行覆盖数据和分支覆盖数据;
根据所述行覆盖数据和所述分支覆盖数据,计算获得覆盖率数据,其中,所述覆盖率数据包括行覆盖率、分支覆盖率和总体覆盖率;
根据所述覆盖率数据,生成目标代码覆盖率报告。
本发明提供了一种代码覆盖率统计方法,在该方法中能够配置获得与待测项目相匹配的过滤规则文件,这样可以将待测项目的非核心代码进行过滤,然后重现获得的目标统计数据能够更加符合被测项目的代码开发的需求,依据目标统计数据,生成的目标代码覆盖率可以为开发测试人员提供更精准的参考数据,进而实现了对核心代码进行测试的目的。
下面以一个具体的过滤实例说明本发明提供的代码覆盖率统计方法。
首先,通过可配置界面配置代码过滤规则,若此时配置获得的过滤规则文件中分四层配置,即包、类、方法、代码,将规则存储在数据库中。例如,过滤规则分别为:剔除包xx.xx.xx.xx.dto.basic.role,剔除类xx.xx.xx.xx.dto.business.DictDto。
然后,可以通过启动过滤引擎,该过滤引擎可以自动读取原始的统计数据,也可以读取配置的过滤规则,然后分层逐级对初始代码覆盖率报告中的统计数据进行过滤,每一层过滤后重新计算覆盖率数据存储在数据库中。例如,过滤引擎可以是利用Java代码实现的一套对多种过滤规则可识别并进行自动处理的软件。从数据库中读取所有的过滤规则,识别规则后逐层对代码进行剔除,剔除后重新计算整体代码的覆盖率。
最后,读取最终计算得到的覆盖率数据,生成新的覆盖率报告并展示。覆盖率报告生成是将数据库中的覆盖率报告数据获取后解析生成一系列静态html的页面,页面上反应项目整体、各个包、各个类、每一行代码的覆盖率等情况,可用Web浏览器打开查看。
参见图3,为本发明实施例提供的一种过滤引擎进行逐层过滤的方法,在该方法中配置了包过滤规则、类过滤规则、方法过滤规则和代码过滤规则,具体的该方法包括:
S301、根据包过滤规则,剔除不必要的包,重新计算覆盖率统计数据;
S302、根据类过滤规则,剔除不必要的类,重新计算覆盖率统计数据;
S303、根据方法过滤规则,剔除不必要的方法,重新计算覆盖率统计数据;
S304、根据代码过滤规则,剔除不必要的代码,重新计算覆盖率统计数据;
S305、根据步骤301-304,获得新计算的覆盖率统计数据。
在过滤过程中这四层过滤规则可灵活组合使用,最后一层过滤完成后计算的整体覆盖率就是最终值。
在本发明的另一实施例中还提供了一种将过滤规则文件进行存储和调用的方法,包括:
响应于基于待测项目配置获得过滤规则文件,将所述过滤规则文件与所述待测项目进行匹配存储,生成过滤规则文件库。
响应于待测项目进行单元测试之前,基于所述过滤规则文件库和所述待测项目的项目信息,生成过滤规则提示信息,其中,所述提示信息用于对过滤规则的配置进行指导。
可以建立一个过滤规则文件库,可以将每个项目配置的过滤规则文件进行存储,并且设置访问权限,具有权限的管理人员或者测试人员才可以访问该数据库,当一个新的项目进行代码测试时,可以依据该项目的项目信息即项目的类型、项目主要涉及的代码语言、方法和目的等,生成过滤规则提示信息,该提示信息可以为提示配置过滤规则、也可以提供过滤规则模版,便于对测试人员配置过程的参考,提高其工作效率。
通过本发明提供的代码覆盖率统计方法不仅可以实现了对核心代码进行测试的目的,还可以提高覆盖率。让团队更加精准定位需要测试的代码范围,编写单元测试用例,快速覆盖核心功能点。
在本发明实施例中还提供了一种代码覆盖率统计装置,参见图4,该装置包括:
规则配置单元401,用于基于待测项目,配置获得代码测试的过滤规则文件;
初始测试单元402,用于对所述待测项目进行单元测试,获得初始代码覆盖率报告;
过滤单元403,用于基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据;
报告生成单元404,用于基于所述目标统计数据,生成目标代码覆盖率报告。
在本发明实施例提供的代码覆盖率统计装置,通过规则配置单元对过滤规则进行配置,然后在初始测试单元中获得初始代码覆盖率报告,基于过滤单元调用规则配置单元中的过滤规则对统计数据中的相关数据进行过滤,可以将待测项目的非核心代码进行过滤,然后重现获得的目标统计数据能够更加符合被测项目的代码开发的需求,依据目标统计数据,生成的目标代码覆盖率可以为开发测试人员提供更精准的参考数据,进而实现了对核心代码进行测试的目的。
在上述实施例的基础上,规则配置单元401包括:
层级确定子单元,用于基于待测项目,确定与所述待测项目匹配的代码层级;
配置子单元,用于按照所述代码层级的配置顺序,将所述代码层级中满足预设过滤条件的数据,生成代码测试的过滤规则文件。
具体的,所述代码层级包括:
包、类、方法、代码、分支中的一种或几种。
对应的,过滤单元403包括:
顺序确定子单元,用于按照所述过滤规则文件中的代码层级,确定与所述过滤规则文件匹配的过滤顺序;
过滤子单元,用于基于所述过滤顺序对所述初始代码覆盖率报告的统计数据进行逐层过滤,并在每一层过滤后计算获得覆盖率数据;
生成子单元,用于当所述过滤规则文件的过滤规则全部过滤完成就,根据每一层过滤后获得的覆盖率数据,生成目标统计数据。
在上述实施例的基础上,报告生成单元404包括:
读取子单元,用于读取所述目标统计数据,获得行覆盖数据和分支覆盖数据;
计算子单元,用于根据所述行覆盖数据和所述分支覆盖数据,计算获得覆盖率数据,其中,所述覆盖率数据包括行覆盖率、分支覆盖率和总体覆盖率;
报告生成子单元,用于根据所述覆盖率数据,生成目标代码覆盖率报告。
在上述实施例的基础上,该装置还包括:
规则存储单元,用于响应于基于待测项目配置获得过滤规则文件,将所述过滤规则文件与所述待测项目进行匹配存储,生成过滤规则文件库;
信息提示单元,用于响应于待测项目进行单元测试之前,基于所述过滤规则文件库和所述待测项目的项目信息,生成过滤规则提示信息,其中,所述提示信息用于对过滤规则的配置进行指导。
本发明还提供了一种计算机程序存储介质,其上存储有计算机程序,适于执行初始化有如下方法步骤的程序:
基于待测项目,配置获得代码测试的过滤规则文件;
对所述待测项目进行单元测试,获得初始代码覆盖率报告;
基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据;
基于所述目标统计数据,生成目标代码覆盖率报告。
进一步的,所述基于待测项目,配置获得代码测试的过滤规则文件,包括:
基于待测项目,确定与所述待测项目匹配的代码层级;
按照所述代码层级的配置顺序,将所述代码层级中满足预设过滤条件的数据,生成代码测试的过滤规则文件。
进一步的,所述代码层级包括:
包、类、方法、代码、分支中的一种或几种。
进一步的,所述基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据,包括:
按照所述过滤规则文件中的代码层级,确定与所述过滤规则文件匹配的过滤顺序;
基于所述过滤顺序对所述初始代码覆盖率报告的统计数据进行逐层过滤,并在每一层过滤后计算获得覆盖率数据;
当所述过滤规则文件的过滤规则全部过滤完成就,根据每一层过滤后获得的覆盖率数据,生成目标统计数据。
进一步的,所述基于所述目标统计数据,生成目标代码覆盖率报告,包括:
读取所述目标统计数据,获得行覆盖数据和分支覆盖数据;
根据所述行覆盖数据和所述分支覆盖数据,计算获得覆盖率数据,其中,所述覆盖率数据包括行覆盖率、分支覆盖率和总体覆盖率;
根据所述覆盖率数据,生成目标代码覆盖率报告。
进一步的,该方法还包括:
响应于基于待测项目配置获得过滤规则文件,将所述过滤规则文件与所述待测项目进行匹配存储,生成过滤规则文件库。
进一步的,该方法还包括:
响应于待测项目进行单元测试之前,基于所述过滤规则文件库和所述待测项目的项目信息,生成过滤规则提示信息,其中,所述提示信息用于对过滤规则的配置进行指导。
本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
基于待测项目,配置获得代码测试的过滤规则文件;
对所述待测项目进行单元测试,获得初始代码覆盖率报告;
基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据;
基于所述目标统计数据,生成目标代码覆盖率报告。
进一步的,所述基于待测项目,配置获得代码测试的过滤规则文件,包括:
基于待测项目,确定与所述待测项目匹配的代码层级;
按照所述代码层级的配置顺序,将所述代码层级中满足预设过滤条件的数据,生成代码测试的过滤规则文件。
进一步的,所述代码层级包括:
包、类、方法、代码、分支中的一种或几种。
进一步的,所述基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据,包括:
按照所述过滤规则文件中的代码层级,确定与所述过滤规则文件匹配的过滤顺序;
基于所述过滤顺序对所述初始代码覆盖率报告的统计数据进行逐层过滤,并在每一层过滤后计算获得覆盖率数据;
当所述过滤规则文件的过滤规则全部过滤完成就,根据每一层过滤后获得的覆盖率数据,生成目标统计数据。
进一步的,所述基于所述目标统计数据,生成目标代码覆盖率报告,包括:
读取所述目标统计数据,获得行覆盖数据和分支覆盖数据;
根据所述行覆盖数据和所述分支覆盖数据,计算获得覆盖率数据,其中,所述覆盖率数据包括行覆盖率、分支覆盖率和总体覆盖率;
根据所述覆盖率数据,生成目标代码覆盖率报告。
进一步的,该方法还包括:
响应于基于待测项目配置获得过滤规则文件,将所述过滤规则文件与所述待测项目进行匹配存储,生成过滤规则文件库。
进一步的,该方法还包括:
响应于待测项目进行单元测试之前,基于所述过滤规则文件库和所述待测项目的项目信息,生成过滤规则提示信息,其中,所述提示信息用于对过滤规则的配置进行指导。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本文中的电子设备可以是服务器、PC、PAD、手机等。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种代码覆盖率统计方法,其特征在于,该方法包括:
基于待测项目,配置获得代码测试的过滤规则文件;
对所述待测项目进行单元测试,获得初始代码覆盖率报告;
基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据;
基于所述目标统计数据,生成目标代码覆盖率报告。
2.根据权利要求1所述的方法,其特征在于,所述基于待测项目,配置获得代码测试的过滤规则文件,包括:
基于待测项目,确定与所述待测项目匹配的代码层级;
按照所述代码层级的配置顺序,将所述代码层级中满足预设过滤条件的数据,生成代码测试的过滤规则文件。
3.根据权利要求2所述的方法,其特征在于,所述代码层级包括:
包、类、方法、代码、分支中的一种或几种。
4.根据权利要求3所述的方法,其特征在于,所述基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据,包括:
按照所述过滤规则文件中的代码层级,确定与所述过滤规则文件匹配的过滤顺序;
基于所述过滤顺序对所述初始代码覆盖率报告的统计数据进行逐层过滤,并在每一层过滤后计算获得覆盖率数据;
当所述过滤规则文件的过滤规则全部过滤完成就,根据每一层过滤后获得的覆盖率数据,生成目标统计数据。
5.根据权利要求4所述的方法,其特征在于,所述基于所述目标统计数据,生成目标代码覆盖率报告,包括:
读取所述目标统计数据,获得行覆盖数据和分支覆盖数据;
根据所述行覆盖数据和所述分支覆盖数据,计算获得覆盖率数据,其中,所述覆盖率数据包括行覆盖率、分支覆盖率和总体覆盖率;
根据所述覆盖率数据,生成目标代码覆盖率报告。
6.根据权利要求1所述的方法,其特征在于,该方法还包括:
响应于基于待测项目配置获得过滤规则文件,将所述过滤规则文件与所述待测项目进行匹配存储,生成过滤规则文件库。
7.根据权利要求6所述的方法,其特征在于,该方法还包括:
响应于待测项目进行单元测试之前,基于所述过滤规则文件库和所述待测项目的项目信息,生成过滤规则提示信息,其中,所述提示信息用于对过滤规则的配置进行指导。
8.一种代码覆盖率统计装置,其特征在于,该装置包括:
规则配置单元,用于基于待测项目,配置获得代码测试的过滤规则文件;
初始测试单元,用于对所述待测项目进行单元测试,获得初始代码覆盖率报告;
过滤单元,用于基于所述过滤规则文件对所述始代码覆盖率报告的统计数据进行过滤,获得目标统计数据;
报告生成单元,用于基于所述目标统计数据,生成目标代码覆盖率报告。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理设备执行时实现权利要求1-7所述的代码覆盖率统计方法。
10.一种电子设备,其特征在于,所述设备包括:
存储器,用于存储程序;
处理器,用于运行所述程序,当所述处理器运行所述程序时,所述处理器实现了权利要求1-7所述的代码覆盖率统计方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811416495.0A CN109542789B (zh) | 2018-11-26 | 2018-11-26 | 一种代码覆盖率统计方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811416495.0A CN109542789B (zh) | 2018-11-26 | 2018-11-26 | 一种代码覆盖率统计方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542789A true CN109542789A (zh) | 2019-03-29 |
CN109542789B CN109542789B (zh) | 2022-03-25 |
Family
ID=65850245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811416495.0A Active CN109542789B (zh) | 2018-11-26 | 2018-11-26 | 一种代码覆盖率统计方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542789B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309055A (zh) * | 2019-05-23 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 |
CN110888811A (zh) * | 2019-11-21 | 2020-03-17 | 望海康信(北京)科技股份公司 | 代码覆盖率信息处理方法、装置、电子设备及介质 |
CN110888817A (zh) * | 2019-12-18 | 2020-03-17 | 广州唯品会研究院有限公司 | 代码覆盖率报告的生成方法、装置和可读存储介质 |
CN111104332A (zh) * | 2019-12-20 | 2020-05-05 | 广州品唯软件有限公司 | 覆盖率测试方法,测试装置,服务设备及可读存储介质 |
CN111881051A (zh) * | 2020-08-03 | 2020-11-03 | Oppo广东移动通信有限公司 | 测试用例的生成方法、装置、终端及存储介质 |
CN112182510A (zh) * | 2020-09-17 | 2021-01-05 | 支付宝(杭州)信息技术有限公司 | 产品覆盖程度的度量方法、装置及设备 |
CN112860583A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | 基于日志的测试全面性检测方法、装置、设备及存储介质 |
CN112860556A (zh) * | 2021-02-18 | 2021-05-28 | 中国工商银行股份有限公司 | 覆盖率统计方法、装置、计算机系统和可读存储介质 |
CN113220560A (zh) * | 2020-01-21 | 2021-08-06 | 百度在线网络技术(北京)有限公司 | 一种代码测试方法、装置、电子设备及存储介质 |
CN113448850A (zh) * | 2021-06-29 | 2021-09-28 | 平安健康保险股份有限公司 | 方法调用链的可视化方法、系统、设备及介质 |
CN117407267A (zh) * | 2022-07-07 | 2024-01-16 | 格兰菲智能科技有限公司 | 条件分支覆盖率计算方法、装置、计算机设备、存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120304010A1 (en) * | 2011-05-25 | 2012-11-29 | Microsoft Corporation | Code coverage-based taint perimeter detection |
CN103631707A (zh) * | 2012-08-27 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 一种获取代码覆盖率的方法及装置 |
CN104375932A (zh) * | 2014-08-27 | 2015-02-25 | 北京中电华大电子设计有限责任公司 | 一种Java卡代码覆盖率分析方法和装置 |
CN104809071A (zh) * | 2015-05-14 | 2015-07-29 | 北京润科通用技术有限公司 | 一种代码测试方法及装置 |
CN105224460A (zh) * | 2015-10-23 | 2016-01-06 | 浪潮电子信息产业股份有限公司 | 一种基于插装技术统计测试覆盖率的方法 |
CN105446884A (zh) * | 2015-12-16 | 2016-03-30 | 北京奇虎科技有限公司 | 代码覆盖率的测试方法及装置 |
CN105630671A (zh) * | 2015-12-16 | 2016-06-01 | 北京奇虎科技有限公司 | 代码覆盖率报告的生成方法及装置 |
US9489289B2 (en) * | 2014-12-09 | 2016-11-08 | Sap Se | Adaptive framework automatically prioritizing software test cases |
CN106201863A (zh) * | 2016-06-22 | 2016-12-07 | 广州唯品会信息科技有限公司 | 一种获取代码覆盖率的方法和装置 |
US20170075794A1 (en) * | 2015-09-14 | 2017-03-16 | Salesforce.Com, Inc. | Methods and systems for computing code coverage using grouped/filtered source classes during testing of an application |
CN106547680A (zh) * | 2015-09-17 | 2017-03-29 | 腾讯科技(深圳)有限公司 | 覆盖率测试中的数据处理方法和装置 |
CN106874187A (zh) * | 2016-12-29 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 代码覆盖率收集方法和装置 |
CN107797923A (zh) * | 2017-10-10 | 2018-03-13 | 平安科技(深圳)有限公司 | 代码覆盖率分析方法及应用服务器 |
US20180173610A1 (en) * | 2016-12-19 | 2018-06-21 | Mediatek Inc. | Method for performing cared-zone code coverage evaluation with no source code modification |
CN108197036A (zh) * | 2018-02-06 | 2018-06-22 | 百度在线网络技术(北京)有限公司 | 用于确定增量代码的覆盖率信息的方法和装置 |
-
2018
- 2018-11-26 CN CN201811416495.0A patent/CN109542789B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120304010A1 (en) * | 2011-05-25 | 2012-11-29 | Microsoft Corporation | Code coverage-based taint perimeter detection |
CN103631707A (zh) * | 2012-08-27 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 一种获取代码覆盖率的方法及装置 |
CN104375932A (zh) * | 2014-08-27 | 2015-02-25 | 北京中电华大电子设计有限责任公司 | 一种Java卡代码覆盖率分析方法和装置 |
US9489289B2 (en) * | 2014-12-09 | 2016-11-08 | Sap Se | Adaptive framework automatically prioritizing software test cases |
CN104809071A (zh) * | 2015-05-14 | 2015-07-29 | 北京润科通用技术有限公司 | 一种代码测试方法及装置 |
US20170075794A1 (en) * | 2015-09-14 | 2017-03-16 | Salesforce.Com, Inc. | Methods and systems for computing code coverage using grouped/filtered source classes during testing of an application |
CN106547680A (zh) * | 2015-09-17 | 2017-03-29 | 腾讯科技(深圳)有限公司 | 覆盖率测试中的数据处理方法和装置 |
CN105224460A (zh) * | 2015-10-23 | 2016-01-06 | 浪潮电子信息产业股份有限公司 | 一种基于插装技术统计测试覆盖率的方法 |
CN105630671A (zh) * | 2015-12-16 | 2016-06-01 | 北京奇虎科技有限公司 | 代码覆盖率报告的生成方法及装置 |
CN105446884A (zh) * | 2015-12-16 | 2016-03-30 | 北京奇虎科技有限公司 | 代码覆盖率的测试方法及装置 |
CN106201863A (zh) * | 2016-06-22 | 2016-12-07 | 广州唯品会信息科技有限公司 | 一种获取代码覆盖率的方法和装置 |
US20180173610A1 (en) * | 2016-12-19 | 2018-06-21 | Mediatek Inc. | Method for performing cared-zone code coverage evaluation with no source code modification |
CN106874187A (zh) * | 2016-12-29 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 代码覆盖率收集方法和装置 |
CN107797923A (zh) * | 2017-10-10 | 2018-03-13 | 平安科技(深圳)有限公司 | 代码覆盖率分析方法及应用服务器 |
CN108197036A (zh) * | 2018-02-06 | 2018-06-22 | 百度在线网络技术(北京)有限公司 | 用于确定增量代码的覆盖率信息的方法和装置 |
Non-Patent Citations (2)
Title |
---|
漆工: "代码测试覆盖率分析", 《HTTPS://SEGMENTFAULT.COM/A/1190000010838845》 * |
章晓芳: "众包软件测试技术研究进展", 《软件学报》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309055A (zh) * | 2019-05-23 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 |
CN110888811A (zh) * | 2019-11-21 | 2020-03-17 | 望海康信(北京)科技股份公司 | 代码覆盖率信息处理方法、装置、电子设备及介质 |
CN110888817A (zh) * | 2019-12-18 | 2020-03-17 | 广州唯品会研究院有限公司 | 代码覆盖率报告的生成方法、装置和可读存储介质 |
CN110888817B (zh) * | 2019-12-18 | 2023-10-24 | 广州品唯软件有限公司 | 代码覆盖率报告的生成方法、装置和可读存储介质 |
CN111104332B (zh) * | 2019-12-20 | 2024-01-30 | 广州品唯软件有限公司 | 覆盖率测试方法,测试装置,服务设备及可读存储介质 |
CN111104332A (zh) * | 2019-12-20 | 2020-05-05 | 广州品唯软件有限公司 | 覆盖率测试方法,测试装置,服务设备及可读存储介质 |
CN113220560A (zh) * | 2020-01-21 | 2021-08-06 | 百度在线网络技术(北京)有限公司 | 一种代码测试方法、装置、电子设备及存储介质 |
CN111881051A (zh) * | 2020-08-03 | 2020-11-03 | Oppo广东移动通信有限公司 | 测试用例的生成方法、装置、终端及存储介质 |
CN112182510A (zh) * | 2020-09-17 | 2021-01-05 | 支付宝(杭州)信息技术有限公司 | 产品覆盖程度的度量方法、装置及设备 |
CN112860556A (zh) * | 2021-02-18 | 2021-05-28 | 中国工商银行股份有限公司 | 覆盖率统计方法、装置、计算机系统和可读存储介质 |
CN112860556B (zh) * | 2021-02-18 | 2024-04-02 | 中国工商银行股份有限公司 | 覆盖率统计方法、装置、计算机系统和可读存储介质 |
CN112860583A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | 基于日志的测试全面性检测方法、装置、设备及存储介质 |
CN112860583B (zh) * | 2021-03-29 | 2024-06-11 | 中信银行股份有限公司 | 基于日志的测试全面性检测方法、装置、设备及存储介质 |
CN113448850A (zh) * | 2021-06-29 | 2021-09-28 | 平安健康保险股份有限公司 | 方法调用链的可视化方法、系统、设备及介质 |
CN117407267A (zh) * | 2022-07-07 | 2024-01-16 | 格兰菲智能科技有限公司 | 条件分支覆盖率计算方法、装置、计算机设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109542789B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542789A (zh) | 一种代码覆盖率统计方法及装置 | |
CN103761189B (zh) | 一种测试用例管理方法及系统 | |
CN108573355A (zh) | 模型更新后替换运行的方法、装置、及业务服务器 | |
CN109242135A (zh) | 一种模型运营方法、装置、及业务服务器 | |
CN107229559A (zh) | 针对业务系统的测试完整度的检测方法和装置 | |
CN109558746A (zh) | 数据脱敏方法、装置、电子设备及存储介质 | |
CN109598407A (zh) | 一种业务流程的执行方法及装置 | |
CN106325826A (zh) | 检测配置文件方法及装置 | |
CN109033174A (zh) | 一种电能质量数据清洗方法及装置 | |
CN110929965A (zh) | 一种项目风险评估方法及装置 | |
CN106201856A (zh) | 一种多版本性能测试方法及装置 | |
CN107480040A (zh) | 工作流稳定性测试方法及设备 | |
CN108681542A (zh) | 一种异常检测的方法及装置 | |
CN110516009A (zh) | 指标系统的建立方法、建立装置、存储介质和处理器 | |
CN106155897A (zh) | 一种业务处理方法及装置 | |
CN109583475A (zh) | 异常信息的监测方法及装置 | |
CN106708723B (zh) | 一种测试、校验方法及装置 | |
CN114511235A (zh) | 流程评估方法及系统 | |
CN105159826B (zh) | 一种定位目标程序中的错误语句的方法和装置 | |
CN110490132A (zh) | 数据处理方法和装置 | |
CN110309948A (zh) | 整车物流订单预测方法及装置、物流系统以及计算机可读介质 | |
CN106021047A (zh) | 一种对硬盘测试数据进行处理的方法及装置 | |
CN106570029A (zh) | 分布式关系型数据库的数据处理方法及系统 | |
CN108121780A (zh) | 数据分析模型确定方法及装置 | |
CN105867886A (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 |