代码覆盖率统计方法、装置、电子设备及可读存储介质制造方法及图纸

技术编号:21605222 阅读:18 留言:0更新日期:2019-07-13 18:07
本发明专利技术公开了一种代码覆盖率统计方法、装置、电子设备及可读存储介质。所述方法,包括:根据目标项目的源代码,识别所述目标项目所包含的子模块,所述子模块包括主运行子模块和非主运行子模块;分别获取每个所述子模块对应的编译文件;根据所述编译文件,分别统计每个所述子模块的代码覆盖率。由此解决了现有的代码覆盖率统计方法针对包含多个子模块的项目的代码覆盖率统计结果准确性不高的技术问题。取得了提高代码覆盖率统计结果准确性的有益效果。

Statistical methods, devices, electronic devices and readable storage media for code coverage

【技术实现步骤摘要】
代码覆盖率统计方法、装置、电子设备及可读存储介质
本专利技术涉及软件测试
,具体涉及一种代码覆盖率统计方法、装置、电子设备及可读存储介质。
技术介绍
在软件测试中,代码覆盖率常常被拿来作为衡量测试好坏的指标之一,在对一个软件产品进行了单元测试、组装测试、集成测试以及接口测试等繁多的测试之后,代码覆盖率为这些测试提供了可以量化的保证。代码覆盖率是指一个软件被运行的过程中,其被运行过的代码,与全部代码的比例。另外,随着计算机技术的快速发展,分模块管理是近几年新的一种服务管理方式。在分模块管理模式下,每一个服务可以由多个子模块构成,其中一个模块为主运行模块,提供对外接口,但不负责主要核心逻辑处理。其他模块为非主运行模块,以被依赖类库的形式被主模块依赖和调用。虽然非主运行模块不提供对外接口,但是通常负责一个或多个核心逻辑的处理。所以其重要程度不亚于甚至要与主运行模块。而现有代码覆盖率统计工具,是基于传统的单模块管理服务架构设计的。那么在分模块管理的服务的代码覆盖率测试场景中,只能统计主运行模块的代码覆盖率,而无法统计以依赖类库形式存在的非主运行模块的代码覆盖率,使得代码覆盖率统计数据的可靠性不足。
技术实现思路
本专利技术提供一种代码覆盖率统计方法、装置、电子设备及可读存储介质,以部分或全部解决现有技术中代码覆盖率统计过程相关的上述问题。依据本专利技术第一方面,提供了一种代码覆盖率统计方法,包括:根据目标项目的源代码,识别所述目标项目所包含的子模块,所述子模块包括主运行子模块和非主运行子模块;分别获取每个所述子模块对应的编译文件;根据所述编译文件,分别统计每个所述子模块的代码覆盖率。根据本专利技术的第二方面,提供了一种代码覆盖率统计装置,包括:子模块识别模块,用于根据目标项目的源代码,识别所述目标项目所包含的子模块,所述子模块包括主运行子模块和非主运行子模块;编译文件获取模块,用于分别获取每个所述子模块对应的编译文件;第一代码覆盖率统计模块,用于根据所述编译文件,分别统计每个所述子模块的代码覆盖率。根据本专利技术的第三方面,提供了一种电子设备,包括:处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现前述的代码覆盖率统计方法。根据本专利技术的第四方面,提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的代码覆盖率统计方法。根据本专利技术的代码覆盖率统计方法,可以根据目标项目的源代码,识别所述目标项目所包含的子模块,所述子模块包括主运行子模块和非主运行子模块;分别获取每个所述子模块对应的编译文件;根据所述编译文件,分别统计每个所述子模块的代码覆盖率。由此解决了现有的代码覆盖率统计方法针对包含多个子模块的项目的代码覆盖率统计结果准确性不高的技术问题。取得了提高代码覆盖率统计结果准确性的有益效果。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的一种代码覆盖率统计方法的步骤流程图;图2示出了根据本专利技术一个实施例的一种代码覆盖率统计方法的步骤流程图;图3示出了根据本专利技术一个实施例的一种代码覆盖率统计装置的结构示意图;以及图4示出了根据本专利技术一个实施例的一种代码覆盖率统计装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。实施例一详细介绍本专利技术实施例提供的一种代码覆盖率统计方法。参照图1,示出了本专利技术实施例中一种代码覆盖率统计方法的步骤流程图。步骤110,根据目标项目的源代码,识别所述目标项目所包含的子模块,所述子模块包括主运行子模块和非主运行子模块。如前述,分模块管理是近几年新的一种管理方式。每一个项目由多个子模块构成,其中一个子模块为主运行子模块,提供对外接口,但不负责主要核心逻辑处理。其他子模块为非主运行子模块,以被依赖类库的形式被主运行子模块依赖和调用。虽然非主运行子模块不提供对外接口,但是通常负责一个或多个核心逻辑的处理。所以其重要程度不亚于甚至超过主运行子模块。对于分为多个子模块的目标项目而言,为了获取得到每个子模块的代码覆盖率,可以根据目标项目的源代码,识别目标项目所包含的全部子模块。其中的子模块包括主运行子模块和非主运行子模块。具体的可以通过任何可用方法识别目标项目所包含的全部子模块,对此本专利技术实施例不加以限定。例如,可以通过扫描目标项目的代码仓库,识别目标项目的主运行子模块和被依赖的非主运行子模块,等等。步骤120,分别获取每个所述子模块对应的编译文件。如前述,代码覆盖率是指一个软件被运行的过程中,其被运行过的代码,与全部代码的比例。那么为了获取得到一个软件或者是子模块的代码覆盖率,则需要获取相应软件或者子模块对应的编译文件。其中的编译文件是指相应子模块的源代码经编译后生成的文件。在本专利技术实施例中,可以通过任何可用方法获取每个子模块对应的编译文件,对此本专利技术实施例不加以限定。例如,可以在目标项目对应的目标服务器中对目标项目的源代码进行编译,从而可以从目标项目对应的目标服务器中获取主运行子模块对应的编译文件,而且还可以从目标服务器中,在主运行子模块所依赖的全部依赖类库中,识别出由目标项目的非主运行子模块编译生成的依赖类库,进而获取得到各个非主运行子模块对应的编译文件。或者,可以直接基于目标项目中各个子模块对应的源代码,进而获取每个子模块对应的源代码经编译后得到的编译文件作为相应子模块对应的编译文件,等等。可选地,在本专利技术实施例中,所述步骤120进一步可以包括:子步骤121,根据所述目标项目的源代码,获取每个子模块对应的代码区段;子步骤122,根据每个所述子模块对应的所述代码区段,获取每个所述子模块对应的编译文件。在本专利技术实施例中,为了获取每个子模块对应的编译文件,可以先对源代码进行拆分,根据目标项目对应的全部源代码,获取每个子模块对应的代码区段,进而可以根据每个子模块对应的代码区段,获取相应每个子模块对应的编译文件。例如,在获取得到每个子模块对应的代码区段之后,则可以分别对每个代码片段进行编译,进而得到每个子模块对应的编译文件,等等。步骤130,根据所述编译文件,分别统计每个所述子模块的代码覆盖率。在获取得到各个子模块的编译文件之后,则可以根据每个子模块对应的编译文件,分别统计每个子模块的代码覆盖率。如前述,编译文件为经编译后得到的文件,那么则可以分别执行各个子模块对应的编译文件,从而可以基于执行后的编译文件,统计相应子模块对应被运行过的代码,与相应子模块对应的全部代码的比例,从而得到相应子本文档来自技高网...

