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

自动化单元测试代码生成方法、装置、设备及存储介质

文献发布时间:2024-04-18 19:58:53


自动化单元测试代码生成方法、装置、设备及存储介质

技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种自动化单元测试代码生成方法、装置、设备及存储介质。

背景技术

在代码测试过程中,包括代码的单元测试。其中,单元测试是指对软件系统的最小可测试单元进行测试,通常是一个函数或一个功能模块。单元测试的目的是验证代码的正确性和可靠性,以及是否符合预期的行为和输出结果。在进行单元测试时,需要先编写测试用例来覆盖不同的情况,例如正常情况、异常情况和边界情况等。之后,使用单元测试框架进行测试,测试结果会得到反馈并给出错误信息,便于开发人员进行问题排查和修复。

相关技术中,在进行代码的单元测试时,需要开发者手动编写测试用例,效率较低,容易出现人为错误。

发明内容

本申请实施例提供了一种自动化单元测试代码生成方法、装置、设备及存储介质,可以大幅提高单元测试代码的生成效率和准确性,减少人为错误,提高代码质量和可靠性。

第一方面,本申请实施例提供了一种自动化单元测试代码生成方法,该方法包括:

获取历史单元测试代码以及设置的测试需求模板,所述测试需求模板包括测试内容项,对所述历史单元测试代码进行向量化处理得到单元测试向量;

获取待测试项目的项目目录,遍历所述项目目录下的代码文件;

根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。

可选的,所述对所述历史单元测试代码进行向量化处理得到单元测试向量,包括:

对所述单元测试代码进行代码成分提取得到代码成分数据;

通过设置的向量化模型对所述代码成分数据进行向量化处理得到单元测试向量。

可选的,所述根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码,包括:

根据所述代码文件、所述测试需求模板以及所述单元测试向量分别生成多个描述文件;

将每个所述描述文件分别输入至训练完成的代码生成模型输出对应的测试代码以生成单元测试代码。

可选的,所述根据所述代码文件、所述测试需求模板以及所述单元测试向量分别生成多个描述文件,包括:

根据所述代码文件以及所述测试内容项确定多个待测功能模块;

基于所述待测功能模块进行所述单元测试向量的匹配生成多个描述文件。

可选的,在所述基于所述待测功能模块进行所述单元测试向量的匹配生成多个描述文件之前,还包括:

对得到的单元测试向量进行分类以及标注处理,生成单元测试向量与功能模块的对应关系并进行存储;

所述基于所述待测功能模块进行所述单元测试向量的匹配生成多个描述文件,包括:

基于所述待测功能模块以及存储的单元测试向量与功能模块的对应关系,进行所述单元测试向量的匹配生成多个描述文件。

可选的,在所述根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码之后,还包括:

将所述单元测试代码保存至指定路径;

通过启动测试指令运行所述单元测试代码,基于所述单元测试代码的运行结果对所述单元测试代码进行调整。

可选的,所述测试需求模板还包括测试规范信息。

第二方面,本申请实施例还提供了一种自动化单元测试代码生成装置,包括:

获取模块,用于获取历史单元测试代码以及设置的测试需求模板,所述测试需求模板包括测试内容项;

向量化处理模块,用于对所述历史单元测试代码进行向量化处理得到单元测试向量;

遍历模块,用于获取待测试项目的项目目录,遍历所述项目目录下的代码文件;

生成模块,用于根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。

第三方面,本申请实施例还提供了一种电子设备,该设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请实施例所述的自动化单元测试代码生成方法。

第四方面,本申请实施例还提供了一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本申请实施例所述的自动化单元测试代码生成方法。

第五方面,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,设备的至少一个处理器从计算机可读存储介质读取并执行计算机程序,使得设备执行本申请实施例所述的自动化单元测试代码生成方法。

本申请实施例中,通过获取历史单元测试代码以及设置的测试需求模板,测试需求模板包括测试内容项,对历史单元测试代码进行向量化处理得到单元测试向量,获取待测试项目的项目目录,遍历项目目录下的代码文件,根据代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。本方案可以大幅提高单元测试代码的生成效率和准确性,减少人为错误,提高代码质量和可靠性。

附图说明

图1为本申请实施例提供的一种自动化单元测试代码生成方法的流程图;

图2为本申请实施例提供的另一种自动化单元测试代码生成方法的流程图;

图3为本申请实施例提供的另一种自动化单元测试代码生成方法的流程图;

图4为本申请实施例提供的另一种自动化单元测试代码生成方法的流程图;

图5为本申请实施例提供的一种自动化单元测试代码生成装置的结构框图;

图6为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本申请实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请实施例,而非对本申请实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请实施例相关的部分而非全部结构。

本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。

