CN111831321A - 代码覆盖率的分析方法、装置及其电子设备 - Google Patents

代码覆盖率的分析方法、装置及其电子设备 Download PDF

Info

Publication number
CN111831321A
CN111831321A CN201910322208.8A CN201910322208A CN111831321A CN 111831321 A CN111831321 A CN 111831321A CN 201910322208 A CN201910322208 A CN 201910322208A CN 111831321 A CN111831321 A CN 111831321A
Authority
CN
China
Prior art keywords
code
file
difference
text
coverage rate
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
Application number
CN201910322208.8A
Other languages
English (en)
Other versions
CN111831321B (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.)
Beijing Century TAL Education Technology Co Ltd
Original Assignee
Beijing Century TAL Education Technology 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 Beijing Century TAL Education Technology Co Ltd filed Critical Beijing Century TAL Education Technology Co Ltd
Priority to CN201910322208.8A priority Critical patent/CN111831321B/zh
Publication of CN111831321A publication Critical patent/CN111831321A/zh
Application granted granted Critical
Publication of CN111831321B publication Critical patent/CN111831321B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种差异代码覆盖率的分析方法、装置及其电子设备,差异代码覆盖率的分析方法包括:确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件;对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。本申请实施例分析得到了本次测试代码文件的代码覆盖率,掌握了哪些代码已经完成测试,哪些代码没有进行测试,然后针对没有进行测试的代码进行补充测试,完成对产品的整体测试,从而提升测试的全面性,保证产品的质量,改善用户体验。

Description

