CN112612716B - 差异行代码覆盖率增强标记方法、系统、设备及存储介质 - Google Patents

差异行代码覆盖率增强标记方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN112612716B
CN112612716B CN202011606350.4A CN202011606350A CN112612716B CN 112612716 B CN112612716 B CN 112612716B CN 202011606350 A CN202011606350 A CN 202011606350A CN 112612716 B CN112612716 B CN 112612716B
Authority
CN
China
Prior art keywords
code
difference
file
coverage rate
line
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
CN202011606350.4A
Other languages
English (en)
Other versions
CN112612716A (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.)
Shanghai Pinshun Information Technology Co ltd
Original Assignee
Shanghai Pinshun Information 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 Shanghai Pinshun Information Technology Co ltd filed Critical Shanghai Pinshun Information Technology Co ltd
Priority to CN202011606350.4A priority Critical patent/CN112612716B/zh
Publication of CN112612716A publication Critical patent/CN112612716A/zh
Application granted granted Critical
Publication of CN112612716B publication Critical patent/CN112612716B/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

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

本发明公开了一种差异行代码覆盖率增强标记方法、系统、设备及存储介质,其中方法包括:将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;获取与全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;将版本号commit_id与差异比较基准commit_baseline进行比较,得到代码差异日志;将代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;获取并扫描差异行代码覆盖率文件对应的源码文件,得到源码文件的语法树AST;将语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。本发明通过将业务优先级高的差异代码行进行增强标记,使得用户可以更聚焦于代码差异率的检验,节省了测试用时。

Description

