CN111090583B - 代码覆盖率报告的生成方法、装置和计算机设备 - Google Patents

代码覆盖率报告的生成方法、装置和计算机设备 Download PDF

Info

Publication number
CN111090583B
CN111090583B CN201911166545.9A CN201911166545A CN111090583B CN 111090583 B CN111090583 B CN 111090583B CN 201911166545 A CN201911166545 A CN 201911166545A CN 111090583 B CN111090583 B CN 111090583B
Authority
CN
China
Prior art keywords
tested
file
code
software
virtual service
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.)
Active
Application number
CN201911166545.9A
Other languages
English (en)
Other versions
CN111090583A (zh
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.)
Guangzhou Pinwei Software Co Ltd
Original Assignee
Guangzhou Pinwei Software 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 Guangzhou Pinwei Software Co Ltd filed Critical Guangzhou Pinwei Software Co Ltd
Priority to CN201911166545.9A priority Critical patent/CN111090583B/zh
Publication of CN111090583A publication Critical patent/CN111090583A/zh
Application granted granted Critical
Publication of CN111090583B publication Critical patent/CN111090583B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

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

代码覆盖率报告的生成方法、装置和计算机设备
技术领域
本申请涉及软件测试技术领域,特别是涉及一种代码覆盖率报告的生成方法、装置、计算机设备和存储介质。
背景技术
在软件测试中,通常需要对软件测试过程进行代码覆盖率的统计。代码覆盖率是指所有测试项目的测试方法运行后,能够执行的语句和所有语句的比值。代码覆盖率表征了代码在测试中能够被覆盖的程度。一般地,软件测试员通过代码覆盖率的高低决定是否需要重复执行软件测试。
当执行完软件测试流程之后,系统会生成代码覆盖率报告。代码覆盖率报告中呈现软件测试过程覆盖的代码情况。通过代码覆盖率报告可以直观地了解软件测试的测试情况。然而,目前的软件测试后生成的代码覆盖率报告为整个软件产品的覆盖率报告。此时,当某个测试人员只执行软件的某一部分代码测试时,最终生成的代码覆盖率报告中报告内容覆盖整个软件,从而导致生成的代码覆盖率报告不符合测试要求,生成的代码覆盖率报告准确性较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高代码覆盖率报告的准确性的代码覆盖率报告的生成方法、装置、计算机设备和存储介质。
一种代码覆盖率报告的生成方法,该方法包括:接收待测软件的代码覆盖率报告的生成请求,生成请求中包含待测软件对应目标虚拟业务的标识信息;根据生成请求中的标识信息获取目标虚拟业务的映射信息,映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系;根据映射信息的映射关系获取目标虚拟业务对应的目标待测代码文件,并获取目标待测代码文件对应编译后的编译产物;根据编译产物生成待测软件的代码覆盖率报告。
在其中一个实施例中,该方法还包括:根据代码文件分类指示信息将待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件,代码文件分类指示信息用于指示将待测软件的待测代码文件按照待测软件对应各项虚拟业务进行分类;对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。
在其中一个实施例中,该方法还包括:根据各项虚拟业务对应的映射信息生成待测软件的映射表;根据生成请求中的标识信息获取目标虚拟业务的映射信息,包括:根据生成请求中的标识信息从待测软件的映射表中获取目标虚拟业务的映射信息。
在其中一个实施例中,根据编译产物生成待测软件的代码覆盖率报告,包括:根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件;根据编译产物和ec文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,该方法还包括:根据编译产物获取目标虚拟业务对应的源代码文件;根据编译产物和ec文件生成待测软件的代码覆盖率报告,包括:根据编译产物、ec文件以及目标虚拟业务对应的源代码文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,该方法还包括:根据编译产物获取目标虚拟业务对应的差异文件;根据编译产物和ec文件生成待测软件的代码覆盖率报告,包括:根据编译产物、ec文件以及差异文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,编译产物包括编译后得到的class文件;根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件,包括:根据编译后得到的class文件的类名与ec文件的关联关系获取ec文件;根据编译产物获取目标虚拟业务对应的差异文件,包括:根据编译后得到的class文件的文件名与差异文件的关联关系获取差异文件。
一种代码覆盖率报告的生成装置,该装置包括:接收模块,用于接收待测软件的代码覆盖率报告的生成请求,生成请求中包含待测软件对应目标虚拟业务的标识信息;第一获取模块,用于根据生成请求中的标识信息获取目标虚拟业务的映射信息,映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系;第二获取模块,用于根据映射信息的映射关系获取目标虚拟业务对应的目标待测代码文件,并获取目标待测代码文件对应编译后的编译产物;生成模块,用于根据编译产物生成待测软件的代码覆盖率报告。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例方法的步骤。
上述代码覆盖率报告的生成方法、装置、计算机设备和存储介质,通过待测软件的代码覆盖率报告的生成请求中的标识信息,获取待测软件对应的目标虚拟业务的映射信息。进一步地,根据映射信息中目标虚拟业务与待测软件的待测代码文件的映射关系获取目标虚拟业务对应的目标待测代码文件,进而获取该目标待测代码文件对应编译后的编译产物,从而根据该编译产物生成待测软件的代码覆盖率报告。因此,最终生成待测软件对应目标虚拟业务的代码覆盖率报告,而不是相对于整个待测软件的代码覆盖率报告,控制了最终生成的代码覆盖率报告的内容范围,从而提高了代码覆盖率报告准确性,使得最终生成的代码覆盖率报告更加满足软件测试需求。
附图说明
图1为一个实施例中一种代码覆盖率报告的生成方法的应用环境图;
图2为一个实施例中一种代码覆盖率报告的生成方法的流程示意图;
图3为一个实施例中一种代码覆盖率报告的生成装置的结构框图;
图4为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的一种代码覆盖率报告的生成方法,应用于如图1所示的应用环境中。服务器集群100中包括多种服务器。多种服务器之间配合工作,以生成软件测试过程中的代码覆盖率报告。如图1所示,服务器集群100包括打包服务器102、数据库服务器108、报告生成服务器104以及代码服务器106。打包服务器102用于保存执行待测软件的代码测试过程的apk(Android application package,Android应用程序包)和编译产物,数据库服务器108用于保存待测软件的各项虚拟业务的映射信息和代码覆盖率结果数据,报告生成服务器104用于生成代码覆盖率报告,代码服务器106用于保存待测软件的待测代码文件。具体地,报告生成服务器104通过网络连接接收到终端200发送的待测软件的代码覆盖率报告的生成请求时,根据生成请求中的标识信息从数据库服务器108中获取待测软件对应目标虚拟业务的映射信息,映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系,进一步根据映射信息的映射关系从代码服务器106中获取目标虚拟业务对应的目标待测代码文件,进而从打包服务器102中获取目标待测代码文件对应编译后的编译产物,最后根据编译产物生成待测软件的代码覆盖率报告。其中,终端100可以是笔记本电脑、台式电脑等计算机设备。
本申请提供一种代码覆盖率报告的生成方法,以该方法应用于图1所示的服务器集群100为例。如图2所示,该代码覆盖率报告的生成方法包括以下步骤:
S102,接收待测软件的代码覆盖率报告的生成请求,生成请求中包含待测软件对应目标虚拟业务的标识信息。
在本实施例中,测试员触发终端以生成代码覆盖率报告后,终端向服务器集群发送待测软件的代码覆盖率报告的生成请求。该生成请求中包含待测软件对应目标虚拟业务的标识信息。具体地,根据待测软件的软件业务功能,可将待测软件划分为多个虚拟业务。其中,待测软件包括多个待测代码文件,每个虚拟业务对应有一个或多个待测代码文件。测试员可以针对待测软件的某个虚拟业务对应的待测代码文件进行软件测试,软件测试后测试员可触发终端,以通过终端向服务器集群发送生成代码覆盖率的生成请求。终端在接收到测试员触发的触发信号后,获取待测软件对应目标虚拟业务的标识信息,并将该标识信息封装进生成请求中,向服务器集群发送包含该标识信息的待测软件的代码覆盖率报告的生成请求。
S104,根据生成请求中的标识信息获取目标虚拟业务的映射信息,映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系。
在本实施例中,服务器集群接收到终端发送的待测软件的代码覆盖率报告的生成请求后,从该生成请求中解析出目标虚拟业务的标识信息,根据该标识信息获取目标虚拟业务的映射信息。映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系。可以是,映射信息通过映射表的形式记录目标虚拟业务与待测软件的待测代码文件的映射关系。
S106,根据映射信息的映射关系获取目标虚拟业务对应的目标待测代码文件,并获取目标待测代码文件对应编译后的编译产物。
在本实施例中,服务器集群根据目标虚拟业务与待测软件的待测代码文件的映射关系获取目标虚拟业务对应的目标待测代码文件。其中,目标虚拟业务可以对应待测软件的一个或多个待测代码文件,也即是目标待测代码可以是一个或多个。进一步地,服务器集群获取目标待测代码文件对应编译后的编译产物。编译后的编译产物可以包括编译后产生的class文件。因此,避免了服务器集群在生成待测软件的代码覆盖率报告时获取待测软件所有的编译产物,从而导致生成的代码覆盖率报告表征待测软件的所有虚拟业务的编译情况的问题。
S108,根据编译产物生成待测软件的代码覆盖率报告。
在本实施例中,服务器集群确定出目标虚拟业务对应的编译产物后,根据该编译产物生成待测软件的代码覆盖率报告,从而使得最终生成的待测软件的代码覆盖率报告只覆盖目标虚拟业务对应的待测代码测试情况,摒弃其他非目标虚拟业务对应的待测代码测试情况,因此使得生成的代码覆盖率报告准确性更高,更符合待测软件的测试需求。
具体地,根据编译产物生成待测软件的代码覆盖率报告可以是:根据编译产物获取对应的源代码文件和代码覆盖率标记文件,并根据编译产物与源代码文件以及代码覆盖率标记文件的关联关系进行组合后生成待测软件的代码覆盖率报告。
需要说明的是,还可以通过单一服务器执行上述步骤S102至步骤S108的代码覆盖率报告的生成方法。
上述代码覆盖率报告的生成方法,通过待测软件的代码覆盖率报告的生成请求中的标识信息,获取待测软件对应的目标虚拟业务的映射信息。进一步地,根据映射信息中目标虚拟业务与待测软件的待测代码文件的映射关系获取目标虚拟业务对应的目标待测代码文件,进而获取该目标待测代码文件对应编译后的编译产物,从而根据该编译产物生成待测软件的代码覆盖率报告。因此,最终生成待测软件对应目标虚拟业务的代码覆盖率报告,而不是相对于整个待测软件的代码覆盖率报告,控制了最终生成的代码覆盖率报告的内容范围,从而提高了代码覆盖率报告准确性,使得最终生成的代码覆盖率报告更加满足软件测试需求。
在其中一个实施例中,步骤S104之前还包括:根据代码文件分类指示信息将待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件,代码文件分类指示信息用于指示将待测软件的待测代码文件按照待测软件对应各项虚拟业务进行分类;对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。
在该实施例中,服务器集群接收到代码文件分类指令时,根据代码文件分类指示信息将待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件。在具体实现过程中,可以通过人工操作的方式向服务器集群发送代码文件分类指令。例如,测试员根据待测软件的软件业务功能对待测软件进行虚拟业务划分,并将待测软件的待测代码文件按照各项虚拟业务进行分类,并将分类后的待测代码文件的相关信息输入终端,由终端生成代码文件分类指令,并将该代码文件分类指令发送到服务器集群。服务器集群对待测软件的待测代码文件进行分类且得到各项虚拟业务对应的待测代码文件后,对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。因此,服务器集群从该映射信息获得目标虚拟业务与对应的待测代码文件的映射关系,进而根据该映射关系获得目标虚拟业务对应的待测代码文件。
在一个实施例中,该方法中“得到各项虚拟业务对应的映射信息”之后还包括:根据各项虚拟业务对应的映射信息生成待测软件的映射表。此时,步骤S104:根据生成请求中的标识信息从待测软件的映射表中获取目标虚拟业务的映射信息。
在该实施例中,待测软件的各项虚拟业务对应的待测代码文件的映射关系通过映射表的形式存储在服务器集群中。当服务器集群接收到代码覆盖率报告的生成请求时,通过生成请求中的目标虚拟业务的标识信息从映射表中读取包含目标虚拟业务与其对应待测代码文件的映射关系的映射信息。因此,通过映射表的形式存储各项虚拟业务与对应待测代码文件的映射关系,可以提高服务器读取目标虚拟业务对应的待测代码文件的效率。
具体地,假设待测软件有4大(A-D)虚拟业务模块,由4名接口人负责。待测软件的待测代码总共有N个文件夹,业务A占6个文件夹,业务B占3个,C占5个……直到将所有文件夹都分给具体的虚拟业务。具体的分配情况参见如下两个表格所示:
表1
Figure BDA0002287606500000081
表2
Figure BDA0002287606500000082
根据上述表1和表2的映射关系,可以将待测软件的各项虚拟业务对应的映射信息生成待测软件的映射表。因此,可以直接从表格中目标虚拟业务的映射信息。
在一个实施例中,步骤S108包括:根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件;根据编译产物和ec文件生成待测软件的代码覆盖率报告。
在该实施例中,ec文件为在待测代码文件测试到测试apk阶段时用于记录测试路径的文件。ec文件中也包含了测试过程的代码覆盖率信息。在生成代码覆盖率报告时,将编译产物以及与其对应的ec文件的内容作为代码覆盖率报告的内容。因此,可以便于测试员通过代码覆盖率报告更加清楚地了解到目标虚拟业务的待测代码在执行代码测试时的测试情况。
在一个实施例中,步骤S108之前还包括:根据编译产物获取目标虚拟业务对应的源代码文件。此时步骤S108包括:根据编译产物、ec文件以及目标虚拟业务对应的源代码文件生成待测软件的代码覆盖率报告。
在该实施例中,源代码文件指包含待测软件的源代码的文件。即.java文件。通过目标虚拟业务的编译产物获取目标虚拟业务的源代码文件,根据编译产物、ec文件以及目标虚拟业务对应的源代码生成代码覆盖率报告,不仅可以查看测试过程的测试路径信息,还可以通过代码覆盖率报告链接到目标虚拟业务对应的源代码,便于测试员通过代码覆盖率报告查看测试对应的源代码。
在一个实施例中,步骤S108之前还包括:根据编译产物获取目标虚拟业务对应的差异文件。此时步骤S108包括:根据编译产物、ec文件以及差异文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,编译产物包括编译后得到的class文件。此时,根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件,包括:根据编译后得到的class文件的类名与ec文件的关联关系获取ec文件;根据编译产物获取目标虚拟业务对应的差异文件,包括:根据编译后得到的class文件的文件名与差异文件的关联关系获取差异文件。
具体地,编译产物包括编译后产生的.class文件。.class文件通过classname(类名)与ec文件关联,.class文件通过filename(文件名)与diff文件(差异文件)关联。通过class文件分别与差异文件以及ec文件的关联关系获取到差异文件以及ec文件之后,根据class文件、差异文件以及ec文件生成最终的代码覆盖率报告。
针对上述实施例提供的代码覆盖率报告的生成方法,以下提供一实际应用场景:
1、将软件分成多个虚拟业务的业务线。每条业务线指定负责员,称为业务线的接口人。
2、将软件实际的代码目录(一级目录按业务模块来命名)分给不同的接口人负责。如有需要还可将一级目录里面的子目录、文件再细化。
3、生成一张关系映射表。映射表中比如A接口人负责业务线AA,具体模块为A1、A2……
例如,假设有6(A-F)大业务模块由6名接口人负责。软件代码总共有20个文件夹,业务A占4个文件夹,B占3个,C占2个……直到将所有文件夹都分给对应虚拟业务的接口人。
4、获取编译产物。获取A接口人的映射表,根据映射表获取对应的编译产物(如classes文件)。
具体地,安卓apk打完包后,主要编译产物有apk、符号文件、classes文件(每个java源文件都会编译成一个或多个classes文件)。
5、组合编译产物、源代码文件、ec文件(覆盖率标记文件)来生成覆盖率报告。
源代码文件指:源代码文件,即.java文件。这个是方便查看报告,无此文件也有生成报告,只是在报告里面无法链接到源码。ec文件:测试apk时生成的,记录测试了哪些路径。其中,要生成某一虚拟业务的覆盖率报告的最小组合为某一虚拟业务的编译产物和ec文件。具体地,三者关系:编译产物用于控制代码覆盖率报告的内容范围,ec文件记录了测试路径,源代码文件用于方便查看报告。三者组合规则为:通过编译产物来组织其它两种文件在代码覆盖率报告的形式。
在执行待测软件的测试过程中,服务器集群打包时会自动备份各项虚拟业务的编译产物。测试员从找包平台下载一个待测软件的测试包进行测试。测试员本人负责的虚拟业务对应的待测代码,测试过程中终端自动上传ec文件到服务器集群。测试到一定程度,测试员触发生成代码覆盖率报告,此时若服务器集群按照传统的代码覆盖率报告生成方法,生成的代码覆盖率报告为针对整个软件的报告,代码覆盖率报告显示代码覆盖率为20%,覆盖率过低,错误指引测试员重新测试。若服务器集群采用本申请的代码覆盖率报告的生成方法,生成的代码覆盖率报告只是针对测试员本人负责的虚拟业务,提高了代码覆盖率报告的准确性,代码覆盖率报告显示代码覆盖率为95%,代码覆盖率已达标,避免了测试员因为错误的代码覆盖率报告导致的重复性工作。
因此通过虚拟业务粒度制定代码覆盖率报告,可以提高代码覆盖率报告的准确性以及生成报告的效率。
本申请还提供一种代码覆盖率报告的生成装置,如图3所示,该装置包括:
接收模块10,用于接收待测软件的代码覆盖率报告的生成请求,生成请求中包含待测软件对应目标虚拟业务的标识信息。
第一获取模块20,用于根据生成请求中的标识信息获取目标虚拟业务的映射信息,映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系。
第二获取模块30,用于根据映射信息的映射关系获取目标虚拟业务对应的目标待测代码文件,并获取目标待测代码文件对应编译后的编译产物。
生成模块40,用于根据编译产物生成待测软件的代码覆盖率报告。
在其中一个实施例中,该代码覆盖率报告的生成装置还包括(图3未示):
分类模块,用于根据代码文件分类指示信息将待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件,代码文件分类指示信息用于指示将待测软件的待测代码文件按照待测软件对应各项虚拟业务进行分类。
映射模块,用于对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。
在其中一个实施例中,该代码覆盖率报告的生成装置还包括(图3未示):
第三获取模块,用于根据各项虚拟业务对应的映射信息生成待测软件的映射表;
此时,第一获取模块20还包括第一获取单元,用于根据生成请求中的标识信息从待测软件的映射表中获取目标虚拟业务的映射信息。
在其中一个实施例中,生成模块还包括(图3未示):
第一生成单元,用于根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件,根据编译产物和ec文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,该代码覆盖率报告的生成装置还包括(图3未示):
第四获取模块,用于根据编译产物获取目标虚拟业务对应的源代码文件。
此时,第一生成单元包括第一生成子单元:用于根据编译产物、ec文件以及目标虚拟业务对应的源代码文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,该代码覆盖率报告的生成装置还包括(图3未示):
第五获取模块,用于根据编译产物获取目标虚拟业务对应的差异文件。
此时,第一生成单元包括第二生成子单元:用于根据编译产物、ec文件以及差异文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,编译产物包括编译后得到的class文件。第一生成单元还包括第三生成子单元,用于根据编译后得到的class文件的类名与ec文件的关联关系获取ec文件。第五获取模块包括第二获取单元,用于根据编译后得到的class文件的文件名与差异文件的关联关系获取差异文件。
关于代码覆盖率报告的生成装置的具体限定可以参见上文中对于代码覆盖率报告的生成方法的限定,在此不再赘述。上述代码覆盖率报告的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以为服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端连接,以读取终端发送的请求信息。该计算机程序被处理器执行时以实现上述任一实施例中一种代码覆盖率报告的生成方法。需要说明的是,图1所示的应用环境,只是本申请一种代码覆盖率报告的生成方法的其中一个应用环境。本申请的一种代码覆盖率报告的生成方法还可以由单独服务器执行,不限于由多个服务器集群实现。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
接收待测软件的代码覆盖率报告的生成请求,生成请求中包含待测软件对应目标虚拟业务的标识信息;根据生成请求中的标识信息获取目标虚拟业务的映射信息,映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系;根据映射信息的映射关系获取目标虚拟业务对应的目标待测代码文件,并获取目标待测代码文件对应编译后的编译产物;根据编译产物生成待测软件的代码覆盖率报告。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:根据代码文件分类指示信息将待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件,代码文件分类指示信息用于指示将待测软件的待测代码文件按照待测软件对应各项虚拟业务进行分类;对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:根据各项虚拟业务对应的映射信息生成待测软件的映射表;处理器执行计算机程序实现上述的根据生成请求中的标识信息获取目标虚拟业务的映射信息步骤时,具体实现以下步骤:根据生成请求中的标识信息从待测软件的映射表中获取目标虚拟业务的映射信息。
在其中一个实施例中,处理器执行计算机程序实现上述的根据编译产物生成待测软件的代码覆盖率报告步骤时,具体实现以下步骤:根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件;根据编译产物和ec文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:根据编译产物获取目标虚拟业务对应的源代码文件;处理器执行计算机程序实现上述的根据编译产物和ec文件生成待测软件的代码覆盖率报告步骤时,具体实现以下步骤:根据编译产物、ec文件以及目标虚拟业务对应的源代码文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,处理器执行计算机程序时实现以下步骤:根据编译产物获取目标虚拟业务对应的差异文件;处理器执行计算机程序实现上述的根据编译产物和ec文件生成待测软件的代码覆盖率报告步骤时,具体实现以下步骤:根据编译产物、ec文件以及差异文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,编译产物包括编译后得到的class文件;处理器执行计算机程序实现上述的根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件步骤时,具体实现以下步骤:根据编译后得到的class文件的类名与ec文件的关联关系获取ec文件;处理器执行计算机程序实现上述的根据编译产物获取目标虚拟业务对应的差异文件步骤时,具体实现以下步骤:根据编译后得到的class文件的文件名与差异文件的关联关系获取差异文件。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收待测软件的代码覆盖率报告的生成请求,生成请求中包含待测软件对应目标虚拟业务的标识信息;根据生成请求中的标识信息获取目标虚拟业务的映射信息,映射信息用于表征目标虚拟业务与待测软件的待测代码文件的映射关系;根据映射信息的映射关系获取目标虚拟业务对应的目标待测代码文件,并获取目标待测代码文件对应编译后的编译产物;根据编译产物生成待测软件的代码覆盖率报告。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:根据代码文件分类指示信息将待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件,代码文件分类指示信息用于指示将待测软件的待测代码文件按照待测软件对应各项虚拟业务进行分类;对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:根据各项虚拟业务对应的映射信息生成待测软件的映射表;计算机程序被处理器执行实现上述的根据生成请求中的标识信息获取目标虚拟业务的映射信息步骤时,具体实现以下步骤:根据生成请求中的标识信息从待测软件的映射表中获取目标虚拟业务的映射信息。
在其中一个实施例中,计算机程序被处理器执行实现上述的根据编译产物生成待测软件的代码覆盖率报告步骤时,具体实现以下步骤:根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件;根据编译产物和ec文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:根据编译产物获取目标虚拟业务对应的源代码文件;计算机程序被处理器执行实现上述的根据编译产物和ec文件生成待测软件的代码覆盖率报告步骤时,具体实现以下步骤:根据编译产物、ec文件以及目标虚拟业务对应的源代码文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,计算机程序被处理器执行时实现以下步骤:根据编译产物获取目标虚拟业务对应的差异文件;计算机程序被处理器执行实现上述的根据编译产物和ec文件生成待测软件的代码覆盖率报告步骤时,具体实现以下步骤:根据编译产物、ec文件以及差异文件生成待测软件的代码覆盖率报告。
在其中一个实施例中,编译产物包括编译后得到的class文件;计算机程序被处理器执行实现上述的根据编译产物获取目标虚拟业务对应的包含代码覆盖率信息的ec文件步骤时,具体实现以下步骤:根据编译后得到的class文件的类名与ec文件的关联关系获取ec文件;计算机程序被处理器执行实现上述的根据编译产物获取目标虚拟业务对应的差异文件步骤时,具体实现以下步骤:根据编译后得到的class文件的文件名与差异文件的关联关系获取差异文件。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (7)