本申请实施例提供的自动化单元测试代码生成方法,可由计算设备如智能手机、平板电脑、笔记本电脑、台式机等执行。

图1为本申请实施例提供的一种自动化单元测试代码生成方法的流程图,如图1所示,具体包括如下步骤:

步骤S101、获取历史单元测试代码以及设置的测试需求模板,所述测试需求模板包括测试内容项,对所述历史单元测试代码进行向量化处理得到单元测试向量。

其中,历史单元测试代码为历史生成的进行代码测试的单元测试代码。该历史单元测试代码可选的可以是开发人员手动编写的代码,为已经实现的测试代码。在该历史单元测试代码的获取过程中,示例性的,可以是:使用本地Loader(DirectoryLoader)获取已实现单元测试代码,加载已实现的单元测试代码文件如以.test.js结尾的文件。

其中,测试需求模板可以是开发人员设置的模板文件,用于自动生成单元测试代码。可选的,该测试需求模板包括测试内容项以及测试规范信息等,其中,该测试内容项表征了需要测试的功能内容。

在一个实施例中,得到历史单元测试代码后,对该历史单元测试代码进行向量化处理,以得到单元测试向量并进行存储。可选的,在进行单元测试向量的存储时,对得到的单元测试向量进行分类以及标注处理,生成单元测试向量与功能模块的对应关系并进行存储。示例性的,如对登录功能的测试的单元测试向量,标注为登录功能测试;如对注销功能的测试的单元测试向量,标注为注销功能测试;如对用户权限开通功能的测试的单元测试向量,标注为权限功能测试。即预先分类不同的功能,将不同功能对应的单元测试向量对应进行标注。同时,生成单元测试向量与功能模块的对应关系并进行存储。

其中,代码测试是软件开发中必不可少的环节,它可以有效地减少系统缺陷率和保证软件质量。常见的测试方法有单元测试、集成测试、系统测试和验收测试等。在进行代码测试前,需要制定详细的测试计划,并确定测试范围和测试目标。本实施例以单元测试为例,进行测试代码的自动化生成。其中,单元测试是指对软件系统的最小可测试单元进行测试,通常是一个函数或一个功能模块。单元测试的目的是验证代码的正确性和可靠性,以及是否符合预期的行为和输出结果。在进行单元测试时,需要先编写测试用例来覆盖不同的情况,例如正常情况、异常情况和边界情况等。接着,使用单元测试框架进行测试,如JUnit、NUnit等,测试结果会得到反馈并给出错误信息,便于开发人员进行问题排查和修复。

可选的,本方案在得到单元测试代码后,可相应的进行集成测试。其中,集成测试是指将多个单元测试集成起来进行测试。它的主要目的是验证不同模块之间的交互是否正确,以及是否符合系统要求和设计规范。在进行集成测试时,需要先定义测试方案和测试用例,并进行测试顺序和优先级的规划。通常会使用模拟工具和测试桩进行集成测试,例如Mockito等框架。

可选的,还可以包括对系统测试以及验收测试。其中,系统测试是指对整个软件系统进行测试,目的是验证系统是否满足用户需求和功能要求,以及性能、安全性和兼容性等方面的要求。在进行系统测试时,需要先制定系统测试计划和测试用例,并根据不同测试阶段进行执行。常见的系统测试包括功能测试、性能测试、可靠性测试、安全性测试等。验收测试是指由客户或最终用户进行的测试,目的是验证软件是否符合用户需求和期望,并确认软件系统可以正常运行。验收测试通常是在软件开发的最后阶段进行。在进行验收测试时,需要依照验收标准和验收程序进行测试,例如:验证系统是否满足用户需求、界面是否友好、系统是否易用、是否满足性能和可靠性等。

步骤S102、获取待测试项目的项目目录,遍历所述项目目录下的代码文件。

其中,待测试项目为需要进行单元测试的项目,即需要为该待测试项目生成单元测试代码。首先,获取该待测试项目的项目目录,对该项目目录下的代码文件进行遍历,以用于依次生成每个代码文件的单元测试文件。

步骤S103、根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。

在一个实施例中,在得到代码文件、测试需求模板以及单元测试向量后,基于该代码文件、测试需求模板以及单元测试向量自动生成单元测试代码。其中,包括:根据代码文件、测试需求模板以及单元测试向量分别生成多个描述文件;将每个描述文件分别输入至训练完成的代码生成模型输出对应的测试代码以生成单元测试代码。

由上述可知,通过获取历史单元测试代码以及设置的测试需求模板,测试需求模板包括测试内容项,对历史单元测试代码进行向量化处理得到单元测试向量,获取待测试项目的项目目录,遍历项目目录下的代码文件,根据代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。本方案可以大幅提高单元测试代码的生成效率和准确性,减少人为错误,提高代码质量和可靠性。