差异行代码覆盖率增强标记方法、系统、设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种差异行代码覆盖率增强标记方法、系统、设备及存储介质。
背景技术
在软件开发过程中,开发人员需要对开发好的代码进行测试,而在测试的过程中,通常需要对软件测试过程的代码覆盖率进行统计。代码覆盖是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得到的比例称为代码覆盖率。代码覆盖率是反映测试用例对被测软件覆盖程度的一个重要指标,是用来衡量测试完整性的一个参考值。通过代码覆盖率数据,我们可以评估测试是否充分,从而决定是否需要重复执行软件测试。
目前,从业界的代码覆盖率技术来看,虽然Objective-C代码覆盖率支持全量代码行/差异代码行的代码覆盖率统计,但对于差异代码行的统计,未能深入代码逻辑,对于一些业务优先级不高的代码行,如异常捕获,日志打印,判空处理等未能降低标记的优先级,导致了代码行差异率的检验较为困难。
以上信息作为背景信息给出只是为了辅助理解本公开,并没有确定或者承认任意上述内容是否可用作相对于本公开的现有技术。
发明内容
本发明提供一种差异行代码覆盖率增强标记方法、系统、设备及存储介质,以解决现有技术的不足。
为实现上述目的,本发明提供以下的技术方案:
第一方面,本发明实施例提供一种差异行代码覆盖率增强标记方法,所述方法包括:
将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;
获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;
将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志;
将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;
获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST;
将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
进一步地,所述差异行代码覆盖率增强标记方法中,在所述将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告的步骤之后,所述方法还包括:
提取所述差异行代码覆盖率报告中的文件路径,并分析各文件路径的差异行代码覆盖率;
根据预设的路径业务映射关系表,将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,得到各业务线的差异行代码覆盖率统计。
进一步地,所述差异行代码覆盖率增强标记方法中,所述将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据的步骤包括:
通过lcov工具将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据。
进一步地,所述差异行代码覆盖率增强标记方法中,所述将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志的步骤包括:
通过git diff工具将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
第二方面,本发明实施例提供一种差异行代码覆盖率增强标记系统,所述系统包括:
合并模块,用于将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;
获取模块,用于获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;
比较模块,用于将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志;
标记模块,用于将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;
扫描模块,用于获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST;
生成模块,用于将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
进一步地,所述差异行代码覆盖率增强标记系统中,所述系统还包括:
统计模块,用于在所述将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告的步骤之后,提取所述差异行代码覆盖率报告中的文件路径,并分析各文件路径的差异行代码覆盖率;
根据预设的路径业务映射关系表,将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,得到各业务线的差异行代码覆盖率统计。
进一步地,所述差异行代码覆盖率增强标记系统中,所述合并模块具体用于:
通过lcov工具将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据。
进一步地,所述差异行代码覆盖率增强标记系统中,所述比较模块具体用于:
通过git diff工具将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
第三方面,本发明实施例提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令由计算机处理器执行,以实现如上任一方面所述的差异行代码覆盖率增强标记方法。
第四方面,本发明实施例提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令由计算机处理器执行,以实现如上任一方面所述的差异行代码覆盖率增强标记方法。
本发明实施例提供的一种差异行代码覆盖率增强标记方法、系统、设备及存储介质,通过将业务优先级高的差异代码行进行增强标记,使得用户可以更聚焦于代码差异率的检验,节省了测试用时,改善了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例一提供的一种差异行代码覆盖率增强标记方法的流程示意图;
图2是本发明实施例二提供的一种差异行代码覆盖率增强标记方法的流程示意图;
图3是本发明实施例三提供的一种差异行代码覆盖率增强标记系统的功能模块示意图;
图4是本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
为使得本发明的目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中设置的组件。当一个组件被认为是“设置在”另一个组件,它可以是直接设置在另一个组件上或者可能同时存在居中设置的组件。
此外,术语“长”“短”“内”“外”等指示方位或位置关系为基于附图所展示的方位或者位置关系,仅是为了便于描述本发明,而不是指示或暗示所指的装置或原件必须具有此特定的方位、以特定的方位构造进行操作,以此不能理解为本发明的限制。
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
实施例一
有鉴于现有的技术存在的缺陷,本发明人基于从事该行业多年丰富的实务经验及专业知识,并配合学理的运用,积极加以研究创新,以期创设一种切实可行的差异行代码覆盖率检验技术,使其更具有实用性。在经过不断的研究、设计并反复试作及改进后,终于创设出确具实用价值的本发明。
请参阅图1,图1是本发明实施例公开的一种差异行代码覆盖率增强标记方法的流程示意图,该方法适用于检验代码差异率的场景,该方法由差异行代码覆盖率增强标记系统来执行,该系统可以由软件和/或硬件实现,集成于计算机的内部。如图1所示,该差异行代码覆盖率增强标记方法可以包括以下步骤:
S101、将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据。
优选的,所述步骤S101进一步包括:
通过lcov工具将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据(info)。
S102、获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline。
S103、将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
优选的,所述步骤S103进一步包括:
通过git diff工具将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
需要说明的是,本实施例针对全量代码行覆盖率数据(info),先获取该info文件对应的版本号commit_id,再获得差异比较基准commit_baseline,最后通过git diff工具对比这两个以获得代码差异日志。
S104、将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件。
需要说明的是,本步骤具体是通过所述代码差异日志获得每一行新增代码,然后经过源码处理系统,过滤掉业务优先级低的代码行,并将业务优先级高的代码行进行增强标记,最后生成包含增强标记后的代码行的差异行代码覆盖率文件,该差异行代码覆盖率文件是较为初始的文件,还需要进行以下步骤才能得到最终的差异行代码覆盖率报告。
S105、获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST。
S106、将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
需要说明的是,本实施例对于差异行代码覆盖率文件,先获得其涉及代码差异的源码文件,让通过python工具libclang扫描该源码文件以获得该源码文件的语法树AST。一般的语法树扫描包含statement(说明),declare(声明)。通过语法树AST分析,获得业务优先级低的statement,如ifstatement的判空处理,catch statement的异常处理,messagestatement的日志/埋点处理等,在将上述业务优先级低的statement过滤后,可生成差异行代码覆盖率报告。
本发明实施例提供的一种差异行代码覆盖率增强标记方法,通过将业务优先级高的差异代码行进行增强标记,使得用户可以更聚焦于代码差异率的检验,节省了测试用时,改善了用户体验。
实施例二
如图2所示,本发明实施例二提供的差异行代码覆盖率增强标记方法,是在实施例一提供的技术方案的基础上,在步骤S106“将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告”之后,做了进一步优化。与上述各实施例相同或相应的术语的解释在此不再赘述。所述方法还包括:
提取所述差异行代码覆盖率报告中的文件路径,并分析各文件路径的差异行代码覆盖率;
根据预设的路径业务映射关系表,将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,得到各业务线的差异行代码覆盖率统计。
基于上述优化,如图2所示,本实施例提供的一种差异行代码覆盖率增强标记方法,可以包括如下步骤:
S201、将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据。
S202、获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline。
S203、将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
S204、将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件。
S205、获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST。
S206、将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
S207、提取所述差异行代码覆盖率报告中的文件路径,并分析各文件路径的差异行代码覆盖率;
S208、根据预设的路径业务映射关系表,将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,得到各业务线的差异行代码覆盖率统计。
需要说明的是,系统中预先保存有文件路径与业务线的映射关系表,系统根据预先保存的映射关系表中分别对每一个文件路径进行属于哪一个业务线的判断,从而将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,最终获得各业务线的差异行代码覆盖率统计。
本发明实施例提供的一种差异行代码覆盖率增强标记方法,解决了Objective-C差异行代码覆盖率中的代码优先级问题,引入了不同的源码diff扫描技术、AST语法树扫描技术以及路径匹配分类等,最终生成基于业务优先级的差异行代码覆盖率报告,并按业务线划分,能够统计各业务线的差异覆盖率数据。
实施例三
请参阅附图3,图3为本发明实施例三提供的一种差异行代码覆盖率增强标记系统,该系统适用于执行本发明实施例提供的差异行代码覆盖率增强标记方法。该系统具体包含如下模块:
合并模块301,用于将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;
获取模块302,用于获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;
比较模块303,用于将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志;
标记模块304,用于将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;
扫描模块305,用于获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST;
生成模块306,用于将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
优选的,所述系统还包括:
统计模块,用于在所述将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告的步骤之后,提取所述差异行代码覆盖率报告中的文件路径,并分析各文件路径的差异行代码覆盖率;
根据预设的路径业务映射关系表,将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,得到各业务线的差异行代码覆盖率统计。
优选的,所述合并模块301具体用于:
通过lcov工具将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据。
优选的,所述比较模块303具体用于:
通过git diff工具将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
本发明实施例提供的一种差异行代码覆盖率增强标记系统,通过将业务优先级高的差异代码行进行增强标记,使得用户可以更聚焦于代码差异率的检验,节省了测试用时,改善了用户体验。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四提供的一种计算机设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图4显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图4中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的差异行代码覆盖率增强标记方法。
也即,所述处理单元执行所述程序时实现:将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志;将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST;将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
实施例五
本发明实施例五提供了一种计算机可读存储介质,其上存储有计算机可执行指令,该指令被处理器执行时实现如本申请所有发明实施例提供的差异行代码覆盖率增强标记方法:
也即,所述处理单元执行所述程序时实现:将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志;将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST;将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
至此,以说明和描述的目的提供上述实施例的描述。不意指穷举或者限制本公开。特定的实施例的单独元件或者特征通常不受到特定的实施例的限制,但是在适用时,即使没有具体地示出或者描述,其可以互换和用于选定的实施例。在许多方面,相同的元件或者特征也可以改变。这种变化不被认为是偏离本公开,并且所有的这种修改意指为包括在本公开的范围内。
提供示例实施例,从而本公开将变得透彻,并且将会完全地将该范围传达至本领域内技术人员。为了透彻理解本公开的实施例,阐明了众多细节,诸如特定零件、装置和方法的示例。显然,对于本领域内技术人员,不需要使用特定的细节,示例实施例可以以许多不同的形式实施,而且两者都不应当解释为限制本公开的范围。在某些示例实施例中,不对公知的工序、公知的装置结构和公知的技术进行详细地描述。
在此,仅为了描述特定的示例实施例的目的使用专业词汇,并且不是意指为限制的目的。除非上下文清楚地作出相反的表示,在此使用的单数形式“一个”和“该”可以意指为也包括复数形式。术语“包括”和“具有”是包括在内的意思,并且因此指定存在所声明的特征、整体、步骤、操作、元件和/或组件,但是不排除存在或额外地具有一个或以上的其他特征、整体、步骤、操作、元件、组件和/或其组合。除非明确地指示了执行的次序,在此描述的该方法步骤、处理和操作不解释为一定需要按照所论述和示出的特定的次序执行。还应当理解的是,可以采用附加的或者可选择的步骤。
当元件或者层称为是“在……上”、“与……接合”、“连接到”或者“联接到”另一个元件或层,其可以是直接在另一个元件或者层上、与另一个元件或层接合、连接到或者联接到另一个元件或层,也可以存在介于其间的元件或者层。与此相反,当元件或层称为是“直接在……上”、“与……直接接合”、“直接连接到”或者“直接联接到”另一个元件或层,则可能不存在介于其间的元件或者层。其他用于描述元件关系的词应当以类似的方式解释(例如,“在……之间”和“直接在……之间”、“相邻”和“直接相邻”等)。在此使用的术语“和/或”包括该相关联的所罗列的项目的一个或以上的任一和所有的组合。虽然此处可能使用了术语第一、第二、第三等以描述各种的元件、组件、区域、层和/或部分,这些元件、组件、区域、层和/或部分不受到这些术语的限制。这些术语可以只用于将一个元件、组件、区域或部分与另一个元件、组件、区域或部分区分。除非由上下文清楚地表示,在此使用诸如术语“第一”、“第二”及其他数值的术语不意味序列或者次序。因此,在下方论述的第一元件、组件、区域、层或者部分可以采用第二元件、组件、区域、层或者部分的术语而不脱离该示例实施例的教导。
空间的相对术语,诸如“内”、“外”、“在下面”、“在……的下方”、“下部”、“上方”、“上部”等,在此可出于便于描述的目的使用,以描述如图中所示的一个元件或者特征和另外一个或多个元件或者特征之间的关系。空间的相对术语可以意指包含除该图描绘的取向之外该装置的不同的取向。例如如果翻转该图中的装置,则描述为“在其他元件或者特征的下方”或者“在元件或者特征的下面”的元件将取向为“在其他元件或者特征的上方”。因此,示例术语“在……的下方”可以包含朝上和朝下的两种取向。该装置可以以其他方式取向(旋转90度或者其他取向)并且以此处的空间的相对描述解释。

