掌桥专利:专业的专利平台
掌桥专利
首页

一种代码测试的方法、装置、设备及存储介质

文献发布时间:2023-06-19 18:29:06


一种代码测试的方法、装置、设备及存储介质

技术领域

本申请涉及软件开发领域,更具体的说,是涉及一种代码测试的方法、装置、设备及存储介质。

背景技术

随着软件技术的不断发展,软件开发受到众多信息技术企业重点关注,使得软件开发正在蓬勃发展。软件开发的开发代码为开发人员根据功能编写的,可能存在运行覆盖不到的代码,若不及时发现将这些运行覆盖不到的代码排除,会对后续代码开发埋下隐患,因此在软件开发的过程中,开发人员需要对开发代码进行测试,以保障开发代码的有效性。

然而,由于开发代码的代码量过于庞大,当调试出开发代码存在运行覆盖不到的代码时,难以对这些运行覆盖不到的代码进行定位,导致前端测试效率低下。

发明内容

鉴于上述问题,提出了本申请以便提供一种代码测试的方法、装置、设备及存储介质。

为了实现上述目的,现提出具体方案如下:

一种代码测试的方法,包括:

接收客户端的代码测试指令;

响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置;

将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率;

若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。

可选的,该方法还包括:

获取所述代码集合插入至代码数据库的插入位置;

在响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,还包括:

按照运行代码的顺序,将每一第二目标代码行组合,得到待插入代码集合;

将所述待插入代码集合插入至所述代码数据库的所述插入位置。

可选的,该方法还包括:

获取所述代码集合在代码数据库中更新的更新位置;

在响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,还包括:

按照运行代码的顺序,将每一第二目标代码行组合,得到待更新代码集合;

在所述代码数据库的所述更新位置中更新所述待更新代码集合。

可选的,接收所述前端上报的包含多行代码行的代码集合的过程,包括:

接收所述前端上报的特定框架代码数据,所述特定框架代码数据为与所述前端配置;

通过预设的代码框架兼容算法,将所述特定框架代码数据转换为目标框架下的多行代码行的代码集合。

可选的,该方法还包括:

若所述第一目标代码行的数量等于0,向所述客户端返回所述代码集合的差异覆盖率,所述差异覆盖率为100%。

一种代码测试的装置,包括:

测试指令接收单元,用于接收客户端的代码测试指令;

代码集合运行单元,用于响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置;

差异覆盖率确定单元,用于将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率;

差异覆盖反馈单元,用于若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。

可选的,该装置还包括:

插入位置获取单元,用于获取所述代码集合插入至代码数据库的插入位置;

插入代码集合生成单元,用于在所述代码集合运行单元响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,按照运行代码的顺序,将每一第二目标代码行组合,得到待插入代码集合;

代码插入单元,用于将所述待插入代码集合插入至所述代码数据库的所述插入位置。

可选的,该装置还包括:

更新位置获取单元,用于获取所述代码集合插入至代码数据库的插入位置;

更新代码集合生成单元,用于在所述代码集合运行单元响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,按照运行代码的顺序,将每一第二目标代码行组合,得到待更新代码集合;

代码更新单元,用于在所述代码数据库的所述更新位置中更新所述待更新代码集合。

可选的,该装置还包括:

特定代码接收单元,用于接收所述前端上报的特定框架代码数据,所述特定框架代码数据的数据格式为与所述前端所配置的数据格式;

数据框架转换单元,用于通过预设的代码框架兼容算法,将所述特定框架代码数据转换为目标框架下的多行代码行的代码集合。

可选的,该装置还包括:

全差异覆盖率反馈单元,用于若所述第一目标代码行的数量等于0,向所述客户端返回所述代码集合的差异覆盖率,所述差异覆盖率为100%。

一种代码测试的设备,包括存储器和处理器;

所述存储器,用于存储程序;

所述处理器,用于执行所述程序,实现如上所述的代码测试的方法的各个步骤。

一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上所述的代码测试的方法的各个步骤。

借由上述技术方案,本申请通过接收客户端的代码测试指令,响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的第一目标代码行,以及运行成功的第二目标代码行,以及每一第一目标代码行的位置,将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率,若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。由此可见,通过对前端上报的代码集合进行监控,并在调试时能够统计出差异覆盖率,且当存在未能运行成功的代码时,能够对其快速定位,以便开发人员及时追踪代码的问题,以提升前端测试效率。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本申请实施例提供的一种代码测试的流程示意图;

图2为本申请实施例提供的一种代码测试的装置结构示意图;

图3为本申请实施例提供的一种代码测试的设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请方案可以基于具备数据处理能力的终端实现,该终端可以是应用于后端服务的电脑、服务器、云端等。

接下来,结合图1所述,本申请的代码测试的方法可以包括以下步骤:

步骤S110、接收客户端的代码测试指令。

可以理解的是,后端服务在测试所开发的代码时,需要客户端一方发起测试指令,因此需要接收客户端的代码测试指令,以触发开发代码的测试工作。

具体的,客户端的代码测试指令可以是客户端用户在客户端的界面进行触控操作而生成的。