图2为本申请实施例提供的另一种自动化单元测试代码生成方法的流程图,给出了一种代码向量化的流程,如图2所示,具体包括:

步骤S201、获取历史单元测试代码以及设置的测试需求模板,对所述单元测试代码进行代码成分提取得到代码成分数据,通过设置的向量化模型对所述代码成分数据进行向量化处理得到单元测试向量。

在一个实施例中,进行向量化处理的过程中,首先对单元测试代码进行代码成分提取得到代码成分数据。可选的,可以通过利用代码分析工具将字节码文件转换为中间代码格式文件,进而提取代码成分得到代码成分数据。如得到多个代码基本块。在得到代码成分数据后,进行代码成分提取转换为源码,以精确编码每个代码成分的语义。可选的,通过使用设置的向量化模型对代码成分数据进行向量化处理得到单元测试向量。如使用CodeBERT模型或PLBART模型等。

步骤S202、获取待测试项目的项目目录,遍历所述项目目录下的代码文件。

步骤S203、根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。

由上述可知,通过获取历史单元测试代码以及设置的测试需求模板,测试需求模板包括测试内容项,对历史单元测试代码进行向量化处理得到单元测试向量,获取待测试项目的项目目录,遍历项目目录下的代码文件,根据代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。本方案可以大幅提高单元测试代码的生成效率和准确性,减少人为错误,提高代码质量和可靠性。

图3为本申请实施例提供的另一种自动化单元测试代码生成方法的流程图,如图3所示,具体包括:

步骤S301、获取历史单元测试代码以及设置的测试需求模板,所述测试需求模板包括测试内容项,对所述历史单元测试代码进行向量化处理得到单元测试向量。

步骤S302、获取待测试项目的项目目录,遍历所述项目目录下的代码文件。

步骤S303、根据所述代码文件以及所述测试内容项确定多个待测功能模块,基于所述待测功能模块进行所述单元测试向量的匹配生成多个描述文件。

在一个实施例中,对得到的单元测试向量进行分类以及标注处理,生成单元测试向量与功能模块的对应关系并进行存储。此处,相应的基于所述待测功能模块以及存储的单元测试向量与功能模块的对应关系,进行所述单元测试向量的匹配生成多个描述文件。其中,向量化的单元测试向量用于描述将要生成的代码的所有模块、输入、输出、参数、状态等模型的全部配置和属性信息,其作为代码生成模型的输入,以输出相应的最终可执行的单元测试代码。其中,该代码生成模型可以是现有技术中的成熟的AI模型。

其中,AI模型是指运用数学、统计、计算机科学和机器学习等领域的方法,对具有一定规律性和可预测性的数据进行分析、处理、预测和优化的数学模型。与传统的数学模型相比,AI模型具有更加强大、高效、灵活的特点。因此,在现代数学和计算机技术的支持下,AI模型被广泛应用于各种领域。可选的,使用的AI模型可以是有监督学习模型和无监督学习模型。有监督学习模型是一种通过对有标记(标注)数据的学习,来预测新的未标记数据的类型或属性的模型。常见的有监督学习模型包括决策树、支持向量机、神经网络等。无监督学习模型则是一种通过对未标记数据的学习,来发现其中的规律、关系和结构的模型。常见的无监督学习模型包括聚类、关联规则、主成分分析等。可选的,除了有监督学习模型和无监督学习模型外,还可采用其他类型的AI模型,例如半监督学习模型、强化学习模型、深度学习模型等。

步骤S304、将每个所述描述文件分别输入至训练完成的代码生成模型输出对应的测试代码以生成单元测试代码。

由上述可知,通过获取历史单元测试代码以及设置的测试需求模板,测试需求模板包括测试内容项,对历史单元测试代码进行向量化处理得到单元测试向量,获取待测试项目的项目目录,遍历项目目录下的代码文件,根据代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。本方案可以大幅提高单元测试代码的生成效率和准确性,减少人为错误,提高代码质量和可靠性。

图4为本申请实施例提供的另一种自动化单元测试代码生成方法的流程图,如图4所示,具体包括:

步骤S401、获取历史单元测试代码以及设置的测试需求模板,所述测试需求模板包括测试内容项,对所述历史单元测试代码进行向量化处理得到单元测试向量。

步骤S402、获取待测试项目的项目目录,遍历所述项目目录下的代码文件。

步骤S403、根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。

步骤S404、将所述单元测试代码保存至指定路径,通过启动测试指令运行所述单元测试代码,基于所述单元测试代码的运行结果对所述单元测试代码进行调整。

在一个实施例中,可通过启动npm test指令进行效果验证和微调。通过执行npmtest指令,对生成的单元测试代码进行效果验证和微调,确保其正确性和可靠性。