Claims (10)

1.一种差异行代码覆盖率增强标记方法,其特征在于,所述方法包括:
将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;
获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;
将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志;
将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;
获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST;
将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
2.根据权利要求1所述的差异行代码覆盖率增强标记方法,其特征在于,在所述将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告的步骤之后,所述方法还包括:
提取所述差异行代码覆盖率报告中的文件路径,并分析各文件路径的差异行代码覆盖率;
根据预设的路径业务映射关系表,将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,得到各业务线的差异行代码覆盖率统计。
3.根据权利要求1所述的差异行代码覆盖率增强标记方法,其特征在于,所述将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据的步骤包括:
通过lcov工具将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据。
4.根据权利要求1所述的差异行代码覆盖率增强标记方法,其特征在于,所述将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志的步骤包括:
通过git diff工具将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
5.一种差异行代码覆盖率增强标记系统,其特征在于,所述系统包括:
合并模块,用于将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据;
获取模块,用于获取与所述全量代码行覆盖率数据对应的版本号commit_id以及差异比较基准commit_baseline;
比较模块,用于将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志;
标记模块,用于将所述代码差异日志中业务优先级高的代码行进行增强标记并生成差异行代码覆盖率文件;
扫描模块,用于获取并扫描所述差异行代码覆盖率文件对应的源码文件,得到所述源码文件的语法树AST;
生成模块,用于将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告。
6.根据权利要求5所述的差异行代码覆盖率增强标记系统,其特征在于,所述系统还包括:
统计模块,用于在所述将所述语法树AST中业务优先级低的代码块过滤,生成差异行代码覆盖率报告的步骤之后,提取所述差异行代码覆盖率报告中的文件路径,并分析各文件路径的差异行代码覆盖率;
根据预设的路径业务映射关系表,将属于同一个业务线的文件路径的差异行代码覆盖率进行汇总,得到各业务线的差异行代码覆盖率统计。
7.根据权利要求5所述的差异行代码覆盖率增强标记系统,其特征在于,所述合并模块具体用于:
通过lcov工具将测试时产生的数据文件gcda和代码编译生成的符号文件gcno合并,得到全量代码行覆盖率数据。
8.根据权利要求5所述的差异行代码覆盖率增强标记系统,其特征在于,所述比较模块具体用于:
通过git diff工具将所述版本号commit_id与所述差异比较基准commit_baseline进行比较,得到代码差异日志。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1~4中任一项所述的差异行代码覆盖率增强标记方法。
10.一种包含计算机可执行指令的存储介质,所述计算机可执行指令由计算机处理器执行,以实现如权利要求1~4中任一项所述的差异行代码覆盖率增强标记方法。
CN202011606350.4A 2020-12-28 2020-12-28 差异行代码覆盖率增强标记方法、系统、设备及存储介质 Active CN112612716B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011606350.4A CN112612716B (zh) 2020-12-28 2020-12-28 差异行代码覆盖率增强标记方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011606350.4A CN112612716B (zh) 2020-12-28 2020-12-28 差异行代码覆盖率增强标记方法、系统、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112612716A CN112612716A (zh) 2021-04-06
CN112612716B true CN112612716B (zh) 2023-01-20