示例如,后端服务所需测试的开发代码实现的功能为注册账号,那么用户能够在客户端的界面上进行注册账号,并最终点击“提交注册”控件,生成包含用户注册信息的代码测试指令,后端服务则接收到包含用户注册信息的代码测试指令,以测试开发代码。

步骤S120、响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置。

具体的,所述代码测试指令可以表示触发后端服务运行开发代码的指令,客户端可以通过所述代码集合所实现的功能生成代码测试指令。

可以理解的是,所述代码集合所包含的代码行的规模随着所实现功能的复杂程度增大而增多,所述代码集合所包含的代码行越多,存在不被运行覆盖到的代码行的可能性越大,且不被运行覆盖到的代码行越多,因此需要通过运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,并对未能运行成功的代码行进行定位,以供开发人员在庞大的代码集合中定位每一第一目标代码行。

步骤S130、将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率。

具体的,所述差异覆盖率可以表示开发人员所开发的代码集合中,能够有效被运行到的代码所占的比例。

示例如,开发人员针对某功能所开发的代码集合包含了10000行代码行,在接收到代码测试指令后,运行这10000行代码行构成的代码集合,得到运行成功的9000行代码行,那么该代码集合的差异覆盖率为9000/10000=90%。

步骤S140、若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。

可以理解的是,当未能运行成功的代码行的数量大于0时,表明所述代码集合中存在未被运行成功的代码行,那么在向客户端返回差异覆盖率(<100%)的同时,还需要返回未被运行成功的每一代码行的位置,以供开发人员能够在庞大的代码集合中快速定位每一第一目标代码行。

本实施例提供的代码测试的方法,通过接收客户端的代码测试指令,响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的第一目标代码行,以及运行成功的第二目标代码行,以及每一第一目标代码行的位置,将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率,若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。由此可见,通过对前端上报的代码集合进行监控,并在调试时能够统计出差异覆盖率,且当存在未能运行成功的代码时,能够对其快速定位,以便开发人员及时追踪代码的问题,以提升前端测试效率。

考虑到开发人员所测试的代码集合为需要插入至代码数据库,以增加原开发软件中的某些功能,在本申请的一些实施例中,可以进一步增加将代码集合插入至代码数据库的过程,具体的,该过程可以包括:

S1、获取所述代码集合插入至代码数据库的插入位置。

具体的,当所述代码集合为需要插入至代码数据库的代码集合时,后端服务在获取的代码集合时,还可以获取该代码集合待插入至代码数据库的插入位置,从而确定所述代码集合在代码数据库中的位置。

S2、在响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,按照运行代码的顺序,将每一第二目标代码行组合,得到待插入代码集合。

可以理解的是,所述代码集合中可能包含未能运行成功的代码行,这些未能运行成功的代码行在代码数据库中会对后续代码开发埋下隐患,因此这些未能运行成功的代码行不能加入至代码数据库,剩下的代码行则为运行成功的代码行,所有第二目标代码行则可以按照原顺序(即运行代码的顺序)重新组合,得到待插入代码集合。

其中,运行代码的顺序可以参考每一第二目标代码行在所述代码集合的位置。

S3、将所述待插入代码集合插入至所述代码数据库的所述插入位置。

具体的,所述待插入代码集合中仅包含运行成功的代码行,因此按照所述插入位置将该待插入代码集合插入至所述代码数据库中,能够有效避免后续代码开发的隐患,使得代码数据库的代码有效性更高,更有效地运行新插入的所述待插入代码集合所对应的功能。

本实施例提供的代码测试的方法,通过确定所述代码集合插入至代码数据库的插入位置,并对所述代码集合中的未能运行成功的代码行进行过滤,得到仅包含运行成功的代码行所构成的待插入代码集合,使得插入待插入代码集合后的代码数据库有效避免后续代码开发的隐患,以保障开发代码的有效性。

考虑到开发人员所测试的代码集合为需要在更新代码数据库中的某些片段,以更新原开发软件中的某些功能,在本申请的一些实施例中,可以进一步增加将代码集合更新至代码数据库的过程,具体的,该过程可以包括:

S1、获取所述代码集合在代码数据库中更新的更新位置。

具体的,当所述代码集合为需要更新至代码数据库的代码集合时,后端服务在获取的代码集合时,还可以获取该代码集合待更新至代码数据库的更新位置,从而确定所述代码集合在代码数据库中的位置。

S2、在响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,按照运行代码的顺序,将每一第二目标代码行组合,得到待更新代码集合。

可以理解的是,所述代码集合中可能包含未能运行成功的代码行,这些未能运行成功的代码行在代码数据库中会对后续代码开发埋下隐患,因此这些未能运行成功的代码行不能加入至代码数据库,剩下的代码行则为运行成功的代码行,所有第二目标代码行则可以按照原顺序(即运行代码的顺序)重新组合,得到待更新代码集合。

其中,运行代码的顺序可以参考每一第二目标代码行在所述代码集合的位置。

S3、在所述代码数据库的所述更新位置中更新所述待更新代码集合。

