CN106201863A - 一种获取代码覆盖率的方法和装置 - Google Patents
一种获取代码覆盖率的方法和装置 Download PDFInfo
- Publication number
- CN106201863A CN106201863A CN201610474375.0A CN201610474375A CN106201863A CN 106201863 A CN106201863 A CN 106201863A CN 201610474375 A CN201610474375 A CN 201610474375A CN 106201863 A CN106201863 A CN 106201863A
- Authority
- CN
- China
- Prior art keywords
- code
- modified
- coverage
- information
- coverage data
- 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
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/3688—Test 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)
Abstract
本发明公开了一种获取代码覆盖率的方法,包括:将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,供所述服务器根据所述原始版本代码的唯一标识及所述修改版本代码的唯一标识,获取原始版本代码及修改版本代码,根据所述原始版本代码与所述修改版本代码获取总代码覆盖率数据及差异代码信息,将所述总代码覆盖率数据及所述差异代码信息反馈至客户端;接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据。本发明还公开了一种获取代码覆盖率的装置。本发明提高了代码覆盖率的获取准确性,以及提高开发人员增加代码覆盖率的测试用例的便捷性。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种获取代码覆盖率的方法和装置。
背景技术
目前,代码覆盖率反映测试用例对被测软件覆盖程度的重要指标,是用来度量测试完整性的一个参考值,通过代码覆盖率数据可以评估测试是否充分。在软件开发的过程中,通过客户端获取代码覆盖率数据是基于被监控项目的全部代码生成的。在很多项目工期紧张的情况下,基于全部代码的覆盖率数据对开发人员的指导意义并不是很大。即便客户端可以使用一些过滤条件来减少不关心的类,依然不能反映修改前及修改后这两个版本代码之间差异代码信息的覆盖情况,即开发人员无法准确获知被修改代码的情况,使得开发人员很难获取所需的数据,从而导致为上线增加覆盖率的测试用例不够方便快捷。
发明内容
本发明的主要目的在于提供一种获取代码覆盖率的方法和装置,旨在提高代码覆盖率的获取准确性,以及提高开发人员增加代码覆盖率的测试用例的便捷性。
为实现上述目的,本发明提供了一种获取代码覆盖率的方法,包括:
将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,供所述服务器根据所述原始版本代码的唯一标识及所述修改版本代码的唯一标识,获取原始版本代码及修改版本代码,根据所述原始版本代码与所述修改版本代码获取总代码覆盖率数据及差异代码信息,将所述总代码覆盖率数据及所述差异代码信息反馈至客户端;
接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据。
优选地,所述差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。
优选地,所述总代码覆盖率数据包括覆盖代码的包、类、方法及行信息,所述差异代码信息包括被修改代码的包、类、方法及行信息,所述根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据包括:
将所述覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。
优选地,所述接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据之后包括:
根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告。
优选地,所述根据所述差异代码信息覆盖率生成测试报告包括:
根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告,并确定覆盖代码中被修改代码的包、类、方法及行信息;
在所述测测试报告中标注所述覆盖代码中被修改代码的包、类、方法及行信息,并显示覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例。
此外,为实现上述目的,本发明还提供了一种获取代码覆盖率的装置,包括:
发送模块,用于将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,供所述服务器根据所述原始版本代码的唯一标识及所述修改版本代码的唯一标识,获取原始版本代码及修改版本代码,根据所述原始版本代码与所述修改版本代码获取总代码覆盖率数据及差异代码信息,将所述总代码覆盖率数据及所述差异代码信息反馈至客户端;
获取模块,用于接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据。
优选地,所述差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。
优选地,所述总代码覆盖率数据包括覆盖代码的包、类、方法及行信息,所述差异代码信息包括被修改代码的包、类、方法及行信息,所述获取模块还用于,将所述覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。
优选地,所述获取代码覆盖率的装置还包括:
报告生成模块,用于根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告。
优选地,所述报告生成模块还用于,根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告,并确定覆盖代码中被修改代码的包、类、方法及行信息;在所述测测试报告中标注所述覆盖代码中被修改代码的包、类、方法及行信息,并显示覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例。
本发明实施例提供获取代码覆盖率的方法和装置,客户端通过接收服务器发送的根据原始版本代码及修改版本代码获取的总代码覆盖率数据及差异代码信息,并根据总代码覆盖率数据及差异代码信息获取差异代码覆盖率数据。使得客户端可以获取同一个项目中两个不同版本代码的差异代码覆盖率数据,可以让开发人员方便的了解被修改代码的代码覆盖率情况,不仅提高了代码覆盖率的获取准确性,而且提高了开发人员增加代码覆盖率的测试用例的便捷性。
附图说明
图1为本发明获取代码覆盖率的方法第一实施例的流程示意图;
图2为本发明基于jacoco实现代码覆盖率数据获取的结构示意图;
图3为本发明代码覆盖率数据获取结果的示意图;
图4为本发明获取代码覆盖率的方法第三实施例的流程示意图;
图5为本发明获取代码覆盖率的装置第一实施例的功能模块示意图;
图6为本发明获取代码覆盖率的装置第三实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,示出了本发明一种获取代码覆盖率的方法第一实施例。该实施例的获取代码覆盖率的方法包括:
步骤S10、将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,供所述服务器根据所述原始版本代码的唯一标识及所述修改版本代码的唯一标识,获取原始版本代码及修改版本代码,根据所述原始版本代码与所述修改版本代码获取总代码覆盖率数据及差异代码信息,将所述总代码覆盖率数据及所述差异代码信息反馈至客户端;
代码覆盖率是反映测试用例对被测程序覆盖程度的重要指标,也是衡量测试完整性的一个参考值。无论是单元测试、应用程序接口测试(Application ProgrammingInterface,API)还是功能测试,最终都是调用了程序的代码。测试结束后,通过代码覆盖率数据可以获知测试是否充分,测试的弱点在哪些方面,进而可以指导开发人员或测试者设计能够增加覆盖率的测试用例。
本实施例中,将以基于jacoco实现代码覆盖率数据的获取进行详细说明,Jacoco是一个开源的覆盖率工具。Jacoco可以嵌入到Ant、MavenAnt中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,例如,sonar、Jenkins等。它采用标准的JVM Tool Interface,把Jacoco Agent加入到JVM后启动,加载到JVM中的class具体被执行了哪些代码行将会被记录下来,Jacoco搜集这些执行信息直到JVM结束后生成测试报告。
如图2所示,Jacoco的JVM中包括JVMTI API、Jacoco Agent等,其中,JVMTI API获取原始版本代码与修改版本代码之间的代码覆盖率数据发送至Jacoco Agent;JacocoAgent的Listener模块侦听是否接收到请求,在接收到Dump Request请求时,Jacoco Agent根据代码覆盖率数据生成测试报告。
基于jacoco实获取码覆盖率的过程中,开发修改的源代码会被存储至服务器预置的代码仓库中,即原始版本代码及修改版本代码均被存储至服务器的代码仓库中。首先客户端将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,该唯一标识可以是git提交号。
服务器接收到原始版本代码的唯一标识及修改版本代码的唯一标识后,执行测试用例,根据原始版本代码的唯一标识及修改版本代码的唯一标识从代码仓库中,查找原始版本代码及修改版本代码。服务器根据原始版本代码与修改版本代码来获取总代码覆盖率数据及差异代码信息,将总代码覆盖率数据及差异代码信息反馈至客户端。该总代码覆盖率数据包括覆盖代码的行数占总代码的行数的比例、覆盖代码的包、类、方法及行信息等,差异代码信息包括被修改代码的包、类、方法及行信息等,该行信息包括具体被修改的第几行代码及被修改的总行数。
步骤S20、接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据。
客户端根据接收到的总代码覆盖率数据及差异代码信息,获取差异代码覆盖率数据。该差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。在代码覆盖率数据收集过程中,通过计算对应的包、类、方法的差异部分的覆盖率数据,并在该代码覆盖率数据收集的基础之上,添加了对差异部分代码的覆盖率数据统计。基于原始版本代码及修改版本代码这两个不同版本的源代码可计算和展现差异代码覆盖率(即被修改代码覆盖率),使得用户根据获取一个项目中两个不同版本的差异代码覆盖率,从而可以为上线提供决策依据。
如图3所示,为在测试代码覆盖率平台上显示差异代码覆盖率数据结果的示意图,图3中包括对行覆盖比例图、行覆盖率、差异行覆盖比例图、差异行覆盖率等信息进行显示。其中,SVR10.199.171.53_8081_ODS_Feature_flow为服务器的名称,元素的下拉列表中com.vipshop.oms.selling.order.service.preanalysis、com.vipshop.oms.oss.order等表示包名,每个包中包括类,类的下一级包括方法,方法中包括行代码,即在点击包后可展示出列表中所包含的类,点击类后可展示出列表中所包含的方法,点击方法后可展示出列表中所包含的行代码,从而可以显示差异代码信息并展现出某个包、类、方法下面有多少行差异代码信息被覆盖,以及差异代码信息的总行数等。
以下进行举例说明,在一实施例中,测试人员需要对提交号为A和提交号为B的这两个版本代码进行测试,测试人员通过客户端将提交号为A和提交号为B发送至服务器。服务器根据接收到提交号为A和提交号为B在预置的代码仓库中查询提交号为A的原始版本代码和提交号为B的修改版本代码。将原始版本代码与修改版本代码的每一行进行一一对比,可得到总共被修改11行代码,以及具体被修改了第6行至第16行代码等。假设源代码总共有100行代码,在测试的过程中运行了30行代码,则得到总代码覆盖率为30/100*100%=30%,并可获取到运行了第1行至第10行、第40行至第60行代码。然后服务器根据具体被修改了哪些行代码与运行了第1行至第10行、第40行至第60行代码进行比对,获取所运行的代码中包括了6行被修改代码及其包括的是第6行至第11行被修改行代码等差异代码信息,将得到的总代码覆盖率及差异代码信息反馈至客户端。客户端根据总代码覆盖率及差异代码信息,计算出差异代码覆盖率为6/11*100%=54.5%,以及得到差异代码信息为第6行至第11行代码。使得测试人员可灵活地选取所要测试的版本代码,并详细的展现出版本之间差异代码覆盖率数据,通过得到的差异代码覆盖率数据,从而让测试人员更精确的获知测试的准确度,可以更有的放矢的工作。
本发明实施例客户端通过接收服务器发送的根据原始版本代码及修改版本代码获取的总代码覆盖率数据及差异代码信息,并根据总代码覆盖率数据及差异代码信息获取差异代码覆盖率数据。使得客户端可以获取同一个项目中两个不同版本代码的差异代码覆盖率数据,可以让开发人员方便的了解被修改代码的代码覆盖率情况,不仅提高了代码覆盖率的获取准确性,而且提高了开发人员进行代码测试的便捷性。
进一步地,基于上述获取代码覆盖率的方法第一实施例,提出了本发明获取代码覆盖率的方法第二实施例,该实施例中上述步骤S20包括:将所述覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。
本实施例中,所述差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。所述总代码覆盖率数据包括覆盖代码的包、类、方法及行信息,所述差异代码信息包括被修改代码的包、类、方法及行信息。
客户端在接收到总代码覆盖率数据及差异代码信息后,根据总代码覆盖率数据及差异代码信息获取差异代码覆盖率数据的过程中,将覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。从而通过获取同一个项目中两个不同版本代码的差异代码覆盖率数据,可以让测试人员方便的了解被修改代码的代码覆盖率情况,更精确的获知测试的准确度,提高了测试人员进行代码测试的便捷性。
进一步地,如图4所示,基于上述获取代码覆盖率的方法第一或第二实施例,提出了本发明获取代码覆盖率的方法第三实施例,该实施例中上述步骤S20之后包括:步骤S30、根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告。
本实施例中,客户端可根据差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息等生成测试报告。具体地,根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告,并确定覆盖代码中被修改代码的包、类、方法及行信息;在所述测测试报告中标注所述覆盖代码中被修改代码的包、类、方法及行信息,并显示覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例。
本实施例在生成测试报告的过程中,可在测试报告中将差异行代码进行凸显,并展现其是否被覆盖,可分别计算出某个包、类、方法下面有多少行差异代码信息被覆盖,以及差异代码信息的总行数。测试人员可以根据测试报告找出程序中没有被执行到的代码位置,以便对代码进行修改,设计出更有效的覆盖率的测试用例以提高代码覆盖率。不仅提高了代码覆盖率的获取准确性,而且可以让测试人员更精确的获知测试的准确度,提高了测试人员进行代码测试的便捷性。
对应地,如图5所示,提出本发明一种获取代码覆盖率的装置第一实施例。该实施例的获取代码覆盖率的装置包括:
发送模块100,用于将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,供所述服务器根据所述原始版本代码的唯一标识及所述修改版本代码的唯一标识,获取原始版本代码及修改版本代码,根据所述原始版本代码与所述修改版本代码获取总代码覆盖率数据及差异代码信息,将所述总代码覆盖率数据及所述差异代码信息反馈至客户端;
代码覆盖率是反映测试用例对被测程序覆盖程度的重要指标,也是衡量测试完整性的一个参考值。无论是单元测试、应用程序接口测试(Application ProgrammingInterface,API)还是功能测试,最终都是调用了程序的代码。测试结束后,通过代码覆盖率数据可以获知测试是否充分,测试的弱点在哪些方面,进而可以指导开发人员或测试者设计能够增加覆盖率的测试用例。
本实施例中,将以基于jacoco实现代码覆盖率数据的获取进行详细说明,Jacoco是一个开源的覆盖率工具。Jacoco可以嵌入到Ant、MavenAnt中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,例如,sonar、Jenkins等。它采用标准的JVM Tool Interface,把Jacoco Agent加入到JVM后启动,加载到JVM中的class具体被执行了哪些代码行将会被记录下来,Jacoco搜集这些执行信息直到JVM结束后生成测试报告。
如图2所示,Jacoco的JVM中包括JVMTI API、Jacoco Agent等,其中,JVMTI API获取原始版本代码与修改版本代码之间的代码覆盖率数据发送至Jacoco Agent;JacocoAgent的Listener模块侦听是否接收到请求,在接收到Dump Request请求时,Jacoco Agent根据代码覆盖率数据生成测试报告。
基于jacoco实获取码覆盖率的过程中,开发修改的源代码会被存储至服务器预置的代码仓库中,即原始版本代码及修改版本代码均被存储至服务器的代码仓库中。首先客户端调用发送模块100将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,该唯一标识可以是git提交号。
服务器接收到原始版本代码的唯一标识及修改版本代码的唯一标识后,执行测试用例,根据原始版本代码的唯一标识及修改版本代码的唯一标识从代码仓库中,查找原始版本代码及修改版本代码。服务器根据原始版本代码与修改版本代码来获取总代码覆盖率数据及差异代码信息,将总代码覆盖率数据及差异代码信息反馈至客户端。该总代码覆盖率数据包括覆盖代码的行数占总代码的行数的比例、覆盖代码的包、类、方法及行信息等,差异代码信息包括被修改代码的包、类、方法及行信息等,该行信息包括具体被修改的第几行代码及被修改的总行数。
获取模块200,用于接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据。
客户端根据接收到的总代码覆盖率数据及差异代码信息,由获取模块200获取差异代码覆盖率数据。该差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。在代码覆盖率数据收集过程中,通过计算对应的包、类、方法的差异部分的覆盖率数据,并在该代码覆盖率数据收集的基础之上,添加了对差异部分代码的覆盖率数据统计。基于原始版本代码及修改版本代码这两个不同版本的源代码可计算和展现差异代码覆盖率(即被修改代码覆盖率),使得用户根据获取一个项目中两个不同版本的差异代码覆盖率,从而可以为上线提供决策依据。
如图3所示,为在测试代码覆盖率平台上显示差异代码覆盖率数据结果的示意图,图3中包括对行覆盖比例图、行覆盖率、差异行覆盖比例图、差异行覆盖率等信息进行显示。其中,SVR10.199.171.53_8081_ODS_Feature_flow为服务器的名称,元素的下拉列表中com.vipshop.oms.selling.order.service.preanalysis、com.vipshop.oms.oss.order等表示包名,每个包中包括类,类的下一级包括方法,方法中包括行代码,即在点击包后可展示出列表中所包含的类,点击类后可展示出列表中所包含的方法,点击方法后可展示出列表中所包含的行代码,从而可以显示差异代码信息并展现出某个包、类、方法下面有多少行差异代码信息被覆盖,以及差异代码信息的总行数等。
以下进行举例说明,在一实施例中,测试人员需要对提交号为A和提交号为B的这两个版本代码进行测试,测试人员通过客户端将提交号为A和提交号为B发送至服务器。服务器根据接收到提交号为A和提交号为B在预置的代码仓库中查询提交号为A的原始版本代码和提交号为B的修改版本代码。将原始版本代码与修改版本代码的每一行进行一一对比,可得到总共被修改11行代码,以及具体被修改了第6行至第16行代码等。假设源代码总共有100行代码,在测试的过程中运行了30行代码,则得到总代码覆盖率为30/100*100%=30%,并可获取到运行了第1行至第10行、第40行至第60行代码。然后服务器根据具体被修改了哪些行代码与运行了第1行至第10行、第40行至第60行代码进行比对,获取所运行的代码中包括了6行被修改代码及其包括的是第6行至第11行被修改行代码等差异代码信息,将得到的总代码覆盖率及差异代码信息反馈至客户端。客户端根据总代码覆盖率及差异代码信息,计算出差异代码覆盖率为6/11*100%=54.5%,以及得到差异代码信息为第6行至第11行代码。使得测试人员可灵活地选取所要测试的版本代码,并详细的展现出版本之间差异代码覆盖率数据,通过得到的差异代码覆盖率数据,从而让测试人员更精确的获知测试的准确度,可以更有的放矢的工作。
本发明实施例客户端通过接收服务器发送的根据原始版本代码及修改版本代码获取的总代码覆盖率数据及差异代码信息,并根据总代码覆盖率数据及差异代码信息获取差异代码覆盖率数据。使得客户端可以获取同一个项目中两个不同版本代码的差异代码覆盖率数据,可以让开发人员方便的了解被修改代码的代码覆盖率情况,不仅提高了代码覆盖率的获取准确性,而且提高了开发人员进行代码测试的便捷性。
进一步地,基于上述获取代码覆盖率的装置第一实施例,提出了本发明获取代码覆盖率的装置第二实施例,该实施例中上述获取模块200还用于,将所述覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。
本实施例中,所述差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。所述总代码覆盖率数据包括覆盖代码的包、类、方法及行信息,所述差异代码信息包括被修改代码的包、类、方法及行信息。
客户端在接收到总代码覆盖率数据及差异代码信息后,获取模块200根据总代码覆盖率数据及差异代码信息获取差异代码覆盖率数据的过程中,将覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。从而通过获取同一个项目中两个不同版本代码的差异代码覆盖率数据,可以让测试人员方便的了解被修改代码的代码覆盖率情况,更精确的获知测试的准确度,提高了测试人员进行代码测试的便捷性。
进一步地,如图6所示,基于上述获取代码覆盖率的装置第一或第二实施例,提出了本发明获取代码覆盖率的装置第三实施例,该实施例中上述获取代码覆盖率的装置还包括:
报告生成模块300,用于根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告。
本实施例中,报告生成模块300可根据差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息等生成测试报告。具体地,报告生成模块300根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告,并确定覆盖代码中被修改代码的包、类、方法及行信息;在所述测测试报告中标注所述覆盖代码中被修改代码的包、类、方法及行信息,并显示覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例。
本实施例在生成测试报告的过程中,可在测试报告中将差异行代码进行凸显,并展现其是否被覆盖,可分别计算出某个包、类、方法下面有多少行差异代码信息被覆盖,以及差异代码信息的总行数。测试人员可以根据测试报告找出程序中没有被执行到的代码位置,以便对代码进行修改,设计出更有效的覆盖率的测试用例以提高代码覆盖率。不仅提高了代码覆盖率的获取准确性,而且可以让测试人员更精确的获知测试的准确度,提高了测试人员进行代码测试的便捷性。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种获取代码覆盖率的方法,其特征在于,所述获取代码覆盖率的方法包括以下步骤:
将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,供所述服务器根据所述原始版本代码的唯一标识及所述修改版本代码的唯一标识,获取原始版本代码及修改版本代码,根据所述原始版本代码与所述修改版本代码获取总代码覆盖率数据及差异代码信息,将所述总代码覆盖率数据及所述差异代码信息反馈至客户端;
接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据。
2.如权利要求1所述的获取代码覆盖率的方法,其特征在于,所述差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。
3.如权利要求2所述的获取代码覆盖率的方法,其特征在于,所述总代码覆盖率数据包括覆盖代码的包、类、方法及行信息,所述差异代码信息包括被修改代码的包、类、方法及行信息,所述根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据包括:
将所述覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。
4.如权利要求1-3任一项所述的获取代码覆盖率的方法,其特征在于,所述接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据之后包括:
根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告。
5.如权利要求4所述的获取代码覆盖率的方法,其特征在于,所述根据所述差异代码信息覆盖率生成测试报告包括:
根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告,并确定覆盖代码中被修改代码的包、类、方法及行信息;
在所述测测试报告中标注所述覆盖代码中被修改代码的包、类、方法及行信息,并显示覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例。
6.一种获取代码覆盖率的装置,其特征在于,所述获取代码覆盖率的装置包括:
发送模块,用于将原始版本代码的唯一标识及修改版本代码的唯一标识发送至服务器,供所述服务器根据所述原始版本代码的唯一标识及所述修改版本代码的唯一标识,获取原始版本代码及修改版本代码,根据所述原始版本代码与所述修改版本代码获取总代码覆盖率数据及差异代码信息,将所述总代码覆盖率数据及所述差异代码信息反馈至客户端;
获取模块,用于接收所述总代码覆盖率数据及所述差异代码信息,根据所述总代码覆盖率数据及所述差异代码信息获取差异代码覆盖率数据。
7.如权利要求6所述的获取代码覆盖率的装置,其特征在于,所述差异代码覆盖率数据包括覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例,以及覆盖代码中被修改代码的包、类、方法及行信息。
8.如权利要求7所述的获取代码覆盖率的装置,其特征在于,所述总代码覆盖率数据包括覆盖代码的包、类、方法及行信息,所述差异代码信息包括被修改代码的包、类、方法及行信息,所述获取模块还用于,将所述覆盖代码的包、类、方法及行信息与被修改代码的包、类、方法及行信息进行对比,获取覆盖代码中被修改代码占修改版本代码中被修改代码的总行数的比例,及覆盖代码中被修改代码的包、类、方法及行信息。
9.如权利要求6-8任一项所述的获取代码覆盖率的装置,其特征在于,所述获取代码覆盖率的装置还包括:
报告生成模块,用于根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告。
10.如权利要求9所述的获取代码覆盖率的装置,其特征在于,所述报告生成模块还用于,根据所述差异代码覆盖率数据、所述总代码覆盖率数据及所述差异代码信息生成测试报告,并确定覆盖代码中被修改代码的包、类、方法及行信息;在所述测测试报告中标注所述覆盖代码中被修改代码的包、类、方法及行信息,并显示覆盖代码中被修改代码的行数占修改版本代码中被修改代码的总行数的比例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610474375.0A CN106201863A (zh) | 2016-06-22 | 2016-06-22 | 一种获取代码覆盖率的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610474375.0A CN106201863A (zh) | 2016-06-22 | 2016-06-22 | 一种获取代码覆盖率的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106201863A true CN106201863A (zh) | 2016-12-07 |
Family
ID=57461937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610474375.0A Pending CN106201863A (zh) | 2016-06-22 | 2016-06-22 | 一种获取代码覆盖率的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201863A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681912A (zh) * | 2016-12-08 | 2017-05-17 | 武汉斗鱼网络科技有限公司 | 用于Android系统的代码覆盖率的自动化测试方法及装置 |
CN107957956A (zh) * | 2017-12-26 | 2018-04-24 | 广州品唯软件有限公司 | 软件差异覆盖率的测试方法、装置及可读存储介质 |
CN108170610A (zh) * | 2018-01-17 | 2018-06-15 | 北京网信云服信息科技有限公司 | 确定测试覆盖率的方法和装置 |
CN108563580A (zh) * | 2017-12-27 | 2018-09-21 | 贵阳忆芯科技有限公司 | 介质接口控制器微码执行路径提取方法 |
CN109062821A (zh) * | 2018-11-12 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种代码性能测试方法与装置 |
CN109359035A (zh) * | 2018-09-19 | 2019-02-19 | 杭州安恒信息技术股份有限公司 | 一种代码质量实时跟踪方法 |
CN109426604A (zh) * | 2017-08-22 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 代码开发的监控方法及设备 |
CN109542789A (zh) * | 2018-11-26 | 2019-03-29 | 泰康保险集团股份有限公司 | 一种代码覆盖率统计方法及装置 |
CN109739507A (zh) * | 2018-12-28 | 2019-05-10 | 睿驰达新能源汽车科技(北京)有限公司 | 一种代码持续集成方法和代码持续交付方法 |
CN109766261A (zh) * | 2018-12-14 | 2019-05-17 | 中国平安财产保险股份有限公司 | 覆盖测试方法、装置、计算机设备和存储介质 |
CN109947640A (zh) * | 2019-02-13 | 2019-06-28 | 北京达佳互联信息技术有限公司 | 基于回归测试的核心功能覆盖度统计方法及装置 |
CN110309055A (zh) * | 2019-05-23 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 |
CN110413532A (zh) * | 2019-08-08 | 2019-11-05 | 上海新炬网络技术有限公司 | 适用于敏捷测试的多过程版本变更代码覆盖率获取方法 |
CN110532174A (zh) * | 2019-07-24 | 2019-12-03 | 平安科技(深圳)有限公司 | 计算增量代码覆盖率的方法、装置、计算机设备及存储介质 |
CN110633208A (zh) * | 2019-08-22 | 2019-12-31 | 浙江大搜车软件技术有限公司 | 增量代码覆盖率测试方法及系统 |
CN110888817A (zh) * | 2019-12-18 | 2020-03-17 | 广州唯品会研究院有限公司 | 代码覆盖率报告的生成方法、装置和可读存储介质 |
CN112363937A (zh) * | 2020-11-12 | 2021-02-12 | 广州品唯软件有限公司 | 差异覆盖率测试方法、装置、计算机设备和存储介质 |
CN112559348A (zh) * | 2020-12-15 | 2021-03-26 | 广州云从鼎望科技有限公司 | 基于jacoco的测试分析方法、系统、设备以及介质 |
CN113836043A (zh) * | 2021-11-22 | 2021-12-24 | 国网浙江省电力有限公司 | 基于测试用例的中台自维护方法、装置及存储介质 |
CN114090430A (zh) * | 2021-11-09 | 2022-02-25 | 北京完美赤金科技有限公司 | 一种覆盖测试方法、系统、存储介质及计算设备 |
CN114706785A (zh) * | 2022-04-22 | 2022-07-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种覆盖率过滤文件生成方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425573A (zh) * | 2012-05-24 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 代码测试信息收集方法及系统 |
CN104714882A (zh) * | 2013-12-17 | 2015-06-17 | 腾讯科技(深圳)有限公司 | 代码信息处理的方法及装置 |
CN105446884A (zh) * | 2015-12-16 | 2016-03-30 | 北京奇虎科技有限公司 | 代码覆盖率的测试方法及装置 |
CN105608011A (zh) * | 2016-03-01 | 2016-05-25 | 网易(杭州)网络有限公司 | 代码测试覆盖率统计结果的确定方法及装置 |
US9354867B2 (en) * | 2013-11-18 | 2016-05-31 | Opshub, Inc. | System and method for identifying, analyzing and integrating risks associated with source code |
CN105630670A (zh) * | 2015-12-16 | 2016-06-01 | 北京奇虎科技有限公司 | 一种代码覆盖率的测试方法和装置 |
-
2016
- 2016-06-22 CN CN201610474375.0A patent/CN106201863A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425573A (zh) * | 2012-05-24 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 代码测试信息收集方法及系统 |
US9354867B2 (en) * | 2013-11-18 | 2016-05-31 | Opshub, Inc. | System and method for identifying, analyzing and integrating risks associated with source code |
CN104714882A (zh) * | 2013-12-17 | 2015-06-17 | 腾讯科技(深圳)有限公司 | 代码信息处理的方法及装置 |
CN105446884A (zh) * | 2015-12-16 | 2016-03-30 | 北京奇虎科技有限公司 | 代码覆盖率的测试方法及装置 |
CN105630670A (zh) * | 2015-12-16 | 2016-06-01 | 北京奇虎科技有限公司 | 一种代码覆盖率的测试方法和装置 |
CN105608011A (zh) * | 2016-03-01 | 2016-05-25 | 网易(杭州)网络有限公司 | 代码测试覆盖率统计结果的确定方法及装置 |
Non-Patent Citations (1)
Title |
---|
伞云飞: ""使用 EMMA 获得功能测试覆盖率"", 《HTTPS://WWW.IBM.COM/DEVELOPERWORKS/CN/OPENSOURCE/OS-CN-EMMA/》 * |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681912A (zh) * | 2016-12-08 | 2017-05-17 | 武汉斗鱼网络科技有限公司 | 用于Android系统的代码覆盖率的自动化测试方法及装置 |
CN109426604A (zh) * | 2017-08-22 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 代码开发的监控方法及设备 |
CN107957956A (zh) * | 2017-12-26 | 2018-04-24 | 广州品唯软件有限公司 | 软件差异覆盖率的测试方法、装置及可读存储介质 |
CN108563580A (zh) * | 2017-12-27 | 2018-09-21 | 贵阳忆芯科技有限公司 | 介质接口控制器微码执行路径提取方法 |
CN108563580B (zh) * | 2017-12-27 | 2024-02-23 | 贵阳忆芯科技有限公司 | 介质接口控制器微码执行路径提取方法 |
CN108170610A (zh) * | 2018-01-17 | 2018-06-15 | 北京网信云服信息科技有限公司 | 确定测试覆盖率的方法和装置 |
CN109359035A (zh) * | 2018-09-19 | 2019-02-19 | 杭州安恒信息技术股份有限公司 | 一种代码质量实时跟踪方法 |
CN109359035B (zh) * | 2018-09-19 | 2022-04-29 | 杭州安恒信息技术股份有限公司 | 一种代码质量实时跟踪方法 |
CN109062821A (zh) * | 2018-11-12 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种代码性能测试方法与装置 |
CN109542789B (zh) * | 2018-11-26 | 2022-03-25 | 泰康保险集团股份有限公司 | 一种代码覆盖率统计方法及装置 |
CN109542789A (zh) * | 2018-11-26 | 2019-03-29 | 泰康保险集团股份有限公司 | 一种代码覆盖率统计方法及装置 |
CN109766261A (zh) * | 2018-12-14 | 2019-05-17 | 中国平安财产保险股份有限公司 | 覆盖测试方法、装置、计算机设备和存储介质 |
CN109766261B (zh) * | 2018-12-14 | 2024-05-24 | 中国平安财产保险股份有限公司 | 覆盖测试方法、装置、计算机设备和存储介质 |
CN109739507A (zh) * | 2018-12-28 | 2019-05-10 | 睿驰达新能源汽车科技(北京)有限公司 | 一种代码持续集成方法和代码持续交付方法 |
CN109947640A (zh) * | 2019-02-13 | 2019-06-28 | 北京达佳互联信息技术有限公司 | 基于回归测试的核心功能覆盖度统计方法及装置 |
CN109947640B (zh) * | 2019-02-13 | 2022-08-12 | 北京达佳互联信息技术有限公司 | 基于回归测试的核心功能覆盖度统计方法及装置 |
CN110309055A (zh) * | 2019-05-23 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 |
CN110532174A (zh) * | 2019-07-24 | 2019-12-03 | 平安科技(深圳)有限公司 | 计算增量代码覆盖率的方法、装置、计算机设备及存储介质 |
CN110532174B (zh) * | 2019-07-24 | 2024-05-31 | 平安科技(深圳)有限公司 | 计算增量代码覆盖率的方法、装置、计算机设备及存储介质 |
CN110413532A (zh) * | 2019-08-08 | 2019-11-05 | 上海新炬网络技术有限公司 | 适用于敏捷测试的多过程版本变更代码覆盖率获取方法 |
CN110633208A (zh) * | 2019-08-22 | 2019-12-31 | 浙江大搜车软件技术有限公司 | 增量代码覆盖率测试方法及系统 |
CN110888817B (zh) * | 2019-12-18 | 2023-10-24 | 广州品唯软件有限公司 | 代码覆盖率报告的生成方法、装置和可读存储介质 |
CN110888817A (zh) * | 2019-12-18 | 2020-03-17 | 广州唯品会研究院有限公司 | 代码覆盖率报告的生成方法、装置和可读存储介质 |
CN112363937B (zh) * | 2020-11-12 | 2024-05-03 | 广州品唯软件有限公司 | 差异覆盖率测试方法、装置、计算机设备和存储介质 |
CN112363937A (zh) * | 2020-11-12 | 2021-02-12 | 广州品唯软件有限公司 | 差异覆盖率测试方法、装置、计算机设备和存储介质 |
CN112559348B (zh) * | 2020-12-15 | 2021-09-14 | 广州云从鼎望科技有限公司 | 基于jacoco的测试分析方法、系统、设备以及介质 |
CN112559348A (zh) * | 2020-12-15 | 2021-03-26 | 广州云从鼎望科技有限公司 | 基于jacoco的测试分析方法、系统、设备以及介质 |
CN114090430A (zh) * | 2021-11-09 | 2022-02-25 | 北京完美赤金科技有限公司 | 一种覆盖测试方法、系统、存储介质及计算设备 |
CN113836043A (zh) * | 2021-11-22 | 2021-12-24 | 国网浙江省电力有限公司 | 基于测试用例的中台自维护方法、装置及存储介质 |
CN114706785A (zh) * | 2022-04-22 | 2022-07-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种覆盖率过滤文件生成方法、装置、设备及介质 |
CN114706785B (zh) * | 2022-04-22 | 2024-03-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种覆盖率过滤文件生成方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201863A (zh) | 一种获取代码覆盖率的方法和装置 | |
CN104699616B (zh) | 一种应用测试的方法、装置及系统 | |
Bruntink et al. | Predicting class testability using object-oriented metrics | |
Xiao et al. | Precise identification of problems for structural test generation | |
US20060265475A9 (en) | Testing web services as components | |
US7000224B1 (en) | Test code generator, engine and analyzer for testing middleware applications | |
CN104391795B (zh) | 一种分布式系统中自动化测试覆盖率的测试方法及系统 | |
US6934934B1 (en) | Method and system for software object testing | |
US9052980B2 (en) | Exception based quality assessment | |
CN106681912A (zh) | 用于Android系统的代码覆盖率的自动化测试方法及装置 | |
CN104199773B (zh) | 获取代码覆盖信息的方法及装置 | |
CN108170610A (zh) | 确定测试覆盖率的方法和装置 | |
US20060253837A1 (en) | Using a call stack hash to record the state of a process | |
CA2777434A1 (en) | Verifying application security vulnerabilities | |
WO2013049853A1 (en) | Analytics driven development | |
CN106294114A (zh) | 一种代码覆盖率获取方法、服务器及待测应用装置 | |
Panigrahi et al. | An approach to prioritize the regression test cases of object-oriented programs | |
Marchetto et al. | Crawlability metrics for automated web testing | |
Jacquet et al. | Metrics validation proposals: A structured analysis | |
CN110309055A (zh) | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 | |
CN109101410A (zh) | 一种风险驱动测试方法和装置以及计算机可读存储介质 | |
CN110134583A (zh) | 软件测试及数据处理方法及装置 | |
CN108829575A (zh) | 测试案例推荐方法、电子装置及可读存储介质 | |
CN107797927A (zh) | 应用自动化测试方法、装置、设备及可读存储介质 | |
CN107562621A (zh) | 确定手工测试用例与被测试代码关联关系的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20171220 Address after: 510000 Guangzhou City, Guangzhou, Guangdong, Fangcun Avenue, one of the 314 self compiled Applicant after: Guangzhou Pinwei Software Co., Ltd. Address before: Liwan District Fangcun Huahai street Guangzhou city Guangdong province 510000 No. 20 self 1-5 building (only for office use) Applicant before: Guangzhou VIPSHOP Information and Technology Co., Ltd. |