Family

ID=75249344

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011606350.4A Active CN112612716B (zh) 2020-12-28 2020-12-28 差异行代码覆盖率增强标记方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112612716B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535206B (zh) * 2021-07-23 2024-02-20 上海幻电信息科技有限公司 多版本代码升级方法及系统
CN114020648B (zh) * 2022-01-04 2022-04-12 广东拓思软件科学园有限公司 应用控件的测试方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630670A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种代码覆盖率的测试方法和装置
CN107797923A (zh) * 2017-10-10 2018-03-13 平安科技(深圳)有限公司 代码覆盖率分析方法及应用服务器
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质
CN108829580A (zh) * 2018-05-07 2018-11-16 百度在线网络技术(北京)有限公司 多版本测试数据处理方法、装置、设备及存储介质
CN110928776A (zh) * 2019-11-15 2020-03-27 武汉极意网络科技有限公司 一种基于lcov实现增量代码覆盖率的检测方法、装置及设备
CN111831321A (zh) * 2019-04-22 2020-10-27 北京世纪好未来教育科技有限公司 代码覆盖率的分析方法、装置及其电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111090583B (zh) * 2019-11-25 2023-04-07 广州品唯软件有限公司 代码覆盖率报告的生成方法、装置和计算机设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105630670A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种代码覆盖率的测试方法和装置
CN107797923A (zh) * 2017-10-10 2018-03-13 平安科技(深圳)有限公司 代码覆盖率分析方法及应用服务器
CN108829580A (zh) * 2018-05-07 2018-11-16 百度在线网络技术(北京)有限公司 多版本测试数据处理方法、装置、设备及存储介质
CN108829593A (zh) * 2018-06-05 2018-11-16 平安壹钱包电子商务有限公司 代码覆盖率计算分析方法、装置、设备及存储介质
CN111831321A (zh) * 2019-04-22 2020-10-27 北京世纪好未来教育科技有限公司 代码覆盖率的分析方法、装置及其电子设备
CN110928776A (zh) * 2019-11-15 2020-03-27 武汉极意网络科技有限公司 一种基于lcov实现增量代码覆盖率的检测方法、装置及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
关于代码覆盖lcov的使用;萧然AND沐橦;《简书》;20190324;全文 *
基于测试覆盖的安全关键软件测试策略研究;张波;《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》;20120915;全文 *