代码覆盖率的分析方法、装置及其电子设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种代码覆盖率的分析方法、装置及其电子设备。
背景技术
随着互联网技术的迅速发展,互联网产品的发布节奏越来越快并且对产品的质量要求也越来越高。所以在满足产品的发布节奏的前提下如何保证产品的质量变得尤为重要。
在产品发布前,测试人员通常会使用产品测试平台对产品进行测试,在测试过程中不断发现问题,针对发现的问题不断对代码进行修改,然后重新进行测试。现有技术中,测试人员只能知道针对测试用例所出现的问题,但是现有的测试用例并不一定能够测试产品中所有的代码,所以有的时候可能会出现产品在测试过程中没有发现问题,但是在用户使用的时候,发现很多问题等情况。
所以测试人员需要通过一种分析代码覆盖率的方法,掌握哪些代码已经完成测试,哪些代码没有进行测试,分析得到代码覆盖率,然后针对没有进行测试的代码进行补充测试,完成对产品的整体测试,从而提升测试的全面性,保证产品的质量,改善用户体验。
发明内容
本申请的目的在于提出一种代码覆盖率的分析方法、装置及其电子设备,用于解决现有技术的上述至少一个问题。
第一方面,本申请实施例提供一种代码覆盖率的分析方法,其包括:
确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;
对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率,所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
可选地,在本申请的任一实施例中,根据所述第二代码文件与第一代码文件,得到差异代码文件包括:将所述第二代码文件与第一代码文件进行比对,得到差异代码文件名称、所述差异代码文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
可选地,在本申请的任一实施例中,对所述代码覆盖文件与所述差异代码文件进行分析包括:解析所述代码覆盖文件得到所述代码覆盖文件的名称、所述代码文件中的已执行代码文本和未执行代码文本;从所述差异代码文件中获取所述差异代码文件名称和所述差异代码文本在所述第二代码文件中的代码位置信息中的至少一种以及所述差异代码文本。
可选地,在本申请的任一实施例中,若从所述差异代码文件中获取到所述差异代码文件名称,则所述方法还包括:判断所述代码覆盖文件的名称与所述差异代码文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
可选地,在本申请的任一实施例中,若从所述差异代码文件中获取到所述差异文本在所述第二代码文件中的代码位置信息,则所述方法还包括:根据所述差异代码文本在所述第二代码文件中的代码位置信息判断所述覆盖率报告中同样位置的代码文本与从所述差异代码文本是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
可选地,在本申请的任一实施例中,若从所述差异代码文件中获取到所述差异代码文件名称和所述差异代码文本在所述第二代码文件中的代码位置信息,则所述方法还包括:判断所述代码覆盖文件的名称与所述差异代码文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述差异代码文本在所述第二代码文件中的代码位置信息判断所述覆盖率报告中同样位置的代码文本与所述差异代码文本是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
可选地,在本申请的任一实施例中,还包括:选择是否将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。
可选地,在本申请的任一实施例中,将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并包括:判断本次代码覆盖文件名称与上一次代码覆盖文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。
第二方面,本申请实施例提供了一种代码覆盖率的分析装置,其包括:
确定单元,用于确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中,所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;
分析单元,用于对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率,所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
第三方面,本申请实施例提供了一种电子设备,包括:
一个或多个处理器;
计算机可读介质,配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任一实施例中所述的方法。
本申请提供的代码覆盖率的分析方法、装置及其电子设备,首先确定部署在服务器上的第二代码文件的代码覆盖文件,从而能够确定第二代码文件中哪些代码已经完成测试,哪些代码没有进行测试;并根据所述第二代码文件与第一代码文件,得到差异代码文件,从而能够得到与第一代码文件相比,第二代码文件中修改的代码文本;然后对所述代码覆盖文件与所述差异代码文件进行分析,得到了第二代码文件的差异代码覆盖率和分支差异代码覆盖率,从而测试人员能够掌握第二代码文件中哪些修改的代码已经完成测试,哪些修改的代码没有进行测试,然后针对没有进行测试的修改的代码进行补充测试,完成对产品的整体测试,从而提升测试的全面性,保证产品的质量,改善用户体验。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例一中差异代码覆盖率的分析方法流程示意图。
图2为本申请实施例二中差异代码覆盖率的分析方法流程示意图。
图3为本申请实施例三中差异代码覆盖率的分析方法流程示意图。
图4为本申请实施例四中差异代码覆盖率的分析方法流程示意图。
图5为本申请实施例五中差异代码覆盖率的分析装置结构示意图。
图6为本申请实施例六中电子设备的结构示意图。
图7为本申请实施例七中电子设备的硬件结构。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅配置为解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本申请实施例一中代码覆盖率的分析方法流程示意图;如图1所示,其包括:
S101、确定部署在服务器上的第二代码文件的代码覆盖文件;
本实施例中,代码覆盖率可以通过代码覆盖工具进行测量,通常在进行代码覆盖率测试时,首先需要通过代码覆盖率工具对代码文件进行插桩编译,即在代码文件中的每一代码行中插入“探针”,当代码文件中某一代码行被执行后,该代码行中所插入的“探针”便会输出该代码行的执行信息。因此在测试过程中,代码覆盖率工具可不断收集并存储代码文件的不同代码行插入的“探针”所输出的代码行的执行信息,并自动或者由测试人员手动触发生成对应的代码覆盖文件。在代码覆盖文件中会对代码文件中的已测试代码行进行标识,通过解析代码覆盖文件,可以得到代码文件中的已测试代码行和未测试代码行。
具体地,对代码文件进行测试时,需要将代码文件部署在服务器上,然后通过开发人员编写的测试用例,对代码文件进行测试。通过代码覆盖率工具确定部署在服务器上的目标代码文件的代码覆盖文件。代码覆盖率工具优选地使用Jacoco,以便于能够根据所述代码覆盖文件更加快捷地得到代码文件中的已执行代码文本和未执行代码文本。为了配合Jacoco的使用,优选在服务器上配置Java agent收集代码是否已被执行相关的数据。
在一具体应用场景中,测试人员在测试过程中若发现产品中出现的很多问题,如果需要对代码文件进行多次修改,会有多个版本的代码文件,修改后的最新版本的代码文件即为第二代码文件,在这修改后的最新版本之前的版本代码文件即为第一代码文件,第一代码文件可以是由测试人员设定的原始标准代码文件,也可以是执行此次修改的上一版本代码文件;在测试平台收集到所述第二代码文件所部署的服务器的IP地址及端口,然后根据服务器的IP地址及端口使用在所述服务器上配置的Java agent收集在所述服务器上运行第二代码文件产生的代码覆盖文件,代码覆盖文件中包括与第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本。由于所述代码覆盖文件是使用Jacoco生成的,代码覆盖文件中的内容是由其编辑语言直接生成的,所以直接打开代码覆盖文件,显示的内容是乱码,因此优选对所述代码覆盖文件进行解析得到所需要的代码覆盖率报告,在代码覆盖率报告中记录有与第二代码文件中的代码文本相同的代码文本以及反映代码文本是否已被执行相关的代码执行情况标识信息。
进一步地,解析所述代码覆盖文件后,得到代码覆盖文件中的代码文本,并对其中已执行代码和未执行代码分别标记不同的标识比如突出显示等,从而生成代码覆盖率报告,从而可以直观地通过报告中的标识区分得到已执行代码文本和未执行代码文本。优选的突出显示使用不同的颜色进行显示,当然也可以采用其他方式进行显示,例如不同的字体等。
S102、根据所述第二代码文件与第一代码文件,得到差异代码文件,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;
本实施例中,所述第二代码文件是从测试平台本地存储的代码库中下载得到的。
在一具体实施场景中,如前所述测试人员在测试过程中会有多个版本的代码文件。如果设定第一版本的代码文件为第一代码文件,则代码文件总是与第一版本的代码文件进行比对,但是在修改上百次后得到的代码文件分别与第一版本的代码文件进行比对,得到的差异代码数量越来越多,需要核对的工作量加大,差异代码的有效性就会降低;若设定执行此次修改的上一版本的代码文件为第一代码文件,如果第二代码文件总是与第二代码文件的上一版本的代码文件进行比对,由于对每个版本的代码文件只测试一次,很容易漏掉二者相同但是却没有进行测试的代码,从而可能会造成产品使用过程中出现问题,所以由测试人员预设一个标准版本的代码文件作为第一代码文件进行比对,最后得到的差异代码文件有效性更高。所以测试人员需要根据代码文件的修改程度和测试程度预设一个合适的版本的代码文件作为标准版本的代码文件,即第一代码文件,将第二代码文件与第一代码文件进行比对从而得到与第一代码文件相比第二代码文件中的差异代码文本。
本实施例中,S101和S102两个步骤优选同时进行,从而节省时间成本,减少等待时间,当然也可以分步进行,也可以先执行S102,再执行S101,此处不做限制。
S103、对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率;所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
本实施例中,代码文件中的代码文本是用来实现不同的功能。将代码文本按照不同的功能分成不同的功能分支,用来实现不同功能分支的代码文本即为分支代码。
在一具体应用场景中,将所述代码覆盖文件中的已执行代码文本和未执行代码文本与所述差异代码文件中的差异代码文本结合,从而得到差异代码文本中那些代码已经执行,哪些代码没有执行,再统计得到所述第二代码文件的差异代码覆盖率。在计算代码覆盖率的时候优选以代码行数为计算单位,所述差异代码覆盖率计算公式为:
Figure BDA0002035111360000082
进一步地,由于分支代码中包括很多判断语句或者循环语句,在测试过程中很容易漏掉某一个判断或者某一个循环等分支,使得用户在使用产品时出现问题,所以优选将分支差异代码覆盖率单独呈现给测试人员。具体地,在统计差异代码覆盖率的基础上,再对分支差异代码进行统计,得到分支差异代码覆盖率。所述分支差异代码覆盖率计算公式为:
Figure BDA0002035111360000081
测试人员在测试过程中通常是对整个项目进行测试,每个项目是由多个代码文件组成,所以在计算整个项目的差异代码覆盖率和分支差异代码覆盖率的时候,需要对每个代码文件的差异代码覆盖率和分支差异代码覆盖率进行相加,得到最终的整个项目的差异代码覆盖率和分支差异代码覆盖率。具体公式如下:
整体项目差异代码覆盖率=(第1个代码文件差异代码覆盖率+第2个代码文件差异代码覆盖率+…+第N个代码文件差异代码覆盖率)/N*100%;
整体项目分支差异代码覆盖率=(第1个代码文件分支差异代码覆盖率+第2个代码文件分支差异代码覆盖率+…+第N个代码文件分支差异代码覆盖率)/N*100%;
其中,N取正整数。
本实施例中,通过确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中,所述第一代码文件和第二代码文件中的代码版本不同,;所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率;所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比,分析得到了本次测试代码文件的代码覆盖率,掌握了哪些代码已经完成测试,哪些代码没有进行测试,然后针对没有进行测试的代码进行补充测试,完成对产品的整体测试,从而提升测试的全面性,保证产品的质量,改善用户体验,并且通过本实施例分析得到了本次测试代码文件与设定的标准测试代码文件相比,本次测试代码文件中的差异代码的执行情况,从而计算得到差异代码的覆盖率和分支差异代码的覆盖率分别是多少,测试人员可以直接对其中未执行的代码编写补充测试用例进行测试,进而提升测试的全面性,降低在使用产品过程中错误发生率,节约了产品的研发时间与研发成本。
图2为本申请实施例二中差异代码覆盖率的分析方法流程示意图;如图2所示,其包括:
S201、确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件;
此步骤与上述实施例一致,详见上述实施例,此处不再赘述。
S202、将所述第二代码文件与第一代码文件进行比对,得到所述差异代码文件名称、所述差异代码文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
在一具体实施场景中,优选地采用Git hub自带的命令Git diff将所述第二代码文件与第一代码文件进行比对,得到所述差异代码文件名称和所述差异代码文本在所述第二代码文件中的代码位置信息以及所述第二代码文件与所述第一代码文件之间的差异代码文本,并将其存储在设定的位置,得到差异代码文件,以便于对所述差异代码文件进行分析。具体地,在对比第一代码文件和第二代码文件的过程中,每个代码行逐行进行比对;例如,如果通过比对发现第二代码文件的第5行代码和第一代码文件的第5行有差异,则将第5行代码文本提取出来,存储到差异代码文件中,并将其在第二代码文件的代码位置信息存储到差异代码文件中。
本实施例中,所述差异代码文件名称是从测试平台本地存储的代码库中下载得到的第二代码文件名称。所述差异代码文本在所述第二代码文件中的代码位置信息包括所述差异代码文本在所述第二代码文件中所在行数。
在一具体实施场景中,所述差异代码文件包括差异代码文件名称和所述差异代码文本在第二代码文件中的代码位置信息以及所述差异代码文本,将其存储在所述差异代码文件中设定的位置,例如将差异代码文件名称存储在第一行,将所述差异代码文本所在位置存储在第四行,将所述差异代码文本存储在第五行;当然还可以采用其他的存储规则,只要能够便于对所述差异代码文件进行分析即可。进一步地,将所述差异代码文件存储为设定的格式,优选的存储为json格式,便于对所述差异代码文件进行分析,当然,存储为其他格式也可以。
S203、解析所述代码覆盖文件,得到代码覆盖率报告,所述代码覆盖率报告中包括所述代码覆盖文件的名称、所述代码覆盖文件中的已执行代码文本和未执行代码文本;从所述差异代码文件中获取所述差异代码文件名称以及所述差异代码文本。
本实施例中,所述代码覆盖率报告中形成的文件为.java.html格式,所以需要对代码覆盖率报告进行字符串处理,将后缀.html删除即可得到所述代码覆盖文件的名称,即部署在服务器上的第二代码文件的名称,并且根据所述代码覆盖率报告中的突出显示,确认所述代码文件中的已执行代码文本和未执行代码文本。
具体地,若所述差异代码文件存储格式为json格式,并且其存储内容是有规律的,所以,可以采用for循环的方式从所述差异代码文件中获取代码文件的名称以及所述差异代码文本。
S204判断所述覆盖代码文件的名称与所述差异代码文件名称是否一致,如果一致则执行步骤S205A;如果不一致则执行步骤S205B。
S205A、根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
S205B、生成错误提示信息。
在一具体实施场景中,判断所述代码覆盖文件的名称与所述差异代码文件名称是否一致,如果不一致,则生成错误提示信息,通过测试平台前端的显示页面进行反馈,提示代码文件错误。如果二者一致,则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
本实施例中,在所述代码覆盖率报告中定位所述差异代码文本,然后根据所述代码覆盖率报告中的突出显示标识确认所述差异代码文本中的已执行代码和未执行代码,然后进行数量统计,根据公式计算得到差异代码覆盖率;然后再对分支差异代码的执行情况进行统计,根据公式计算得到分支差异代码覆盖率,并将差异代码覆盖率和分支差异代码覆盖率存储到数据库中,进行备份。
图3为本申请实施例三中差异代码覆盖率的分析方法流程示意图;如图3所示,其包括:
S301、确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件;
S302、将所述第二代码文件与第一代码文件进行比对,得到所述差异代码文件名称、所述差异代码文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
S301、S302与S201、S202步骤一致,详见上述实施例,此处不再赘述。
S303、解析所述代码覆盖文件,得到代码覆盖率报告,所述代码覆盖率报告中包括所述代码覆盖文件的名称、所述代码覆盖文件中的已执行代码文本和未执行代码文本,从所述差异代码文件中获取所述差异文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
具体地,如前所述,若所述差异代码文件存储格式为json格式,并且其存储内容是有规律的,所以,可以采用for循环的方式从所述差异代码文件中获取所述差异文本所在位置以及所述差异代码文本。
S304、根据从所述差异代码文件中获取的所述差异代码文本在所述第二代码文件中的代码位置信息判断所述覆盖率报告中同样位置的代码文本与所述差异代码文本是否一致,如果一致则执行步骤S305A;如果不一致则执行步骤S305B。
S305A、根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
S305B、生成错误提示信息。
在一具体实施场景中,根据所述差异代码文本在所述第二代码文件中的代码位置信息到所述代码覆盖率报告的同样的位置获取对应的代码文本,然后将从代码覆盖率报告中获取的代码文本与所述差异代码文本进行比对,如果不一致,则生成错误提示信息,通过测试平台前端的显示页面进行反馈,提示代码文件错误。如果二者一致,则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
本实施例中,根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率的具体操作与上述实施例一致,详见上述实施例,此处不再赘述。
图4为本申请实施例四中差异代码覆盖率的分析方法流程示意图;如图4所示,其包括:
S401、确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件;
S402、将所述第二代码文件与第一代码文件进行比对,得到所述差异代码文件名称、所述差异代码文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
S401、S402与S201、S202步骤一致,详见上述实施例,此处不再赘述。
S403、解析所述代码覆盖文件,得到所述代码覆盖率报告,所述代码覆盖率报告中包括所述代码覆盖文件的名称、所述代码覆盖文件中的已执行代码文本和未执行代码文本;从所述差异代码文件中获取所述差异代码文件名称、所述差异文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
本实施例中从所述差异代码文件中获取所述差异代码文件名称、所述差异文本在所述第二代码文件中的代码位置信息以及所述差异代码文本的具体操作与上述实施例一致,详见上述实施例,此处不再赘述。
S404、判断所述覆盖代码文件的名称与所述差异代码文件名称是否一致,如果一致则执行步骤S405A;如果不一致则执行步骤S405B。
S405A、根据从所述差异代码文件中获取的所述差异代码文本在所述第二代码文件中的代码位置信息判断所述覆盖率报告中同样位置的代码文本与所述差异代码文本是否一致。如果一致则执行步骤S406A;如果不一致则执行步骤S406B。
S405B、生成错误提示信息。
S406A、根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
S406B、生成错误提示信息。
本实施例中,由于所述第二代码文件是从代码库中下载的,不能够确保其与部署到服务器上的第二代码文件是同一个代码文件或者是两个代码文件的版本是否相同,使得覆盖率的分析情况不够准确,所以优选地将所述覆盖代码文件名称与所述差异代码文件名称进行比对,再根据所述差异代码文本在所述第二代码文件中的代码位置信息将所述覆盖率报告中同样位置的代码文本与所述差异代码文本进行比对,进行双重校验,这样能够更加确保第二代码文件的正确性,从而能够得到准确的覆盖率。
在另一具体实施场景中,还包括根据所述差异代码覆盖率和分支差异代码覆盖率对所述第二代码文件进行突出显示标识,例如在所述代码文件的代码行后面标识“新代码行已覆盖”、“新代码行未覆盖”、“分支新代码行部分覆盖”等类似的标识,并使用不同的颜色突出显示,形成差异代码覆盖率和分支差异代码覆盖率报告,便于测试人员查看,然后进行针对性的补充测试,测试未执行的代码,节约了时间成本。
本实施例中,如果对代码文件进行测试时,测试人员自己发现所述代码文件中存在问题,或者是因为其他情况,需要终止本次测试,对所述代码文件进行修改,之后将修改后的代码文件部署在服务器上后,再重启服务器,重新进行测试。由于服务器重启之后,Jacoco收集的数据文件也就被清空,并且直接是从终止时的测试用例重新开始测试,从而完成测试。此时之前完成的测试用例对于修改后的代码文件来说就还需要重新测试,浪费大量的时间。所以在另一具体实施场景中,在得到所述代码文件的差异代码覆盖率和分支差异代码覆盖率后,还可以选择是否将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。
在测试平台上,测试人员可以选择将本次分析得到的覆盖率与上一次分析得到的覆盖率进行合并,从而就能够节约时间成本,尽快完成测试。
在一具体实施场景中,判断本次代码覆盖文件名称与上一次代码覆盖文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。具体地,首先从本次代码覆盖率报告中,获取本次代码文件的名称,同时从本地数据库中存储的上一次代码覆盖率报告中获取上一次代码文件的名称,然后将本次代码文件的名称与上一次代码文件的名称进行比对,如果二者不一致,则反馈错误信息,不能进行合并,需要进行重新测试;如果二者一致,则将本次代码覆盖率报告中的代码与上一次代码覆盖率报告中的代码逐行进行比对,如果哪一行不一致,则生成错误提示信息,提示需要对此行代码重新进行测试;如果一致,则针对同样的代码行根据上一次代码覆盖率报告中的突出显示标识对本次代码覆盖率报告中作出同样的突出显示标识,得到更新后的代码覆盖率报告,并根据更新后的代码覆盖率报告重新计算本次代码文件中的差异代码覆盖率和分支差异代码覆盖率,并生成差异代码覆盖率报告和分支差异代码覆盖率报告,并且存储到本地进行备份。
当然如果本次代码文件与上一次代码文件根本就不相同,测试人员可以选择初始化覆盖率,全部重新开始测试。
图5为本申请实施例五中差异代码覆盖率的分析装置的结构示意图;其包括:
确定单元501,用于确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中,所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;
分析单元502,用于对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率,所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
在一具体实施场景中,确定单元501进一步用于将所述第二代码文件与第一代码文件进行比对,得到差异代码文件名称、所述差异代码文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
在一具体实施场景中,分析单元502进一步用于解析所述代码覆盖文件,得到代码覆盖率报告,所述代码覆盖率报告中包括所述代码覆盖文件的名称、所述代码覆盖文件中的已执行代码文本和未执行代码文本;从所述差异代码文件中获取所述差异代码文件名称和所述差异代码文本在所述第二代码文件中的代码位置信息中的至少一种以及所述差异代码文本。
在一具体实施场景中,分析单元502还用于判断所述代码覆盖文件的名称与所述差异代码文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
在一具体实施场景中,分析单元502还用于根据所述差异代码文本在所述第二代码文件中的代码位置信息,判断所述覆盖率报告中同样位置的代码文本与所述差异代码文本是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
在一具体实施场景中,分析单元502还用于判断所述代码覆盖文件的名称与所述差异代码文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述差异代码文本在所述第二代码文件中的位置信息,判断所述覆盖率报告中同样位置的代码文本与所述差异代码文本是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
本实施例中还包括合并单元503,用于选择是否将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。
在一具体实施场景中,所述合并单元503还用于判断本次代码覆盖文件名称与上一次代码覆盖文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。
图6为本申请实施例六中电子设备的结构示意图;该电子设备可以包括:
一个或多个处理器601;
计算机可读介质602,可以配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述任一实施例中所述的访问方法。
图7为本申请实施例七中电子设备的硬件结构;如图7所示,该电子设备的硬件结构可以包括:处理器701,通信接口702,计算机可读介质703和通信总线704;
其中处理器701、通信接口702、计算机可读介质703通过通信总线704完成相互间的通信;
可选的,通信接口702可以为通信模块的接口,如GSM模块的接口;
其中,处理器701具体可以配置为:确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率,所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
处理器701可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述实施例中,电子设备可以为前端的智能终端,也可以为后台的服务器,当为前端的智能终端时,以是智能家电。该家电可包括以下至少一种,例如:电视、数字化视频光碟(DVD)播放器、音响装置、冰箱、空调、真空清洁器、烤箱、微波炉、洗衣机、空气净化器、机顶盒、家庭自动化控制面板、安全控制面板、电视盒(例如,SAMSUNG HOMESYNCTM、APPLE TVTM或GOOGLE TVTM)、游戏机(例如,XBOXTM和PLAYSTATIONTM)、电子词典、电子钥匙、摄录机和电子相框。
根据另一个实施方式,电子设备可包括以下至少一种:各种医疗设备(例如,各种便携式医疗测量设备(例如,血糖监测设备、心率监测设备、血压测量设备、体温测量设备等)、磁共振血管造影(MRA)、磁共振成像(MRI)、计算机断层扫描(CT)仪、以及超声仪)、导航设备、全球定位系统(GPS)接收器、事件数据记录器(EDR)、飞行数据记录器(FDR)、车辆娱乐信息设备、用于船舶的电子设备(例如,用于船舶的导航设备和回转罗盘)、航空电子设备、安全设备、机动车头部单元、家用或工业机器人、银行中的自动柜员机(ATM)、商店中的销售点(POS)、或物联网设备(例如,电灯泡、各种传感器、电量计或气量计、喷淋设备、消防报警器、恒温控制器、路灯、烤面包器、运动器械、热水箱、加热器、热水器等)。
根据一些实施方式,电子设备可包括以下至少一种:家具或建筑/结构的一部分、电子板、电子签名接收设备、投影仪和各种类型的测量仪器(例如,水量计、电量计、气量计或无线电波计)。根据本公开各种实施方式的电子设备可以是上述各种设备的一种或多种的组合。根据本公开的一些实施方式的电子设备可以是柔性设备。另外,根据本公开实施方式的电子设备不限于上述设备,而可包括根据技术发展的新的电子设备。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含配置为执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写配置为执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络:包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个配置为实现规定的逻辑功能的可执行指令。上述具体实施例中有特定先后关系,但这些先后关系只是示例性的,在具体实现的时候,这些步骤可能会更少、更多或执行顺序有调整。即在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括确定单元,用于确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中,所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;分析单元,用于对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率,所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。例如,确定单元还可以被描述为“用于确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中,所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任一实施例中所描述的方法。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率,所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
在本公开的各种实施方式中所使用的表述“第一”、“第二”、“所述第一”或“所述第二”可修饰各种部件而与顺序和/或重要性无关,但是这些表述不限制相应部件。以上表述仅配置为将元件与其它元件区分开的目的。例如,第一用户设备和第二用户设备表示不同的用户设备,虽然两者均是用户设备。例如,在不背离本公开的范围的前提下,第一元件可称作第二元件,类似地,第二元件可称作第一元件。
当一个元件(例如,第一元件)称为与另一元件(例如,第二元件)“(可操作地或可通信地)联接”或“(可操作地或可通信地)联接至”另一元件(例如,第二元件)或“连接至”另一元件(例如,第二元件)时,应理解为该一个元件直接连接至该另一元件或者该一个元件经由又一个元件(例如,第三元件)间接连接至该另一个元件。相反,可理解,当元件(例如,第一元件)称为“直接连接”或“直接联接”至另一元件(第二元件)时,则没有元件(例如,第三元件)插入在这两者之间。
本文中所使用的用语“模块”或“功能单元”例如可意为包括有硬件、软件和固件的单元或者包括有硬件、软件和固件中两种或更多种的组合的单元。“模块”可与例如用语“单元”、“逻辑”、“逻辑块”、“部件”或“电路”可交换地使用。“模块”或“功能单元”可以是集成部件元件的最小单元或集成部件元件的一部分。“模块”可以是用于执行一个或多个功能的最小单元或其一部分。“模块”或“功能单元”可机械地或电学地实施。例如,根据本公开的“模块”或“功能单元”可包括以下至少一种:专用集成电路(ASIC)芯片、场可编程门阵列(FPGA)以及已公知的或今后待开发的用于执行操作的可编程逻辑器件。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种代码覆盖率的分析方法,其特征在于,包括:
确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中,所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;
对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率,所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
2.根据权利要求1所述的方法,其特征在于,根据所述第二代码文件与第一代码文件,得到差异代码文件包括:将所述第二代码文件与第一代码文件进行比对,得到差异代码文件名称、所述差异代码文本在所述第二代码文件中的代码位置信息以及所述差异代码文本。
3.根据权利要求2所述的方法,其特征在于,对所述代码覆盖文件与所述差异代码文件进行分析包括:解析所述代码覆盖文件,得到代码覆盖率报告,所述代码覆盖率报告中包括所述代码覆盖文件的名称、所述代码覆盖文件中的已执行代码文本和未执行代码文本;从所述差异代码文件中获取所述差异代码文件名称和所述差异代码文本在所述第二代码文件中的代码位置信息中的至少一种以及所述差异代码文本。
4.根据权利要求3所述的方法,其特征在于,若从所述差异代码文件中获取到所述差异代码文件名称,则所述方法还包括:判断所述代码覆盖文件的名称与所述差异代码文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
5.根据权利要求3所述的方法,其特征在于,若从所述差异代码文件中获取到所述差异代码文本在所述第二代码文件中的代码位置信息,则所述方法还包括:根据所述差异代码文本在所述第二代码文件中的代码位置信息,判断所述覆盖率报告中同样位置的代码文本与所述差异代码文本是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
6.根据权利要求3所述的方法,其特征在于,若从所述差异代码文件中获取到差异代码文件名称和所述差异代码文本在所述第二代码文件中的代码位置信息,则所述方法还包括:判断所述代码覆盖文件的名称与所述差异代码文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述差异代码文本在所述第二代码文件中的位置信息,判断所述覆盖率报告中同样位置的代码文本与所述差异代码文本是否一致,如果不一致,则生成错误提示信息;如果一致则根据所述代码覆盖率报告中的已执行代码文本和未执行代码文本以及所述差异代码文本统计所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率。
7.根据权利要求1-6任一所述的方法,其特征在于,还包括:选择是否将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。
8.根据权利要求7所述的方法,其特征在于,将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并包括:判断本次代码覆盖文件名称与上一次代码覆盖文件名称是否一致,如果不一致,则生成错误提示信息;如果一致则将本次得到的差异代码覆盖率和分支差异代码覆盖率与上一次得到的差异代码覆盖率和分支差异代码覆盖率进行合并。
9.一种代码覆盖率的分析装置,其特征在于,包括:
确定单元,用于确定部署在服务器上的第二代码文件的代码覆盖文件,并根据所述第二代码文件与第一代码文件,得到差异代码文件,其中,所述第一代码文件和第二代码文件中的代码版本不同,所述差异代码文件包括所述第二代码文件与第一代码文件之间的差异代码文本;所述代码覆盖文件中包括与所述第二代码文件中的代码文本相同且具有代码执行情况标识信息的代码文本;
分析单元,用于对所述代码覆盖文件与所述差异代码文件进行分析,得到所述第二代码文件的差异代码覆盖率和分支差异代码覆盖率;所述差异代码覆盖率用于表示所述差异代码文本中已执行代码的数量与全部差异代码的数量的百分比,所述分支差异代码覆盖率用于表示所述差异代码文本中已执行分支代码的数量与全部分支差异代码的数量的百分比。
10.一种电子设备,包括:
一个或多个处理器;
计算机可读介质,配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
CN201910322208.8A 2019-04-22 2019-04-22 代码覆盖率的分析方法、装置及其电子设备 Active CN111831321B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910322208.8A CN111831321B (zh) 2019-04-22 2019-04-22 代码覆盖率的分析方法、装置及其电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910322208.8A CN111831321B (zh) 2019-04-22 2019-04-22 代码覆盖率的分析方法、装置及其电子设备

