CN116991711A - 一种测试用例的生成方法、装置、终端设备及存储介质 - Google Patents
一种测试用例的生成方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN116991711A CN116991711A CN202310843515.7A CN202310843515A CN116991711A CN 116991711 A CN116991711 A CN 116991711A CN 202310843515 A CN202310843515 A CN 202310843515A CN 116991711 A CN116991711 A CN 116991711A
- Authority
- CN
- China
- Prior art keywords
- target
- test case
- code
- sample
- language model
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 329
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000004458 analytical method Methods 0.000 claims abstract description 66
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000012549 training Methods 0.000 claims description 43
- 238000013507 mapping Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 20
- 238000005457 optimization Methods 0.000 claims description 18
- 238000003062 neural network model Methods 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 238000013522 software testing Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000004140 cleaning Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 2
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/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/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Biophysics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请适用于软件测试技术领域,提供了一种测试用例的生成方法、装置、终端设备及存储介质。方法包括:获取用于生成测试用例的目标代码;将目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例;对目标测试用例进行覆盖率分析处理,得到覆盖率分析结果;根据覆盖率分析结果,对目标测试用例进行调整;输出调整后的目标测试用例。本申请的测试用例的生成方法可以通过目标超大规模语言模型生成目标测试用例,由于超大规模语言模型具有强大的语音理解能力,因此超大规模语言模型能够结合代码中包含的程序员的意图以及代码的上下文信息来生成测试用例,进而能够提高生成的测试用例的质量。
Description
技术领域
本申请属于软件测试技术领域,尤其涉及一种测试用例的生成方法、装置、终端设备及存储介质。
背景技术
在软件开发的过程中,需要通过测试用例对软件进行测试。目前,通常的测试用例的自动生成方法包括静态分析方法、动态分析方法以及模型检查方法,但以上三种测试用例的自动生成方法都无法结合代码中包含的程序员的意图以及代码的上下文信息来生成测试用例,这会导致现有的测试用例的自动生成方法生成的测试用例的质量较低。
发明内容
有鉴于此,本申请实施例提供了一种测试用例的生成方法、装置、终端设备及存储介质,以解决现有的自动生成测试用例的质量较低的技术问题。
第一方面,本申请实施例提供一种测试用例的生成方法,包括:
获取用于生成测试用例的目标代码;
将所述目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例;其中,所述目标超大规模语言模型为通过样本数据训练获得的神经网络模型,所述样本数据包含样本代码和所述样本代码对应的样本测试用例;
对所述目标测试用例进行覆盖率分析处理,得到覆盖率分析结果;
根据所述覆盖率分析结果,对所述目标测试用例进行调整;
输出调整后的所述目标测试用例。
可选的,所述目标超大规模语言模型通过以下方式训练获得:
获取预训练的初始超大规模语言模型;
识别并标记所述样本数据中包含的所述样本代码和所述样本测试用例之间的映射关系;
根据所述样本数据扩充所述初始超大规模语言模型的词表;
利用识别并标记所述映射关系后的所述样本数据,对所述初始超大规模语言模型进行优化训练,并将优化训练后的所述初始超大规模语言模型确定为所述目标超大规模语言模型。
可选的,所述利用识别并标记所述映射关系后的所述样本数据,对所述初始超大规模语言模型进行优化训练,包括:
针对识别并标记所述映射关系后的所述样本数据中的每个代码测试用例对,根据所述代码测试用例对包含的样本代码和样本测试用例之间的正确性和相关性,确定所述代码测试用例对的评分;其中,每个所述代码测试用例对包含所述样本数据中的一个样本代码及其对应的一个样本测试用例;
将各个所述代码测试用例对按照所述评分由高至低的顺序排序,得到排序列表;
利用所述排序列表中包含的排序靠前的设定数量的所述代码测试用例对,对所述初始超大规模语言模型进行优化训练。
可选的,在所述识别并标记所述样本数据中包含的所述样本代码和所述样本测试用例之间的映射关系之前,还包括:
剔除所述样本代码中的无效代码段和错误代码段;
对所述样本代码中的指定字符进行转义处理。
可选的,所述对所述目标测试用例进行覆盖率分析处理,得到覆盖率分析结果,包括:
通过所述目标测试用例对所述目标代码进行测试,得到代码测试结果;
根据所述代码测试结果,确定所述目标代码中所有未被执行的代码段的路径,从而得到所述覆盖率分析结果。
可选的,所述根据所述覆盖率分析结果,对所述目标测试用例进行调整,包括:
将所述所有未被执行的代码段的路径转换为机器可理解的描述文本;
将所述描述文本添加至所述样本数据中;
利用添加所述描述文本后的所述样本数据,对所述目标超大规模语言模型进行再训练,得到再训练后的所述目标超大规模语言模型;
将所述目标代码输入至再训练后的所述目标超大规模语言模型进行处理,得到调整后的所述目标测试用例。
可选的,所述输出调整后的所述目标测试用例,包括:
获取模糊测试代码片段;
将所述模糊测试代码片段插入所述目标代码,并通过所述目标测试用例对插入所述模糊测试代码片段后的所述目标代码进行测试,得到所述目标测试用例的模糊测试结果;
生成针对所述目标测试用例的解释文本;
将所述目标测试用例、所述覆盖率分析结果、所述模糊测试代码片段、所述模糊测试结果以及所述解释文本,整合成测试结果文件;
输出所述测试结果文件。
第二方面,本申请实施例提供一种测试用例的生成装置,包括:
第一获取单元,用于获取用于生成测试用例的目标代码;
第一处理单元,用于将所述目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例;其中,所述目标超大规模语言模型为通过样本数据训练获得的神经网络模型,所述样本数据包含样本代码和所述样本代码对应的样本测试用例;
第二处理单元,用于对所述目标测试用例进行覆盖率分析处理,得到覆盖率分析结果;
调整单元,用于根据所述覆盖率分析结果,对所述目标测试用例进行调整;
输出单元,用于输出调整后的所述目标测试用例。
第三方面,本申请实施例提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面任一项所述测试用例的生成方法中的各步骤。
第四方面,本申请实施例提供一种计算机可读存储介质所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面任一项所述的测试用例的生成方法中的各步骤。
第五方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行如上述第一方面任一项所述的测试用例的生成方法中的各步骤。
本申请实施例提供的测试用例的生成方法、装置、终端设备及介质具有以下有益效果:
本申请实施例提供的测试用例的生成方法,通过获取用于生成测试用例的目标代码,并将该目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例,其中,目标超大规模语言模型为通过样本数据训练获得的神经网络模型,样本数据包含样本代码和样本代码对应的样本测试用例,然后对目标测试用例进行覆盖率分析处理,得到覆盖率分析结果,再根据覆盖率分析结果,对目标测试用例进行调整,最后输出调整后的目标测试用例。采用本申请实施例提供的测试用例的生成方法,可以通过已训练的目标超大规模语言模型自动生成目标测试用例,由于超大规模语言模型具有强大的语音理解能力,因此超大规模语言模型能够结合代码中包含的程序员的意图以及代码的上下文信息来生成测试用例,进而能够提高自动生成的测试用例的质量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种测试用例的生成方法的实现流程图;
图2为本申请实施例提供的一种训练获得目标超大规模语言模型的流程示意图;
图3为本申请实施例提供的一种利用识别并标记映射关系后的样本数据对初始超大规模语言模型进行优化训练的流程示意图;
图4为本申请实施例提供的一种对目标测试用例进行覆盖率分析处理来得到覆盖率分析结果的流程示意图;
图5为本申请实施例提供的一种输出调整后的目标测试用例的流程示意图;
图6为本申请实施例提供的一种测试用例的生成装置的结构示意图;
图7为本申请实施例提供的一种终端设备的结构示意图。
具体实施方式
需要说明的是,本申请实施例使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。在本申请实施例的描述中,除非另有说明,“多个”是指两个或多于两个,“至少一个”、“一个或多个”是指一个、两个或两个以上。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”特征可以明示或者隐含地包括一个或者更多个该特征。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的一种测试用例的生成方法的执行主体可以为终端设备。终端设备可以包括于手机、平板电脑、笔记本电脑及台式电脑等电子设备。
本申请实施例提供的一种测试用例的生成方法可以应用于根据目标代码自动生成该目标代码对应的测试用例。
具体的,当用户需要获取目标代码对应的测试用例时,可以将该目标代码输入至终端设备中,然后终端设备可以执行本申请实施例提供的测试用例的生成方法的各个步骤,从而能够根据目标代码自动生成该目标代码对应的测试用例。
请参阅图1,图1为本申请实施例提供的一种测试用例的生成方法的实现流程图,该测试用例的生成方法可以包括S101~S105,详述如下:
在S101中,获取用于生成测试用例的目标代码。
在本申请实施例中,目标代码可以为用户需要根据该代码生成测试用例的代码。根据该目标代码生成的测试用例可以为目标测试用例。
用户可以将目标代码输入至终端设备中,以令终端设备获取到该用于生成测试用例的代码。
在S102中,将目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例。
其中,目标超大规模语言模型为通过样本数据训练获得的神经网络模型,样本数据包含样本代码和样本代码对应的样本测试用例。
在本申请实施例中,目标超大规模语言模型可以通过对初始超大规模语言模型进行训练得到。其中,初始超大规模语言模型可以为现有的超大规模语言模型(LargeLanguage model,LLM),示例性的,现有的超大规模语言模型可以为GPT(Generative Pre-trained Transformer)模型,其中,GPT模型是一种基于Transformer架构的自然语言处理模型,可以理解的是,现有的超大规模语言模型还可以为其他的超大规模语言模型,此处不作限定。
基于此,可以通过获取现有的超大规模语言模型,并将现有的超大规模语言模型确定为初始超大规模语言模型,再对该初始超大规模语言模型进行训练,从而可以得到本申请实施例中的已训练的目标超大规模语言模型。
终端设备在得到已训练的目标超大规模语言模型后,可以将已获取到的目标代码输入至该已训练的目标超大规模语言模型进行处理,从而可以得到目标测试用例。
在一种可能的实现方式中,目标超大规模语言模型可以通过如图2所示的S201~S204训练获得,图2为本申请实施例提供的一种训练获得目标超大规模语言模型的流程示意图。详述如下:
在S201中,获取预训练的初始超大规模语言模型。
在本实现方式中,预训练的初始超大规模语言模型可以为现有的超大规模语言模型,基于此,可以将现有的超大规模语言模型输入至终端设备中,以令终端设备获取到预训练的初始超大规模语言模型。
在S202中,识别并标记样本数据中包含的样本代码和样本测试用例之间的映射关系。
在本实现方式中,终端设备可以先获取样本数据,其中,样本数据中可以包括多个样本代码以及各个代码对应的样本测试用例。示例性的,用户可以预先从实际的软件开发项目中收集多个代码作为样本代码,并收集各个代码对应的测试用例作为样本测试用例,并将各个样本代码和各个测试用例作为样本数据。示例性的,用户可以源代码、代码库以及已有的单元测试用例中收集样本代码和对应的样本测试用例。
用户在收集到样本数据后,可以将该样本数据输入至终端设备中,以令终端设备识别并标记样本数据中包含的样本代码和样本测试用例之间的映射关系。
在本实现方式中,在终端设备识别并标记样本数据中包含的样本代码和样本测试用例之间的映射关系之前,可以还包括数据清洗步骤,其中,数据清洗步骤可以包括步骤a和步骤b,详述如下:
在步骤a中,剔除样本代码中的无效代码段和错误代码段。
终端设备可以在识别并标记样本数据中包含的样本代码和样本测试用例之间的映射关系之前,先识别并剔除样本代码中的无效代码段和错误代码段,以提高样本数据的数据质量,进而可以提高训练获得的目标超大规模语言模型的质量。
在步骤b中,对样本代码中的指定字符进行转义处理。
终端设备可以在识别并标记样本数据中包含的样本代码和样本测试用例之间的映射关系之前,先通过预设识别算法识别出样本代码中的指定字符,并对样本代码中的指定字符进行转义处理,以提高样本数据的数据质量,进而可以提高训练获得的目标超大规模语言模型的质量。
在完成对样本数据的数据清洗后,终端设备可以根据样本数据中的各个样本代码和各个样本代码对应的样本测试用例识别得到样本代码和样本测试用例之间的映射关系,并对样本代码和样本测试用例之间的映射关系通过预设标记规则进行标记。
在S203中,根据样本数据扩充初始超大规模语言模型的词表。
在本实现方式中,由于初始超大规模语言模型是根据代码中包括的单词的信息来理解代码的,因此词表是初始超大规模语言模型能够理解样本代码的基础。基于此,终端设备可以根据样本数据扩充初始超大规模语言模型的词表,以令初始超大规模语言模型更好地理解样本代码,示例性的,可以通过添加新的语言关键字、添加新的常用库函数以及添加新的常用的类或方法名的方式来实现扩充初始超大规模语言模型的词表。此外,还可以根据实际需求引入特殊的标记来表示代码的特定结构或语义,来进一步帮助初始超大规模语言模型更好地理解样本代码。
在S204中,利用识别并标记映射关系后的样本数据,对初始超大规模语言模型进行优化训练,并将优化训练后的初始超大规模语言模型确定为目标超大规模语言模型。
在本实现方式中,终端设备在识别并标记样本数据中包含的样本代码和样本测试用例之间的映射关系并根据样本数据扩充初始超大规模语言模型的词表后,可以利用识别并标记映射关系后的样本数据对初始超大规模语言模型进行优化训练,在结束优化训练后,可以将优化训练后的初始超大规模语言模型确定为目标超大规模语言模型。
在一种可能的实现方式中,可以通过如图3所示的S301~S303来利用识别并标记映射关系后的样本数据,对初始超大规模语言模型进行优化训练,图3为本申请实施例提供的一种利用识别并标记映射关系后的样本数据对初始超大规模语言模型进行优化训练的流程示意图,详述如下:
在S301中,针对识别并标记映射关系后的样本数据中的每个代码测试用例对,根据代码测试用例对包含的样本代码和样本测试用例之间的正确性和相关性,确定代码测试用例对的评分。
其中,每个代码测试用例对包含样本数据中的一个样本代码及其对应的一个样本测试用例。
在本实现方式中,终端设备可以通过预设的测试用例评分模型来对每个代码测试用例对进行评分,得到每个代码测试用例对对应的评分。具体的,终端设备可以根据预设的测试用例评分模型来对每个代码测试用例对中包含的样本代码和样本测试用例之间的正确性和相关性,确定代码测试用例对的评分,其中,代码测试用例对中包含的样本代码和样本测试用例之间的正确性和相关性越高,则该代码测试用例对的评分越高。其中,预设的测试用例评分模型可以为现有的,也可以根据实际需求进行构建。
在S302中,将各个代码测试用例对按照评分由高至低的顺序排序,得到排序列表。
在本实现方式中,终端设备在得到每个代码测试用例对的评分之后,可以将各个代码测试用例对按照评分由高至低的顺序排序,得到排序列表。
在S303中,利用排序列表中包含的排序靠前的设定数量的代码测试用例对,对初始超大规模语言模型进行优化训练。
在本实现方式中,终端设备在得到各个代码测试用例对的评分的排序列表后,可以筛选出排序列表中排序靠前的设定数量的代码测试用例对,示例性的,设定数量可以为a,则可以在排序列表中筛选出排序靠前的a个代码测试用例对。之后,终端设备可以通过筛选出来的排序靠前的设定数量的代码测试用例对来对初始超大规模语言模型进行优化训练。其中,具体的优化训练方式和步骤可以根据实际需求设置,此处不做限定。
在S103中,对目标测试用例进行覆盖率分析处理,得到覆盖率分析结果。
在本申请实施例中,终端设备在将目标代码输入至已训练的目标超大规模语言模型进行处理得到目标测试用例后,可以对目标测试用例进行覆盖率分析处理,以得到覆盖率分析结果,进而可以根据覆盖率分析结果对目标测试用例进行调整。
在一种可能的实现方式中,可以通过如图4所示的S401~S402实现对目标测试用例进行覆盖率分析处理来得到覆盖率分析结果,图4为本申请实施例提供的一种对目标测试用例进行覆盖率分析处理来得到覆盖率分析结果的流程示意图。详述如下:
在S401中,通过目标测试用例对目标代码进行测试,得到代码测试结果。
在本实现方式中,终端设备在得到目标测试用例后可以将该目标测试用例输入至目标代码中执行,以对目标代码进行测试,进而得到代码测试结果。代码测试结果包括目标代码中被执行了的代码段的路径,以及包括目标代码中未被执行了的代码段的路径,其中,目标代码中被执行了的代码段的路径即为目标测试用例已覆盖的代码路径,目标代码中未被执行了的代码段的路径即为目标测试用例未覆盖的代码路径。
在S402中,根据代码测试结果,确定目标代码中所有未被执行的代码段的路径,从而得到覆盖率分析结果。
在本实现方式中,终端设备在得到代码测试结果后,可以根据代码测试结果得到覆盖率分析结果。其中,覆盖率分析结果可以包括目标代码中被执行了的代码段的路径、目标代码中未被执行了的代码段的路径以及目标代码中每一个源代码文件甚至是每一个代码段的覆盖信息。
在S104中,根据覆盖率分析结果,对目标测试用例进行调整。
在本申请实施例中,终端设备在得到覆盖率分析结果后,可以根据该覆盖率分析结果对目标测试用例进行调整。
在一种可能的实现方式中,可以通过步骤c~步骤f来实现根据覆盖率分析结果对目标测试用例进行调整。详述如下:
在步骤c中,将所有未被执行的代码段的路径转换为机器可理解的描述文本。
在本实现方式中,终端设备在得到覆盖率分析结果后,可以根据该覆盖率分析结果将所有未被执行的代码段的路径转换为机器可理解的描述文本。示例性的,机器可理解的描述文本为可以形如“在函数X的输入为Y时,应该触发Z分支”的描述文本。
在步骤d中,将描述文本添加至样本数据中。
在本实现方式中,终端设备在转化得到机器可理解的描述文本后,可以将该描述文本添加至样本数据中,以令目标超大规模语言模型可以根据该描述文本生成相应的目标测试用例。
在步骤e中,利用添加描述文本后的样本数据,对目标超大规模语言模型进行再训练,得到再训练后的目标超大规模语言模型。
在本实现方式中,终端设备在将该描述文本添加至样本数据中后,可以利用添加描述文本后的样本数据,对目标超大规模语言模型进行再训练,得到再训练后的目标超大规模语言模型。其中,利用添加描述文本后的样本数据对目标超大规模语言模型进行再训练的方式和步骤可以参阅如图2中的S201~S204中的训练方式和步骤,此处不进行赘述。
在步骤f中,将目标代码输入至再训练后的目标超大规模语言模型进行处理,得到调整后的目标测试用例。
在本实现方式中,终端设备在得到再训练后的目标超大规模语言模型后,可以将目标代码输入至再训练后的目标超大规模语言模型进行处理,得到调整后的目标测试用例。之后,终端设备可以对调整后的目标测试用例再次进行覆盖率分析处理,以确认调整后的目标测试用例是否已覆盖调整前的目标测试用例未覆盖的代码路径,若调整后的目标测试用例还是未覆盖调整前的目标测试用例未覆盖的代码路径,则需要根据覆盖率分析结果,对目标测试用例进行一次或多次调整,直至调整后的目标测试用例已经覆盖调整前的目标测试用例未覆盖的代码路径为止,从而得到满足预设要求的调整后的目标测试用例。
在S105中,输出调整后的目标测试用例。
在本申请实施例中,终端设备在得到满足预设要求的调整后的目标测试用例后,可以输出该调整后的目标测试用例。
在一种可能的实现方式中,可以通过如图5所示的S501~S505来实现输出调整后的目标测试用例,图5为本申请实施例提供的一种输出调整后的目标测试用例的流程示意图,详述如下:
在S501中,获取模糊测试代码片段。
在实现方式中,已训练的目标超大规模语言模型可以自动生成适用于模糊测试的模糊测试代码片段,基于此,终端设备可以从已训练的目标超大规模语言模型中获取模糊测试代码片段。
在S502中,将模糊测试代码片段插入目标代码,并通过目标测试用例对插入模糊测试代码片段后的目标代码进行测试,得到目标测试用例的模糊测试结果。
在实现方式中,终端设备在获取到模糊测试代码片段后,可以将模糊测试代码片段插入目标代码,并通过目标测试用例对插入模糊测试代码片段后的目标代码进行测试,得到目标测试用例的模糊测试结果。
在S503中,生成针对目标测试用例的解释文本。
在实现方式中,已训练的目标超大规模语言模型可以自动生成针对目标测试用例的解释文本,解释文本可以包括需要这个目标测试用例的原因、这个目标测试用例覆盖了目标代码的路径以及预期输出等信息,从而能够目标测试用例的可理解性。
在S504中,将目标测试用例、覆盖率分析结果、模糊测试代码片段、模糊测试结果以及解释文本,整合成测试结果文件。
在实现方式中,终端设备在得到目标测试用例、该目标测试用例对应的覆盖率分析结果、该目标测试用例对应的模糊测试代码片段、该目标测试用例对应的模糊测试结果以及该目标测试用例对应的解释文本后,可以自动将目标测试用例、该目标测试用例对应的覆盖率分析结果、该目标测试用例对应的模糊测试代码片段、该目标测试用例对应的模糊测试结果以及该目标测试用例对应的解释文本整合成测试结果文件。
在S505中,输出测试结果文件。
在实现方式中,终端设备在整合得到测试结果文件后,可以将该测试结果文件进行输出,以令用户得到包括目标测试用例的该测试结果文件。
以上可以看出,本申请实施例提供的测试用例的生成方法,通过获取用于生成测试用例的目标代码,并将该目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例,其中,目标超大规模语言模型为通过样本数据训练获得的神经网络模型,样本数据包含样本代码和样本代码对应的样本测试用例,然后对目标测试用例进行覆盖率分析处理,得到覆盖率分析结果,再根据覆盖率分析结果,对目标测试用例进行调整,最后输出调整后的目标测试用例。采用本申请实施例提供的测试用例的生成方法,可以通过已训练的目标超大规模语言模型自动生成目标测试用例,由于超大规模语言模型具有强大的语音理解能力,因此超大规模语言模型能够结合代码中包含的程序员的意图以及代码的上下文信息来生成测试用例,进而能够提高自动生成的测试用例的质量。
基于上述实施例提供的测试用例的生成方法,本申请实施例进一步给出实现上述方法实施例的一种测试用例的生成装置,请参阅图6,图6为本申请实施例提供的一种测试用例的生成装置的结构示意图。如图6所示,该测试用例的生成装置60可以包括第一获取单元61、第一处理单元62、第二处理单元63、调整单元64以及输出单元65。其中:
第一获取单元61用于获取用于生成测试用例的目标代码。
第一处理单元62用于将目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例;其中,目标超大规模语言模型为通过样本数据训练获得的神经网络模型,样本数据包含样本代码和样本代码对应的样本测试用例。
第二处理单元63用于对目标测试用例进行覆盖率分析处理,得到覆盖率分析结果。
调整单元64用于根据覆盖率分析结果,对目标测试用例进行调整。
输出单元65用于输出调整后的目标测试用例。
可选的,该测试用例的生成装置60可以还包括目标超大规模语言模型训练单元。目标超大规模语言模型训练单元可以包括:第二获取单元、识别标记单元、扩充词表单元以及优化训练单元。其中:
第二获取单元用于获取预训练的初始超大规模语言模型。
识别标记单元用于识别并标记样本数据中包含的样本代码和样本测试用例之间的映射关系。
扩充词表单元用于根据样本数据扩充初始超大规模语言模型的词表。
优化训练单元用于利用识别并标记映射关系后的样本数据,对初始超大规模语言模型进行优化训练,并将优化训练后的初始超大规模语言模型确定为目标超大规模语言模型。
可选的,优化训练单元具体用于:
针对识别并标记映射关系后的样本数据中的每个代码测试用例对,根据代码测试用例对包含的样本代码和样本测试用例之间的正确性和相关性,确定代码测试用例对的评分;其中,每个代码测试用例对包含样本数据中的一个样本代码及其对应的一个样本测试用例;
将各个代码测试用例对按照评分由高至低的顺序排序,得到排序列表;
利用排序列表中包含的排序靠前的设定数量的代码测试用例对,对初始超大规模语言模型进行优化训练。
可选的,该测试用例的生成装置60可以还包括数据清洗单元。其中:
数据清洗单元具体用于:
剔除样本代码中的无效代码段和错误代码段;
对样本代码中的指定字符进行转义处理。
可选的,第二处理单元63可以包括代码测试单元以及覆盖率分析结果得到单元。其中:
代码测试单元用于通过目标测试用例对目标代码进行测试,得到代码测试结果。
覆盖率分析结果得到单元用于根据代码测试结果,确定目标代码中所有未被执行的代码段的路径,从而得到覆盖率分析结果。
可选的,覆盖率分析结果得到单元具体用于:
将所有未被执行的代码段的路径转换为机器可理解的描述文本;
将描述文本添加至样本数据中;
利用添加描述文本后的样本数据,对目标超大规模语言模型进行再训练,得到再训练后的目标超大规模语言模型;
将目标代码输入至再训练后的目标超大规模语言模型进行处理,得到调整后的目标测试用例。
可选的,输出单元65可以包括第三获取单元、模糊测试单元、解释文本生成单元、整合单元以及测试结果文件输出单元。其中:
第三获取单元用于获取模糊测试代码片段。
模糊测试单元用于将模糊测试代码片段插入目标代码,并通过目标测试用例对插入模糊测试代码片段后的目标代码进行测试,得到目标测试用例的模糊测试结果。
解释文本生成单元用于生成针对目标测试用例的解释文本。
整合单元用于将目标测试用例、覆盖率分析结果、模糊测试代码片段、模糊测试结果以及解释文本,整合成测试结果文件。
测试结果文件输出单元用于输出测试结果文件。
需要说明的是,上述单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参照方法实施例部分,此处不再赘述。
请参阅图7,图7为本申请实施例提供的一种终端设备的结构示意图。如图7所示,本实施例提供的终端设备7可以包括:处理器70、存储器71以及存储在存储器71中并可在处理器70上运行的计算机程序72。例如测试用例的生成方法对应的程序。处理器70执行计算机程序72时实现上述应用测试用例的生成方法实施例中的步骤,例如图1所示的S101~S105、图2所示的S201~S204、图3中的S301~S303、图4中的S401~S402以及图5中的S501~S505。或者,处理器70执行计算机程序72时实现上述终端设备7对应的实施例中各模块/单元的功能,例如图6所示的单元61~65的功能。
示例性的,计算机程序72可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器71中,并由处理器70执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序72在终端设备7中的执行过程。例如,计算机程序72可以被分割成第一获取单元、第一处理单元、第二处理单元、调整单元以及输出单元,各单元的具体功能请参阅图6对应的实施例中的相关描述,此处不赘述。
本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
处理器70可以是中央处理单元(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器71可以是终端设备7的内部存储单元,例如终端设备7的硬盘或内存。存储器71也可以是终端设备7的外部存储设备,例如终端设备7上配备的插接式硬盘、智能存储卡(smart media card,SMC)、安全数字(secure digital,SD)卡或闪存卡(flash card)等。进一步地,存储器71还可以既包括终端设备7的内部存储单元也包括外部存储设备。存储器71用于存储计算机程序以及终端设备所需的其他程序和数据。存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将测试用例的生成装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备实现上述各个方法实施例中的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参照其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种测试用例的生成方法,其特征在于,包括:
获取用于生成测试用例的目标代码;
将所述目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例;其中,所述目标超大规模语言模型为通过样本数据训练获得的神经网络模型,所述样本数据包含样本代码和所述样本代码对应的样本测试用例;
对所述目标测试用例进行覆盖率分析处理,得到覆盖率分析结果;
根据所述覆盖率分析结果,对所述目标测试用例进行调整;
输出调整后的所述目标测试用例。
2.根据权利要求1所述的生成方法,其特征在于,所述目标超大规模语言模型通过以下方式训练获得:
获取预训练的初始超大规模语言模型;
识别并标记所述样本数据中包含的所述样本代码和所述样本测试用例之间的映射关系;
根据所述样本数据扩充所述初始超大规模语言模型的词表;
利用识别并标记所述映射关系后的所述样本数据,对所述初始超大规模语言模型进行优化训练,并将优化训练后的所述初始超大规模语言模型确定为所述目标超大规模语言模型。
3.根据权利要求2所述的生成方法,其特征在于,所述利用识别并标记所述映射关系后的所述样本数据,对所述初始超大规模语言模型进行优化训练,包括:
针对识别并标记所述映射关系后的所述样本数据中的每个代码测试用例对,根据所述代码测试用例对包含的样本代码和样本测试用例之间的正确性和相关性,确定所述代码测试用例对的评分;其中,每个所述代码测试用例对包含所述样本数据中的一个样本代码及其对应的一个样本测试用例;
将各个所述代码测试用例对按照所述评分由高至低的顺序排序,得到排序列表;
利用所述排序列表中包含的排序靠前的设定数量的所述代码测试用例对,对所述初始超大规模语言模型进行优化训练。
4.根据权利要求2所述的生成方法,其特征在于,在所述识别并标记所述样本数据中包含的所述样本代码和所述样本测试用例之间的映射关系之前,还包括:
剔除所述样本代码中的无效代码段和错误代码段;
对所述样本代码中的指定字符进行转义处理。
5.根据权利要求1所述的生成方法,其特征在于,所述对所述目标测试用例进行覆盖率分析处理,得到覆盖率分析结果,包括:
通过所述目标测试用例对所述目标代码进行测试,得到代码测试结果;
根据所述代码测试结果,确定所述目标代码中所有未被执行的代码段的路径,从而得到所述覆盖率分析结果。
6.根据权利要求5所述的生成方法,其特征在于,所述根据所述覆盖率分析结果,对所述目标测试用例进行调整,包括:
将所述所有未被执行的代码段的路径转换为机器可理解的描述文本;
将所述描述文本添加至所述样本数据中;
利用添加所述描述文本后的所述样本数据,对所述目标超大规模语言模型进行再训练,得到再训练后的所述目标超大规模语言模型;
将所述目标代码输入至再训练后的所述目标超大规模语言模型进行处理,得到调整后的所述目标测试用例。
7.根据权利要求1~6任一项所述的生成方法,其特征在于,所述输出调整后的所述目标测试用例,包括:
获取模糊测试代码片段;
将所述模糊测试代码片段插入所述目标代码,并通过所述目标测试用例对插入所述模糊测试代码片段后的所述目标代码进行测试,得到所述目标测试用例的模糊测试结果;
生成针对所述目标测试用例的解释文本;
将所述目标测试用例、所述覆盖率分析结果、所述模糊测试代码片段、所述模糊测试结果以及所述解释文本,整合成测试结果文件;
输出所述测试结果文件。
8.一种测试用例的生成装置,其特征在于,包括:
第一获取单元,用于获取用于生成测试用例的目标代码;
第一处理单元,用于将所述目标代码输入至已训练的目标超大规模语言模型进行处理,得到目标测试用例;其中,所述目标超大规模语言模型为通过样本数据训练获得的神经网络模型,所述样本数据包含样本代码和所述样本代码对应的样本测试用例;
第二处理单元,用于对所述目标测试用例进行覆盖率分析处理,得到覆盖率分析结果;
调整单元,用于根据所述覆盖率分析结果,对所述目标测试用例进行调整;
输出单元,用于输出调整后的所述目标测试用例。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述测试用例的生成方法中的各步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述测试用例的生成方法中的各步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310843515.7A CN116991711A (zh) | 2023-07-10 | 2023-07-10 | 一种测试用例的生成方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310843515.7A CN116991711A (zh) | 2023-07-10 | 2023-07-10 | 一种测试用例的生成方法、装置、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116991711A true CN116991711A (zh) | 2023-11-03 |
Family
ID=88529273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310843515.7A Pending CN116991711A (zh) | 2023-07-10 | 2023-07-10 | 一种测试用例的生成方法、装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991711A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117632716A (zh) * | 2023-11-27 | 2024-03-01 | 中国电子科技集团公司第十五研究所 | 一种用于软件安全性测试的数据处理方法及装置 |
CN117806980A (zh) * | 2024-03-01 | 2024-04-02 | 西安中朗智控科技有限公司 | 一种基于大语言模型的测试用例自动生成装置 |
-
2023
- 2023-07-10 CN CN202310843515.7A patent/CN116991711A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117632716A (zh) * | 2023-11-27 | 2024-03-01 | 中国电子科技集团公司第十五研究所 | 一种用于软件安全性测试的数据处理方法及装置 |
CN117806980A (zh) * | 2024-03-01 | 2024-04-02 | 西安中朗智控科技有限公司 | 一种基于大语言模型的测试用例自动生成装置 |
CN117806980B (zh) * | 2024-03-01 | 2024-05-28 | 西安中朗智控科技有限公司 | 一种基于大语言模型的测试用例自动生成装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116991711A (zh) | 一种测试用例的生成方法、装置、终端设备及存储介质 | |
CN111324743A (zh) | 文本关系抽取的方法、装置、计算机设备及存储介质 | |
CN109783631B (zh) | 社区问答数据的校验方法、装置、计算机设备和存储介质 | |
CN111382255A (zh) | 用于问答处理的方法、装置、设备和介质 | |
CN109947651B (zh) | 人工智能引擎优化方法和装置 | |
CN109144879B (zh) | 测试分析方法及装置 | |
CN113656547A (zh) | 文本匹配方法、装置、设备及存储介质 | |
CN111258905B (zh) | 缺陷定位方法、装置和电子设备及计算机可读存储介质 | |
CN112100374A (zh) | 文本聚类方法、装置、电子设备及存储介质 | |
CN107145446A (zh) | 一种应用程序app的测试方法、装置和介质 | |
CN110968664A (zh) | 一种文书检索方法、装置、设备及介质 | |
CN117493830A (zh) | 训练数据质量的评估、评估模型的生成方法、装置及设备 | |
CN114528391A (zh) | 问答对评分模型的训练方法、装置、设备及存储介质 | |
US11645192B2 (en) | Graph-based method for inductive bug localization | |
CN115859128B (zh) | 一种基于档案数据交互相似度的分析方法和系统 | |
CN117217315A (zh) | 一种利用大语言模型生成高质量问答数据的方法及装置 | |
US20230130662A1 (en) | Method and apparatus for analyzing multimodal data | |
CN116168403A (zh) | 医疗数据分类模型训练方法、分类方法、装置及相关介质 | |
CN113836297B (zh) | 文本情感分析模型的训练方法及装置 | |
CN112069052A (zh) | 一种异常对象检测方法、装置、设备及存储介质 | |
CN112989040B (zh) | 一种对话文本标注方法、装置、电子设备及存储介质 | |
CN114077884A (zh) | 深度学习模型的模型转换优化装置、方法及可读存储介质 | |
CN111859985A (zh) | Ai客服模型测试方法、装置、电子设备及存储介质 | |
CN111813593A (zh) | 一种数据处理方法、设备、服务器及存储介质 | |
TWI786430B (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 |