CN115563008A - 代码覆盖率检测系统、方法、装置和存储介质 - Google Patents
代码覆盖率检测系统、方法、装置和存储介质 Download PDFInfo
- Publication number
- CN115563008A CN115563008A CN202211328336.1A CN202211328336A CN115563008A CN 115563008 A CN115563008 A CN 115563008A CN 202211328336 A CN202211328336 A CN 202211328336A CN 115563008 A CN115563008 A CN 115563008A
- Authority
- CN
- China
- Prior art keywords
- code
- platform
- test
- incremental
- test case
- 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
Images
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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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示出了本发明实施例中代码覆盖率检测方法的第一个实施方式示意图;
图3示出了本发明实施例中代码覆盖率检测方法的第二个实施方式示意图;
图4示出了本发明实施例中代码覆盖率检测方法的第三个实施方式示意图;
图5示出了本发明实施例中代码覆盖率检测方法的第四个实施方式示意图;
图6示出了本发明实施例中代码覆盖率检测装置的结构示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
在金融银行领域或其他领域中,需要对各个线上平台或项目等进行开发,而在开发过程中,也需要对开发代码进行修改,并对修改后的代码进行自测和测试,其测试效果由代码覆盖率所体现。
代码覆盖率,指的是进行代码测试时,代码被执行到的比例或程度,通过代码覆盖率,一定程度上可以了解代码的质量。传统的代码覆盖率工具中或者开源框架,只能做到异步统计被测试代码对应的全量代码的代码覆盖率,从而生成全量代码的代码覆盖率报告,功能比较单一,应用场景较为简单,然而,被测试代码对应的增量代码部分是与主分支代码的区别所在,传统异步统计的方式仅得到全量代码覆盖率且未异步获得,获得的代码覆盖率参考价值不高,实用性较低。
基于此,本实施例提供了一种代码覆盖率检测系统,用以提高增量代码的覆盖率检测效率。
实施例1
请参照图1,本发明实施例提供了一种代码覆盖率检测系统,该系统包括代码管理平台10、测试平台20、需求平台30和代码覆盖率平台40。
需求平台30用于根据代码管理平台10中的代码版本创建多个需求单,并对需求单与代码版本中的单个代码分支进行关联;一个代码版本对应多个需求单。简言之,在需求平台30上,可以根据一个代码版本创建多个需求单,每个需求单对应代码管理平台10上的单个开发分支。
该代码管理平台10用于创建和管理代码版本及其代码分支,一个代码版本对应多个代码分支。
代码覆盖率平台40用于获取单个代码分支中的增量代码,将增量代码与各个需求单进行关联。
测试平台20用于编写测试用例,将测试用例与需求单进行关联,并执行各需求单对应的测试用例。
代码覆盖率平台40还用于根据测试平台20的测试用例的执行结果,检测增量代码是否被覆盖。
在本实施例中,代码覆盖率平台40是一个通过收集测试痕迹,对迭代版本的增量代码进行染色或标记的平台。
测试平台20执行单个需求(需求单)对应的测试用例,代码覆盖率平台40根据测试平台20的执行结果判断该需求单对应的增量代码是否被覆盖。
其中,增量代码,是指与上次代码版本或者预定基线代码版本对比产生差异的代码文件,称为增量代码。预定基线代码版本可以是开发人员针对某一业务开发需求所开发的初始代码对应的代码版本,其上次代码版本可以是基于初始代码进行完善修改后的代码对应的代码版本。
该差异可以为新增或修改,即增量代码为原代码版本基础上对代码进行增加或者修改后的代码。分支,是指对于代码版本而言,一个代码版本可以有多个分支。例如,不同版本的源码对应不同的分支,以便于管理各个版本的源码。根据分支名可获取对应分支的代码。
可选的,针对于如银行业务系统等系统中迭代版本的增量代码,可以在代码覆盖率平台40上,通过分析代码管理平台10中代码版本或代码分支中的代码修改或迭代情况,获取每个需求单对应的增量代码,从而可以对各个代码版本的增量代码与该增量代码所满足的需求单进行关联,进而可直观的查看每个需求单对应增加的代码。测试平台20在编写测试用例时关联需求单,从而打通需求单、增量代码和测试用例之间的通道。因此,测试平台20可通过需求单找到对应的测试用例进行执行,经由代码覆盖率平台40根据测试平台20的执行结果确定增量代码的覆盖情况。
在一实施方式中,需求平台30还用于对各个需求单进行标号,得到需求编号;将单个需求单的需求编号与代码版本中的单个代码分支进行关联;一个代码版本对应多个需求编号;代码覆盖率平台40还用于将单个代码分支中的增量代码与各个需求编号进行关联;测试平台20用于将测试用例与需求编号进行关联,并执行各需求编号对应的测试用例。简言之,可在创建需求单时,对各个需求单进行标号,以需求编号形式查找对应的需求单,进而后续可将各个需求单的需求编号与各个代码分支、增量代码、测试用例进行关联,简化流程,方便相关数据的查看和获取。
基于此,请参照图2,本实施例还提供了一种代码覆盖率检测方法,用于代码覆盖率平台40,下面对该方法进行详细说明。
S100,获取代码管理平台10中单个代码分支中的增量代码,将增量代码与需求平台30中各个需求单进行关联;单个代码分支与需求单预先进行关联。
代码覆盖率平台40获取代码管理平台10中所创建的代码版本中的单个代码分支所对应的增量代码,而后将该增量代码与需求平台30中所创建的各个需求单进行关联,一个代码分支及其增量代码对应一个需求单,该需求单即为单个代码分支或单个代码分支中的增量代码所满足的需求功能。其中,需求平台30在预先创建需求单时,即将各个需求单与单个代码分支进行关联。
在一实施方式中,如图3所示,步骤S100中“获取代码管理平台10中单个代码分支中的增量代码”还具体包括如下步骤:
S110,根据预设增量代码配置信息中的代码分支参数,在代码版本中检索出对应的指定代码分支。
预先设置增量代码配置信息,该增量代码配置信息包括起始时间、终止时间和分支参数。在预先对增量代码配置信息进行设置时,主要包括起始时间(StartDate)、终止时间(EndDate)和分支参数(Turnk)的设置。这三个参数限定了代码变动的时间范围和分支范围,以便后续根据该增量代码配置信息识别代码版本中的增量代码。
S120,根据预设增量代码配置信息中的起始时间和终止时间,从代码分支中获取起始时间至终止时间内最早提交和最晚提交对应的两个版本标识。
S130,根据指定代码分支和两个版本标识,采用命令行工具进行代码变更的识别获取,得到指定代码分支中的增量代码。
在输入端设置增量代码配置信息;然后根据增量代码配置信息,在所述代码版本识别出增量代码。
增量代码的自动识别过程,主要包括:首先根据分支参数,在各个代码版本中检索出对应的指定代码分支;其中,该指定代码分支包括原始代码;然后根据起始时间和终止时间,对应的指定代码分支中获取起始时间至终止时间内最早和最晚的提交标识,追溯到最早提交和最晚提交两次提交对应的版本标识;最后根据指定代码分支和最早提交和最晚提交两次提交对应的版本标识,利用命令行工具进行代码变更的识别获取,以得到指定代码分支的增量代码,该代码变更包括新增代码或修改代码。
代码管理平台10管理各个代码版本及其原始代码,其代码管理平台10包括但不限于SVN、Git等。代码管理平台10记录每次代码分支或代码版本的提交记录,即代码变更记录,而这些记录是可以通过代码管理平台10预置的命令行工具获取,即代码管理平台10可以用于获取增量文件。
增量代码识别过程自动检出版本库对应的指定代码分支,获取源码,获取从起始时间至终止时间这段时间内最早和最晚的提交标识,即追溯到两次提交对应的版本标识,然后,进行增量代码的识别和获取。
本实施例识别增量代码的过程是自动化处理过程,此过程无需用户介入,仅需指定时间段和代码分支即可,操作简单可行,且识别准确率高,识别速度快。
S200,根据测试平台20所编写的测试用例的执行结果,检测增量代码是否被覆盖;测试用例与需求单预先进行关联。
根据测试平台20所编写的测试用例的执行结果,代码覆盖率平台40可检测增量代码是否被覆盖,即该增量代码对应的测试用例是否被执行。在此过程中,测试平台20预先将测试用例与需求平台30所创建的各个需求单进行关联,因此,可根据测试用例的执行结果,判断各个需求单对应的增量代码是否被覆盖,即判断该需求功能是否被测试。
在一实施方式中,本实施例所提供的代码覆盖率检测系统中的测试平台20还用于实时对各个测试用例进行状态标记,测试用例的状态包括未被执行、执行成功、执行失败。
测试平台20在执行测试用例的测试过程中,还实时对各个测试用例进行状态标记,即实时标记各个测试用例的状态,测试用例的状态包括未被执行、执行成功和执行失败,进而可根据各个测试用例的标记状态,直观查看该测试用例是否被执行及相应的执行结果。
在一实施方式中,代码覆盖率平台40还可以对增量代码进行标记。该标记可以是在识别到增量代码时,对所识别的增量代码进行标记,该标记用于指示增量代码及其位置。或是,在该增量代码对应的测试用例被执行且执行成功时,对该增量代码进行标记,以直观显示该增量代码是否被成功测试。或是,根据测试用例不同的执行状态对相应的增量代码进行不同的标记,以不同的标记直观表示增量代码对应的测试状态,即是否被测试及其测试结果,该增量代码被成功测试即代表该增量代码被覆盖。
示例性地,可以使用开源覆盖率检测工具(如jacoco)进行插针,并产生插针后的客户端安装包,从而当执行到该代码分支对应的测试用例后,可以在设备本地存储对应执行信息,以此来确定所标记的增量代码在检测过程中执行与否。这种增量插针的方式也比原始全量插针的方式打包速度更快,提高了代码覆盖率检测效率。需要说明的是,在实际应用中,也可以采用其他标记工具如EMMA等进行标记,其具体标记方法或标记工具在此不做限定。
由于带有标记的增量代码所对应的测试用例在测试后,在相应地测试结果中会包含有相应标记结果的执行信息,因此,可以根据测试结果中对应的执行信息确定对应被标记的增量代码。
在一实施方式中,如图4所示,步骤S200还具体包括如下步骤:
S210,若测试平台20中的测试用例被执行且执行成功,则确定测试用例对应的需求单所关联的增量代码被覆盖。
S220,若测试用例未被执行或执行失败,则确定测试用例对应的需求单所关联的增量代码未被覆盖。
代码覆盖率平台40在确定该增量代码是否被覆盖是根据该增量代码对应的需求单所关联的测试用例的执行状态所确定。
若测试平台20中的测试用例被执行且执行成功时,说明该测试用例对应的需求单的需求功能被成功测试,即可确定该需求单所关联的增量代码被覆盖。
若测试用例未被执行或执行失败,则说明该测试用例对应的需求单的需求功能未被成功测试,即可确定该需求单所关联的增量代码未被覆盖。
在一实施方式中,在步骤S220之后,本实施例所提供的代码覆盖率检测系统中的测试平台20还用于执行下述步骤:
若测试用例未被执行,重新执行测试用例;若测试用例执行失败,根据测试用例对应的需求单,修改测试用例,并执行修改后的测试用例,直至代码覆盖率平台40根据执行结果确定测试用例对应的需求单所关联的增量代码被覆盖。
具体地,若测试用例未被执行,该测试平台20则重新执行该测试用例,并经由代码覆盖率平台40根据执行结果判断是否需要对该测试用例进行修改或重新执行。
若测试用例执行失败,测试平台20则根据该测试用例所关联的需求单中的需求功能,修改该测试用例,并执行修改后的测试用例,并经由代码覆盖率平台40根据此次执行结果判断是否需要对该测试用例进行修改或重新执行,直至代码覆盖率平台40根据执行结果确定测试用例对应的需求单所关联的增量代码被覆盖。
在一实施方式中,如图5所示,代码覆盖率平台40还用于执行下述步骤:
S300,接收用户触发的覆盖率分析指令,并响应覆盖率分析指令以展示覆盖率分析框,覆盖率分析框包括未覆盖原因类型下拉选择项和未覆盖原因填写框,未覆盖原因类型下拉选择项包括可供用户选择的常见的多种未覆盖原因。
代码覆盖率平台40可实时显示未覆盖代码,若用户需要对增量代码的覆盖率进行分析时,触发并生成相应的覆盖率分析指令,而后代码覆盖率平台40在接收到该覆盖率分析指令,响应该覆盖率分析指令,展示对应的覆盖率分析框。其中,该覆盖率分析框包括但不限于未覆盖原因类型下拉选择项和未覆盖原因填写框,未覆盖原因类型下拉选择项包括但不限于可供用户选择的常见的多种未覆盖原因,其覆盖率分析框和未覆盖原因类型下拉选择项所包含的具体内容可根据实际情况进行设置,在此不做限定。其中,该未覆盖原因类型可以有多种,例如,传参错误、由于测试次数不足导致测试不充分、无效代码等等情况。
在代码覆盖率平台40实时显示未覆盖代码之后,用户可对未覆盖代码进行分析,从而在未覆盖原因类型下拉选择项选择合适的未覆盖原因或在未覆盖原因填写框中其他未覆盖原因或覆盖率分析内容。
而后,用户可将该未覆盖原因类型下拉选择项选择的目标未覆盖原因类型以及在未覆盖原因填写框所填写的覆盖率分析内容进行关联提交。因此,用户可针对某个维度的代码覆盖率,点击分析,然后填写覆盖率低的原因。
S400,接收用户关联提交的在未覆盖原因类型下拉选择项选择的目标未覆盖原因类型以及在未覆盖原因填写框所填写的覆盖率分析内容。
接收用户关联提交的在未覆盖原因类型下拉选择项选择的目标未覆盖原因类型以及在未覆盖原因填写框所填写的覆盖率分析内容,后续代码覆盖率平台40可通过监督测试人员去分析覆盖率低的原因。本实施例可基于预先定义的未覆盖原因类型下拉选择项,快速上报原因,提高分析效率。
在本实施例中,该代码覆盖率检测系统可在增量代码没有被覆盖时,通过与该增量代码关联的需求单,在测试平台20中查找到与该需求单对应的测试用例,从而对测试用例进行修改。从而,该代码覆盖率检测系统可以细分到单一需求点,针对单一需求点,进行测试结果的全景展示和无效测试用例的修正。进一步地,在测试用例执行失败导致增量代码未覆盖之后,测试人员就可以定位该测试用例对应的需求单的需求功能,修改测试用例。进而在实现代码版本的覆盖数据收集后,在出现增量代码未被覆盖时,可快速查找对应的测试用例,并对测试用例进行修正重测,无需测试人员在全部的测试用例中对应各个代码分支查找该未被覆盖的增量代码对应的测试用例,从而节省了人力成本和时间成本,提高了处理效率。
本发明实施例通过所提供的代码覆盖率检测系统,第一方面,将各个需求单与单个代码分支、增量代码和测试用例分别进行关联,从而可根据需求单的需求功能对应的测试用例的执行结果,检测对应的增量代码是否被覆盖,提高了代码覆盖率检测效率,以及提高了检测结果的准确度;第二方面,若该增量代码未被覆盖,则可根据增量代码、需求单和测试用例之间的关联关系快速查找到对应的测试用例,对其修改后重新执行,从而无需对海量的测试用例进行梳理,以从中查找该增量代码对应的测试用例,提高处理效率,从而实现增量代码的快速覆盖,节约时间成本和人力成本;第三方面,方便后续快速定位未被覆盖原因,提高异常分析及处理效率。
实施例2
请参照图6,本发明实施例提供了一种代码覆盖率检测装置,该装置包括:
关联模块61,用于获取代码管理平台中单个代码分支中的增量代码,将所述增量代码与需求平台中各个需求单进行关联;所述单个代码分支与所述需求单预先进行关联;
检测模块62,用于根据测试平台所编写的测试用例的执行结果,检测所述增量代码是否被覆盖;所述测试用例与所述需求单预先进行关联。
上述的代码覆盖率检测装置对应于实施例1的代码覆盖率检测方法,实施例1中的任何可选项也适用于本实施例,这里不再详述。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有机器可运行指令,计算机可运行指令在被处理器调用和运行时,计算机可运行指令促使处理器运行上述实施例的代码覆盖率检测方法的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种代码覆盖率检测系统,其特征在于,包括代码管理平台、测试平台、需求平台和代码覆盖率平台;
所述需求平台用于根据所述代码管理平台中的代码版本创建多个需求单,并对所述需求单与所述代码版本中的单个代码分支进行关联;一个所述代码版本对应多个所述需求单;
所述代码覆盖率平台用于获取所述单个代码分支中的增量代码,将所述增量代码与各个所述需求单进行关联;
所述测试平台用于编写测试用例,将所述测试用例与所述需求单进行关联,并执行各所述需求单对应的测试用例;
所述代码覆盖率平台还用于根据所述测试平台的测试用例的执行结果,检测所述增量代码是否被覆盖。
2.根据权利要求1所述的代码覆盖率检测系统,其特征在于,所述根据所述测试平台的测试用例的执行结果,检测所述增量代码是否被覆盖,包括:
若所述测试平台中的测试用例被执行且执行成功,则确定所述测试用例对应的需求单所关联的增量代码被覆盖;
若所述测试用例未被执行或执行失败,则确定所述测试用例对应的需求单所关联的增量代码未被覆盖。
3.根据权利要求2所述的代码覆盖率检测系统,其特征在于,在所述确定所述测试用例对应的需求单所关联的增量代码未被覆盖之后,所述测试平台还用于:
若所述测试用例未被执行,重新执行所述测试用例;
若所述测试用例执行失败,根据所述测试用例对应的需求单,修改所述测试用例,并执行修改后的测试用例,直至所述代码覆盖率平台根据执行结果确定所述测试用例对应的需求单所关联的增量代码被覆盖。
4.根据权利要求1所述的代码覆盖率检测系统,其特征在于,所述获取所述单个代码分支中的增量代码,包括:
根据预设增量代码配置信息中的代码分支参数,在所述代码版本中检索出对应的指定代码分支;
根据所述预设增量代码配置信息中的起始时间和终止时间,从所述代码分支中获取起始时间至终止时间内最早提交和最晚提交对应的两个版本标识;
根据所述指定代码分支和两个所述版本标识,采用命令行工具进行代码变更的识别获取,得到所述指定代码分支中的增量代码。
5.根据权利要求1所述的代码覆盖率检测系统,其特征在于,所述代码覆盖率平台还用于接收用户触发的覆盖率分析指令,并响应所述覆盖率分析指令以展示覆盖率分析框,所述覆盖率分析框包括未覆盖原因类型下拉选择项和未覆盖原因填写框,所述未覆盖原因类型下拉选择项包括可供用户选择的常见的多种未覆盖原因;
所述代码覆盖率平台还用于接收所述用户关联提交的在所述未覆盖原因类型下拉选择项选择的目标未覆盖原因类型以及在未覆盖原因填写框所填写的覆盖率分析内容。
6.根据权利要求1所述的代码覆盖率检测系统,其特征在于,所述测试平台还用于实时对各个所述测试用例进行状态标记,所述测试用例的状态包括未被执行、执行成功、执行失败。
7.根据权利要求1所述的代码覆盖率检测系统,其特征在于,所述需求平台还用于对各个所述需求单进行标号,得到需求编号;将所述需求编号与所述代码版本中的单个代码分支进行关联;一个所述代码版本对应多个所述需求编号;
所述代码覆盖率平台还用于将所述增量代码与各个所述需求编号进行关联;
所述测试平台用于将所述测试用例与所述需求编号进行关联,并执行各所述需求编号对应的测试用例。
8.一种代码覆盖率检测方法,其特征在于,用于代码覆盖率平台,该方法包括:
获取代码管理平台中单个代码分支中的增量代码,将所述增量代码与需求平台中各个需求单进行关联;所述单个代码分支与所述需求单预先进行关联;
根据测试平台所编写的测试用例的执行结果,检测所述增量代码是否被覆盖;所述测试用例与所述需求单预先进行关联。
9.一种代码覆盖率检测装置,其特征在于,包括:
关联模块,用于获取代码管理平台中单个代码分支中的增量代码,将所述增量代码与需求平台中各个需求单进行关联;所述单个代码分支与所述需求单预先进行关联;
检测模块,用于根据测试平台所编写的测试用例的执行结果,检测所述增量代码是否被覆盖;所述测试用例与所述需求单预先进行关联。
10.一种计算机存储介质,其特征在于,其存储有计算机程序,所述计算机程序被执行时,实施根据权利要求8所述的代码覆盖率检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211328336.1A CN115563008A (zh) | 2022-10-26 | 2022-10-26 | 代码覆盖率检测系统、方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211328336.1A CN115563008A (zh) | 2022-10-26 | 2022-10-26 | 代码覆盖率检测系统、方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115563008A true CN115563008A (zh) | 2023-01-03 |
Family
ID=84768246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211328336.1A Pending CN115563008A (zh) | 2022-10-26 | 2022-10-26 | 代码覆盖率检测系统、方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115563008A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112398A (zh) * | 2023-07-11 | 2023-11-24 | 贝壳找房(北京)科技有限公司 | 增量代码覆盖率检测方法、装置、电子设备及存储介质 |
-
2022
- 2022-10-26 CN CN202211328336.1A patent/CN115563008A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112398A (zh) * | 2023-07-11 | 2023-11-24 | 贝壳找房(北京)科技有限公司 | 增量代码覆盖率检测方法、装置、电子设备及存储介质 |
CN117112398B (zh) * | 2023-07-11 | 2024-04-16 | 贝壳找房(北京)科技有限公司 | 增量代码覆盖率检测方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2815319B1 (en) | Code coverage rate determination method and system | |
CN111756575B (zh) | 存储服务器的性能分析方法及装置、电子设备 | |
EP3785126B1 (en) | Unit testing for changes to version control | |
CN109840194B (zh) | 一种配置文件的检测方法及系统 | |
CN109426604A (zh) | 代码开发的监控方法及设备 | |
CN112597028A (zh) | 一种用例测试结果的展示方法、装置及可读存储介质 | |
CN110362479B (zh) | 系统升级测试方法和系统 | |
CN104021072A (zh) | 用于评估失效的软件程序的机器和方法 | |
EP3131041A1 (en) | Testing of enterprise resource planning systems | |
CN115563008A (zh) | 代码覆盖率检测系统、方法、装置和存储介质 | |
US20160314061A1 (en) | Software Defect Detection Identifying Location of Diverging Paths | |
Stricker et al. | Avoiding redundant testing in application engineering | |
CN112882957B (zh) | 一种测试任务有效性检查方法和装置 | |
CN111831554B (zh) | 一种代码检查方法及装置 | |
CN110688173B (zh) | 一种跨平台界面框架中组件的定位方法、装置及电子设备 | |
CN111124894B (zh) | 代码覆盖率的处理方法、装置和计算机设备 | |
CN113868137A (zh) | 埋点数据的处理方法、装置、系统和服务器 | |
CN116932360A (zh) | 一种页面测试方法、装置、计算机设备和存储介质 | |
CN115203300A (zh) | 一种数据验证方法及装置 | |
CN113577775A (zh) | 美术资源文件的检查方法及装置、电子设备、存储介质 | |
Langer et al. | A benchmark for conflict detection components of model versioning systems | |
JP4253056B2 (ja) | テスト装置、テストケース評価装置、およびテスト結果解析装置 | |
CN112612882B (zh) | 检阅报告生成方法、装置、设备和存储介质 | |
CN116340187B (zh) | 规则引擎迁移测试方法、装置、电子设备及存储介质 | |
CN115658551B (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 |