Publications (2)

Publication Number Publication Date
CN111831321A true CN111831321A (zh) 2020-10-27
CN111831321B CN111831321B (zh) 2022-09-27

Family

ID=72912767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910322208.8A Active CN111831321B (zh) 2019-04-22 2019-04-22 代码覆盖率的分析方法、装置及其电子设备

Country Status (1)

Country Link
CN (1) CN111831321B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112597041A (zh) * 2020-12-28 2021-04-02 上海品顺信息科技有限公司 代码覆盖率的跨分支合并方法、系统、设备及存储介质
CN112612716A (zh) * 2020-12-28 2021-04-06 上海品顺信息科技有限公司 差异行代码覆盖率增强标记方法、系统、设备及存储介质
CN113094289A (zh) * 2021-05-18 2021-07-09 绿漫科技有限公司 一种通过python语言实现接口覆盖率统计的实现方法
CN113568839A (zh) * 2021-08-03 2021-10-29 京东科技控股股份有限公司 软件测试和统计测试覆盖率的方法、装置、设备及介质
CN113760307A (zh) * 2020-11-19 2021-12-07 北京沃东天骏信息技术有限公司 获取应用代码的差异化覆盖率的方法和装置
CN115982058A (zh) * 2023-03-20 2023-04-18 中国空气动力研究与发展中心计算空气动力研究所 一种计算流体力学代码错误定位方法、装置、设备及介质
CN117806981A (zh) * 2024-03-01 2024-04-02 中国空气动力研究与发展中心计算空气动力研究所 一种cfd软件自动化测试方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155909A (zh) * 2016-07-26 2016-11-23 网易(杭州)网络有限公司 代码覆盖率测试结果的处理方法及装置
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 百度在线网络技术(北京)有限公司 用于确定增量代码的覆盖率信息的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155909A (zh) * 2016-07-26 2016-11-23 网易(杭州)网络有限公司 代码覆盖率测试结果的处理方法及装置
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 百度在线网络技术(北京)有限公司 用于确定增量代码的覆盖率信息的方法和装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760307A (zh) * 2020-11-19 2021-12-07 北京沃东天骏信息技术有限公司 获取应用代码的差异化覆盖率的方法和装置
CN112597041A (zh) * 2020-12-28 2021-04-02 上海品顺信息科技有限公司 代码覆盖率的跨分支合并方法、系统、设备及存储介质
CN112612716A (zh) * 2020-12-28 2021-04-06 上海品顺信息科技有限公司 差异行代码覆盖率增强标记方法、系统、设备及存储介质
CN112612716B (zh) * 2020-12-28 2023-01-20 上海品顺信息科技有限公司 差异行代码覆盖率增强标记方法、系统、设备及存储介质
CN113094289A (zh) * 2021-05-18 2021-07-09 绿漫科技有限公司 一种通过python语言实现接口覆盖率统计的实现方法
CN113568839A (zh) * 2021-08-03 2021-10-29 京东科技控股股份有限公司 软件测试和统计测试覆盖率的方法、装置、设备及介质
CN115982058A (zh) * 2023-03-20 2023-04-18 中国空气动力研究与发展中心计算空气动力研究所 一种计算流体力学代码错误定位方法、装置、设备及介质
CN115982058B (zh) * 2023-03-20 2023-07-07 中国空气动力研究与发展中心计算空气动力研究所 一种计算流体力学代码错误定位方法、装置、设备及介质
CN117806981A (zh) * 2024-03-01 2024-04-02 中国空气动力研究与发展中心计算空气动力研究所 一种cfd软件自动化测试方法及系统
CN117806981B (zh) * 2024-03-01 2024-05-07 中国空气动力研究与发展中心计算空气动力研究所 一种cfd软件自动化测试方法及系统