由上述可知,通过获取历史单元测试代码以及设置的测试需求模板,测试需求模板包括测试内容项,对历史单元测试代码进行向量化处理得到单元测试向量,获取待测试项目的项目目录,遍历项目目录下的代码文件,根据代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。本方案可以大幅提高单元测试代码的生成效率和准确性,减少人为错误,提高代码质量和可靠性。

图5为本申请实施例提供的一种自动化单元测试代码生成装置的结构框图,如图5所示,该装置用于执行上述实施例提供的自动化单元测试代码生成方法,具备执行方法相应的功能模块和有益效果。如图4所示,包括获取模块101、向量化处理模块102、遍历模块103以及生成模块104,其中,

获取模块,用于获取历史单元测试代码以及设置的测试需求模板,所述测试需求模板包括测试内容项;

向量化处理模块,用于对所述历史单元测试代码进行向量化处理得到单元测试向量;

遍历模块,用于获取待测试项目的项目目录,遍历所述项目目录下的代码文件;

生成模块,用于根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。

由上述可知,通过获取历史单元测试代码以及设置的测试需求模板,测试需求模板包括测试内容项,对历史单元测试代码进行向量化处理得到单元测试向量,获取待测试项目的项目目录,遍历项目目录下的代码文件,根据代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。本方案可以大幅提高单元测试代码的生成效率和准确性,减少人为错误,提高代码质量和可靠性。其中,各个模块执行的功能可选的对应如下:

在一个可能的实施例中,所述对所述历史单元测试代码进行向量化处理得到单元测试向量,包括:

对所述单元测试代码进行代码成分提取得到代码成分数据;

通过设置的向量化模型对所述代码成分数据进行向量化处理得到单元测试向量。

在一个可能的实施例中,所述根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码,包括:

根据所述代码文件、所述测试需求模板以及所述单元测试向量分别生成多个描述文件;

将每个所述描述文件分别输入至训练完成的代码生成模型输出对应的测试代码以生成单元测试代码。

在一个可能的实施例中,所述根据所述代码文件、所述测试需求模板以及所述单元测试向量分别生成多个描述文件,包括:

根据所述代码文件以及所述测试内容项确定多个待测功能模块;

基于所述待测功能模块进行所述单元测试向量的匹配生成多个描述文件。

在一个可能的实施例中,在所述基于所述待测功能模块进行所述单元测试向量的匹配生成多个描述文件之前,还包括:

对得到的单元测试向量进行分类以及标注处理,生成单元测试向量与功能模块的对应关系并进行存储;

所述基于所述待测功能模块进行所述单元测试向量的匹配生成多个描述文件,包括:

基于所述待测功能模块以及存储的单元测试向量与功能模块的对应关系,进行所述单元测试向量的匹配生成多个描述文件。

在一个可能的实施例中,在所述根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码之后,还包括:

将所述单元测试代码保存至指定路径;

通过启动测试指令运行所述单元测试代码,基于所述单元测试代码的运行结果对所述单元测试代码进行调整。

在一个可能的实施例中,所述测试需求模板还包括测试规范信息。

图6为本申请实施例提供的一种电子设备的结构示意图,如图6所示,该设备包括处理器201、存储器202、输入装置203和输出装置204;设备中处理器201的数量可以是一个或多个,图6中以一个处理器201为例;设备中的处理器201、存储器202、输入装置203和输出装置204可以通过总线或其他方式连接,图6中以通过总线连接为例。存储器202作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的自动化单元测试代码生成方法对应的程序指令/模块。处理器201通过运行存储在存储器202中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的自动化单元测试代码生成方法。输入装置703可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置204可包括显示屏等显示设备。

本申请实施例还提供一种包含计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种上述实施例描述的自动化单元测试代码生成方法,其中,包括:

获取历史单元测试代码以及设置的测试需求模板,所述测试需求模板包括测试内容项,对所述历史单元测试代码进行向量化处理得到单元测试向量;

获取待测试项目的项目目录,遍历所述项目目录下的代码文件;

根据所述代码文件、所述测试需求模板以及所述单元测试向量自动生成单元测试代码。

值得注意的是,上述自动化单元测试代码生成装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。

在一些可能的实施方式中,本申请提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行本申请实施例所记载的自动化单元测试代码生成方法。所述程序产品可以采用一个或多个可读介质的任意组合实现。

相关技术
  • 报文预定义代码生成方法、装置、电子设备和存储介质
  • 一种自动化编译安装方法、装置、设备及存储介质
  • 自动化测试软件的方法及装置、服务器、设备和存储介质
  • 一种自动化压力测试方法及装置、计算设备及存储介质
  • 服务自动化部署方法、装置、电子设备及存储介质
  • 单元测试代码生成方法和装置、电子设备、存储介质
  • 单元测试代码生成方法、装置、设备、介质
技术分类

06120116508437