1.一种代码覆盖率报告的生成方法,所述方法包括:
接收待测软件的代码覆盖率报告的生成请求,所述生成请求中包含所述待测软件对应目标虚拟业务的标识信息;
根据所述生成请求中的所述标识信息获取所述目标虚拟业务的映射信息,所述映射信息用于表征所述目标虚拟业务与所述待测软件的待测代码文件的映射关系;
根据所述映射信息的所述映射关系获取所述目标虚拟业务对应的目标待测代码文件,并获取所述目标待测代码文件对应编译后的编译产物;
根据所述编译产物生成所述待测软件的代码覆盖率报告,具体包括:根据所述编译产物获取所述目标虚拟业务对应的包含代码覆盖率信息的ec文件;根据所述编译产物和所述ec文件生成所述待测软件的代码覆盖率报告;
还包括,根据所述编译产物获取所述目标虚拟业务对应的源代码文件;
其中根据所述编译产物和所述ec文件生成所述待测软件的代码覆盖率报告,具体包括:根据所述编译产物、所述ec文件以及所述目标虚拟业务对应的源代码文件生成所述待测软件的代码覆盖率报告;其中,所述ec文件为在待测代码文件测试到测试apk阶段时用于记录测试路径的文件;
所述方法还包括:根据代码文件分类指示信息将所述待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件,所述代码文件分类指示信息用于指示将所述待测软件的待测代码文件按照所述待测软件对应各项虚拟业务进行分类;
对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据各项虚拟业务对应的映射信息生成所述待测软件的映射表;
所述根据所述生成请求中的所述标识信息获取所述目标虚拟业务的映射信息,包括:
根据所述生成请求中的所述标识信息从所述待测软件的映射表中获取所述目标虚拟业务的映射信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述编译产物获取所述目标虚拟业务对应的差异文件;
所述根据所述编译产物和所述ec文件生成所述待测软件的代码覆盖率报告,包括:
根据所述编译产物、所述ec文件以及所述差异文件生成所述待测软件的代码覆盖率报告。
4.根据权利要求3所述的方法,其特征在于,所述编译产物包括编译后得到的class文件;所述根据所述编译产物获取所述目标虚拟业务对应的包含代码覆盖率信息的ec文件,包括:
根据所述编译后得到的class文件的类名与所述ec文件的关联关系获取所述ec文件;
所述根据所述编译产物获取所述目标虚拟业务对应的差异文件,包括:
根据所述编译后得到的class文件的文件名与所述差异文件的关联关系获取所述差异文件。
5.一种代码覆盖率报告的生成装置,其特征在于,所述装置包括:
接收模块,用于接收待测软件的代码覆盖率报告的生成请求,所述生成请求中包含所述待测软件对应目标虚拟业务的标识信息;
第一获取模块,用于根据所述生成请求中的所述标识信息获取所述目标虚拟业务的映射信息,所述映射信息用于表征所述目标虚拟业务与所述待测软件的待测代码文件的映射关系;
第二获取模块,用于根据所述映射信息的所述映射关系获取所述目标虚拟业务对应的目标待测代码文件,并获取所述目标待测代码文件对应编译后的编译产物;
生成模块,用于根据所述编译产物生成所述待测软件的代码覆盖率报告;
其中,所述生成模块包括第一生成单元,用于根据所述编译产物获取所述目标虚拟业务对应的包含代码覆盖率信息的ec文件,根据所述编译产物和所述ec文件生成所述待测软件的代码覆盖率报告;
所述装置还包括,第四获取模块,用于根据所述编译产物获取所述目标虚拟业务对应的源代码文件;
第一生成单元包括第一生成子单元,根据所述编译产物、所述ec文件以及所述目标虚拟业务对应的源代码文件生成所述待测软件的代码覆盖率报告;其中,所述ec文件为在待测代码文件测试到测试apk阶段时用于记录测试路径的文件;
所述装置还包括分类模块,用于根据代码文件分类指示信息将所述待测软件的待测代码文件进行分类,得到各项虚拟业务对应的待测代码文件,所述代码文件分类指示信息用于指示将所述待测软件的待测代码文件按照所述待测软件对应各项虚拟业务进行分类;
映射模块,用于对各项虚拟业务与各项虚拟业务对应的待测代码文件进行映射,得到各项虚拟业务对应的映射信息。
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
CN201911166545.9A 2019-11-25 2019-11-25 代码覆盖率报告的生成方法、装置和计算机设备 Active CN111090583B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911166545.9A CN111090583B (zh) 2019-11-25 2019-11-25 代码覆盖率报告的生成方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911166545.9A CN111090583B (zh) 2019-11-25 2019-11-25 代码覆盖率报告的生成方法、装置和计算机设备

