System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及自然语言处理,尤其涉及一种基于大语言模型的单元测试生成方法。
技术介绍
1、大语言模型(large language models,llms)在代码生成任务中展现出显著潜力,但其在单次推理中生成正确答案的能力仍有局限,尤其是在需要复杂逻辑推理或精确验证的场景中表现不足。当前主流技术通常采用best-of-n策略以提升生成质量,即通过多次生成候选答案,并借助验证器或奖励模型筛选出最优结果。
2、现有研究通常将单元测试作为验证器,用以对候选代码进行筛选。具体而言,针对特定问题和代码,首先利用大语言模型生成测试用例,包括被测试函数的输入参数及期望输出;随后,根据代码在测试用例上的运行结果,选出表现最优的程序。然而,这一方法在实际应用中面临诸多挑战,其中最主要的问题是,由于大语言模型固有的"幻觉"现象,其生成的单元测试可能并不可靠,时常出现期望输出与输入参数不一致的情况,从而削弱了验证器在筛选最优程序过程中的效能。
技术实现思路
1、本专利技术提供一种基于大语言模型的单元测试生成方法,用以解决现有技术的缺陷。
2、本专利技术提供一种基于大语言模型的单元测试生成方法,包括:
3、s1:收集代码微调数据,获得原始数据集;
4、s2:对所述原始数据集进行预处理,获得优化数据集;
5、s3:根据所述优化数据集中的查询问题及代码解决方案,生成单元测试数据;
6、s4:通过所述优化数据集及所述单元生成数据,基于监督微
7、s5:通过所述单元测试生成器对待测试程序生成单元测试结果。
8、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s1中,由codefeedback-filtered-instruction数据集及taco数据集,采集代码微调数据。
9、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s2进一步包括:
10、s21:对所述原始数据集进行问题数据排除,获得过滤数据集;
11、s22:将所述过滤数据集中的代码解决方案格式化为函数形式,获得优化数据集。
12、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s21中的所述问题数据包括随机性数据、非确定性数据、缺少测试标准数据。
13、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s3进一步包括:
14、s31:通过llama3.1-70b模型,对所述优化数据集中的查询问题及代码解决方案进行多次采样,获得基础单元测试数据;
15、s32:对所述基础单元测试数据进行验证错误单元测试数据剔除,获得过滤单元测试数据;
16、s33:对所述过滤单元测试数据进行区分错误单元测试数据剔除,获得单元测试数据。
17、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s32进一步包括:
18、s321:将所述基础单元测试数据,应用于所述优化数据集中的代码解决方案,获得执行结果;
19、s322:基于所述执行结果对对应的基础单元测试数据进行判断,当所述执行结果令代码解决方案通过时,则对应的基础单元测试数据为正确基础单元测试数据,当所述执行结果不能令代码解决方案通过时,则对应的基础单元测试数据为错误基础单元测试数据;
20、s323:对所述基础单元测试数据中的所述错误基础单元测试数据进行剔除,获得过滤单元测试数据。
21、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s322中还包括:
22、通过捕获python解释器生成的执行反馈信息,对错误基础单元测试数据进行修复。
23、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s33进一步包括:
24、s331:生成错误代码解决方案;
25、s332:将所述过滤单元测试数据应用于错误代码解决方案,当所述过滤单元测试数据未区分错误代码解决方案时,则对应的过滤单元测试数据为错误过滤单元测试数据,当所述过滤单元测试数据区分错误代码解决方案时,则对应的过滤单元测试数据为正确过滤单元测试数据;
26、s333:对所述过滤单元测试数据中的所述错误过滤单元测试数据进行剔除,获得单元测试数据。
27、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s4中的所述单元测试生成器以所述优化数据集中的查询问题及代码解决方案为输入,以单元测试数据为输出。
28、根据本专利技术提供的一种基于大语言模型的单元测试生成方法,步骤s4中的所述单元测试生成器的损失函数的表达式为:
29、
30、其中,l(x,y)为单元测试生成器的损失函数,x为输入的优化数据集中的数据,y为单元测试生成器生成的单元测试结果,i为获得的令牌的索引值,j为给定的令牌的索引值,model(yi|x,yj<i))为给定x和y的第j=i-1个令牌的条件下,生成y的第i个令牌的概率。
31、本专利技术提供的一种基于大语言模型的单元测试生成方法,通过收集并预处理代码微调数据,能够生成与实际编程场景更为贴近的单元测试数据,同时利用大语言模型进行监督微调,可以显著提升单元测试生成的准确性和效率,使得生成的单元测试更能反映代码的实际功能和潜在问题;本专利技术在数据预处理阶段,通过排除随机性、非确定性以及缺少测试标准的问题数据,确保了用于训练和优化的大语言模型数据集的高质量,有助于减少模型在生成单元测试时的噪声和误判,提高生成的单元测试的可靠性和有效性;其次本专利技术通过多次采样和验证错误单元测试数据的剔除,以及对错误基础单元测试数据的修复,能够生成更具针对性和区分度的单元测试数据,这些单元测试数据不仅能够验证代码的正确性,还能有效区分错误代码解决方案,从而提高软件测试的覆盖率和有效性;另外本专利技术通过基于优化数据集和单元生成数据对大语言模型进行训练,获得的单元测试生成器具有更强的泛化能力,能够针对不同类型的代码和测试需求,生成符合要求的单元测试数据,进一步提升了软件开发过程中的自动化测试水平;本专利技术的单元测试生成方法实现了软件测试过程的自动化和智能化,减轻了测试人员的工作负担,提高了测试效率,同时,通过不断优化和改进单元测试生成方法,可以推动软件开发过程向更高层次的自动化和智能化方向发展。
本文档来自技高网...【技术保护点】
1.一种基于大语言模型的单元测试生成方法,其特征在于,包括:
2.根据权利要求1所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S1中,由CodeFeedback-Filtered-Instruction数据集及TACO数据集,采集代码微调数据。
3.根据权利要求1所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S2进一步包括:
4.根据权利要求3所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S21中的所述问题数据包括随机性数据、非确定性数据、缺少测试标准数据。
5.根据权利要求1所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S3进一步包括:
6.根据权利要求5所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S32进一步包括:
7.根据权利要求6所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S322中还包括:
8.根据权利要求5所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S33进一步包括:
9
10.根据权利要求1所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤S4中的所述单元测试生成器的损失函数的表达式为:
...【技术特征摘要】
1.一种基于大语言模型的单元测试生成方法,其特征在于,包括:
2.根据权利要求1所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤s1中,由codefeedback-filtered-instruction数据集及taco数据集,采集代码微调数据。
3.根据权利要求1所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤s2进一步包括:
4.根据权利要求3所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤s21中的所述问题数据包括随机性数据、非确定性数据、缺少测试标准数据。
5.根据权利要求1所述的一种基于大语言模型的单元测试生成方法,其特征在于,步骤s3进一步包括:
...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。