Also Published As

Publication number Publication date
CN112612716A (zh) 2021-04-06

Similar Documents

Publication Publication Date Title
JP5430570B2 (ja) システムコールカバレッジ基準による試験スイート削減のための方法
US8850581B2 (en) Identification of malware detection signature candidate code
CN112612716B (zh) 差异行代码覆盖率增强标记方法、系统、设备及存储介质
US20170286693A1 (en) Security analysis using relational abstraction of data structures
US20130055207A1 (en) Demand-driven analysis of pointers for software program analysis and debugging
CN113609008B (zh) 测试结果分析方法、装置和电子设备
CN114328208A (zh) 代码检测方法及装置、电子设备、存储介质
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN110287700B (zh) 一种iOS应用安全分析方法及装置
CN104794240A (zh) 面向地理空间数据库属性值约束检查的表达式解析方法
Sun et al. Revisiting the Identification of the Co-evolution of Production and Test Code
CN115795489B (zh) 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置
CN110162729B (zh) 建立浏览器指纹以及识别浏览器类型的方法、装置
CN109784048B (zh) 一种基于程序图的栈缓冲区溢出脆弱性检测方法
CN104123138A (zh) 一种erp系统的快速构建方法
CN116881971A (zh) 一种敏感信息泄露检测方法、设备及存储介质
CN112597041B (zh) 代码覆盖率的跨分支合并方法、系统、设备及存储介质
CN115022201B (zh) 一种数据处理功能测试方法、装置、设备及存储介质
CN114625633A (zh) 用于接口测试的方法、系统和存储介质
CN112286802B (zh) 一种测试程序性能方法、装置和电子设备
CN114969759A (zh) 工业机器人系统的资产安全评估方法、装置、终端及介质
CN109710538B (zh) 一种用于大规模系统中状态相关缺陷的静态检测方法
US10803219B1 (en) Method and system for combined formal static analysis of a design code
CN114090650A (zh) 一种样本数据识别方法、装置、电子设备及存储介质
CN116340081A (zh) 一种基于硬件虚拟化的riscv内存访问违例检测方法及装置

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