Also Published As

Publication number Publication date
CN111831321B (zh) 2022-09-27

Similar Documents

Publication Publication Date Title
CN111831321B (zh) 代码覆盖率的分析方法、装置及其电子设备
CN106874187B (zh) 代码覆盖率收集方法和装置
CN103294594A (zh) 一种基于测试的静态分析误报消除方法
CN108009080B (zh) 一种代码扫描工具的评估方法及装置
CN105468507B (zh) 分支达标检测方法及装置
CN105183658A (zh) 测试软件代码的方法及装置
US20160314061A1 (en) Software Defect Detection Identifying Location of Diverging Paths
CN106294109B (zh) 获取缺陷代码的方法及装置
CN110688173B (zh) 一种跨平台界面框架中组件的定位方法、装置及电子设备
CN111752833A (zh) 一种软件质量体系准出方法、装置、服务器及存储介质
CN112446442A (zh) 一种样本分析系统、信息匹配方法及计算机存储介质
CN115756934A (zh) 一种应用崩溃分析方法及装置
CN112596966B (zh) 芯片验证方法、装置、设备、存储介质
JP2005250836A (ja) 医用検査ナビゲーションシステム
CN111061258B (zh) 一种基于列车控制系统的功能测试方法及装置
CN111427874B (zh) 医疗数据生产的质控方法、装置以及电子设备
CN113986758A (zh) 回归测试方法和装置、电子设备、计算机可读介质
CN115129575A (zh) 一种代码覆盖结果生成方法及装置
CN111639028A (zh) 一种对账规则脚本测试方法、装置、引擎及存储介质
CN116820946B (zh) 一种对目标软件兼容性进行自动化测试的方法和装置
CN110688297A (zh) 一种针对计算逻辑组态的自动化测试方法
CN112712151B (zh) 疫情健康码质控方法及装置、介质、设备
CN116054910B (zh) 基于知识图谱构建的地球站设备故障分析及装置
CN111061599B (zh) 接口测试环境的检查点的生成方法
JP6469311B2 (ja) 試験装置および試験プログラム

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