具体的,所述待插入代码集合中仅包含运行成功的代码行,因此按照所述更新位置将该待更新代码集合更新至所述代码数据库中,能够有效避免后续代码开发的隐患,使得代码数据库的代码有效性更高,更有效地运行更新后的所述待更新代码集合所对应的功能。

本实施例提供的代码测试的方法,通过确定所述代码集合更新至代码数据库的更新位置,并对所述代码集合中的未能运行成功的代码行进行过滤,得到仅包含运行成功的代码行所构成的待更新代码集合,使得代码数据库在待更新代码集合的更新后,能够有效避免后续代码开发的隐患,以保障开发代码的有效性。

本申请的一些实施例中,对接收上述实施例提到的、前端上报的包含多行代码行的代码集合的过程进行介绍,该过程可以包括:

S1、接收所述前端上报的特定框架代码数据,所述特定框架代码数据的数据格式为与所述前端所配置的数据格式。

可以理解的是,后端服务可以接收多个前端上报的特定框架代码数据,不同前端上报的特定框架代码数据不同,如pc前端的特定框架代码数据为vue框架代码数据,h5前端的特定框架代码数据为react框架代码数据。

S2、通过预设的代码框架兼容算法,将所述特定框架代码数据转换为目标框架下的多行代码行的代码集合。

可以理解的是,代码数据库不接受多种不同框架的代码,因此需要通过预设的代码框架兼容算法,将不同的特定框架代码数据均转换为目标框架下的代码。

具体的,预设的代码框架兼容算法为融合了多种特定框架格式转换为目标框架格式的算法。

本实施例提供的代码测试的方法,通过预设的代码框架兼容算法,将多种不同特定框架代码数据转换为目标框架下的多行代码行的代码集合,使得代码数据库能够接受目标框架下的代码。

考虑到开发代码中可能不存在未能运行成功的代码,则不需要向客户端反馈未能运行成功的代码的详细信息,本申请的一些实施例中,所提及到的代码测试的方法还可以包括:

若所述第一目标代码行的数量等于0,向所述客户端返回所述代码集合的差异覆盖率,所述差异覆盖率为100%。

可以理解的是,当所述代码集合中不存在未能运行成功的代码时,仅需向客户端返回差异覆盖率信息,且通过差异覆盖率的计算方式可知,运行成功的代码占所述代码集合的比例为100%,也即差异覆盖率为100%。

下面对本申请实施例提供的实现代码测试的装置进行描述,下文描述的实现代码测试的装置与上文描述的实现代码测试的方法可相互对应参照。

参见图2,图2为本申请实施例公开的一种实现代码测试的装置结构示意图。

如图2所示,该装置可以包括:

测试指令接收单元11,用于接收客户端的代码测试指令;

代码集合运行单元12,用于响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置;

差异覆盖率确定单元13,用于将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率;

差异覆盖反馈单元14,用于若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。

可选的,该装置还包括:

插入位置获取单元,用于获取所述代码集合插入至代码数据库的插入位置;

插入代码集合生成单元,用于在所述代码集合运行单元响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,按照运行代码的顺序,将每一第二目标代码行组合,得到待插入代码集合;

代码插入单元,用于将所述待插入代码集合插入至所述代码数据库的所述插入位置。

可选的,该装置还包括:

更新位置获取单元,用于获取所述代码集合插入至代码数据库的插入位置;

更新代码集合生成单元,用于在所述代码集合运行单元响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置之后,按照运行代码的顺序,将每一第二目标代码行组合,得到待更新代码集合;

代码更新单元,用于在所述代码数据库的所述更新位置中更新所述待更新代码集合。

可选的,该装置还包括:

特定代码接收单元,用于接收所述前端上报的特定框架代码数据,所述特定框架代码数据的数据格式为与所述前端所配置的数据格式;

数据框架转换单元,用于通过预设的代码框架兼容算法,将所述特定框架代码数据转换为目标框架下的多行代码行的代码集合。

可选的,该装置还包括:

全差异覆盖率反馈单元,用于若所述第一目标代码行的数量等于0,向所述客户端返回所述代码集合的差异覆盖率,所述差异覆盖率为100%。

本申请实施例提供的代码测试的装置可应用于代码测试的设备,如终端:手机、电脑等。可选的,图3示出了代码测试的设备的硬件结构框图,参照图3,代码测试的设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;

在本申请实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;

处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;

存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器;

其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:

接收客户端的代码测试指令;

响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置;

将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率;

若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。

可选的,所述程序的细化功能和扩展功能可参照上文描述。

本申请实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:

接收客户端的代码测试指令;

响应所述代码测试指令,运行前端上报的包含多行代码行的代码集合,确定未能运行成功的代码行为第一目标代码行,以及运行成功的代码行为第二目标代码行,以及每一第一目标代码行的位置;

将各行第二目标代码行在所述代码集合中所占的比例,作为所述代码集合的差异覆盖率;

若所述第一目标代码行的数量大于0,向所述客户端返回所述代码集合的差异覆盖率,以及每一第一目标代码行的位置。

可选的,所述程序的细化功能和扩展功能可参照上文描述。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术分类

06120115585138