Publications (2)

Publication Number Publication Date
CN111090583A CN111090583A (zh) 2020-05-01
CN111090583B true CN111090583B (zh) 2023-04-07

Family

ID=70393157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911166545.9A Active CN111090583B (zh) 2019-11-25 2019-11-25 代码覆盖率报告的生成方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN111090583B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612716B (zh) * 2020-12-28 2023-01-20 上海品顺信息科技有限公司 差异行代码覆盖率增强标记方法、系统、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404585A (zh) * 2015-12-01 2016-03-16 腾讯科技(深圳)有限公司 获取代码覆盖率的方法及装置
CN105630670A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种代码覆盖率的测试方法和装置
CN106874187A (zh) * 2016-12-29 2017-06-20 腾讯科技(深圳)有限公司 代码覆盖率收集方法和装置
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404585A (zh) * 2015-12-01 2016-03-16 腾讯科技(深圳)有限公司 获取代码覆盖率的方法及装置
CN105630670A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种代码覆盖率的测试方法和装置
CN106874187A (zh) * 2016-12-29 2017-06-20 腾讯科技(深圳)有限公司 代码覆盖率收集方法和装置
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111090583A (zh) 2020-05-01

Similar Documents

Publication Publication Date Title
CN107193750B (zh) 一种脚本录制方法和装置
CN110399293B (zh) 系统测试方法、装置、计算机设备和存储介质
CN110290212B (zh) 服务调用记录方法、装置、计算机设备和存储介质
CN109800258B (zh) 数据文件部署方法、装置、计算机设备及存储介质
CN110162420B (zh) 数据辅助定位方法、装置、计算机设备及存储介质
CN110727581B (zh) 崩溃定位方法与电子设备
CN109726134B (zh) 接口测试方法和系统
CN111124894B (zh) 代码覆盖率的处理方法、装置和计算机设备
CN109324961B (zh) 系统自动测试方法、装置、计算机设备及存储介质
CN112187713B (zh) 报文转换的方法、装置、计算机设备和存储介质
CN110502428A (zh) 代码测试方法、装置、计算机设备和存储介质
CN110309055A (zh) 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质
CN111090583B (zh) 代码覆盖率报告的生成方法、装置和计算机设备
CN113986734A (zh) 代码覆盖报告生成方法、装置、设备及介质
CN109522181A (zh) 一种分布式存储系统的性能测试方法、装置和设备
CN109783284A (zh) 信息获取方法、系统及服务器、计算机可读存储介质
CN111597069A (zh) 程序处理方法、装置、电子设备和存储介质
CN110609792A (zh) 接口测试方法、装置、计算机设备和存储介质
CN110633213A (zh) 单元测试方法、装置、计算机设备和存储介质
CN111078549B (zh) 代码覆盖率的处理方法、装置和计算机设备
CN112114987B (zh) 运行环境的异常检测方法、装置、智能终端及存储介质
CN117131545A (zh) 数据处理方法及装置、存储介质、终端
CN112486824B (zh) 用例代码生成方法、装置、计算机设备和存储介质
CN112463620A (zh) 安卓软件集成测试中的覆盖率测试方法、装置
CN111367796B (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