【技术保护点】
1.一种代码覆盖率统计方法,其特征在于,包括:根据目标项目的源代码,识别所述目标项目所包含的子模块,所述子模块包括主运行子模块和非主运行子模块;分别获取每个所述子模块对应的编译文件;根据所述编译文件,分别统计每个所述子模块的代码覆盖率。

【技术特征摘要】
1.一种代码覆盖率统计方法,其特征在于,包括:根据目标项目的源代码,识别所述目标项目所包含的子模块,所述子模块包括主运行子模块和非主运行子模块;分别获取每个所述子模块对应的编译文件;根据所述编译文件,分别统计每个所述子模块的代码覆盖率。2.根据权利要求1所述的方法,其特征在于,所述分别获取每个所述子模块对应的编译文件的步骤,包括:从所述目标项目对应的目标服务器中,获取所述目标项目的主运行子模块对应的编译文件,以及所述主运行子模块所依赖的第一依赖类库;根据所述第一依赖类库,分别获取每个非主运行子模块对应的编译文件。3.根据权利要求2所述的方法,其特征在于,所述根据所述第一依赖类库,分别获取每个非主运行子模块对应的编译文件的步骤,包括:从所述第一依赖类库中获取每个所述非主运行子模块对应的第二依赖类库;根据所述第二依赖类库,获取得到每个所述非主运行子模块对应的编译文件。4.根据权利要求1~3之任一项所述的方法,其特征在于,所述分别获取每个所述子模块对应的编译文件的步骤,包括:根据所述目标项目的源代码,获取每个子模块对应的代码区段;根据每个所述子模块对应的所述代码区段,获取每个所述子模块对应的编译文件。5.根据权利要求1~3之任一项所述的方法,其特征在于,所述根据所述编译文件,分别统计每个所述子模块的代码覆盖率的步骤,包括:执行所述编译文件,并根据执行后的编译文件中标志位的标记...

【专利技术属性】
技术研发人员:鄂乾宇
申请(专利权)人:北京三快在线科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1