一种基于AI的测试用例自动生成系统的制作方法
本发明涉及软件测试,尤其涉及一种基于ai的测试用例自动生成系统。
背景技术:
1、软件单元测试通过构造覆盖函数各执行路径的测试用例来验证函数逻辑的正确性,是保障软件质量的重要手段。现有技术中,单元测试用例的生成方式主要包括人工编写和自动化生成两类。人工编写测试用例依赖开发人员对函数逻辑的深度理解,耗时较长,且难以系统性覆盖函数的全量执行分支,边界条件和异常路径的覆盖率不足问题普遍存在。当测试发现函数存在逻辑缺陷时,缺陷定位与修复依赖测试人员与开发人员之间的沟通协作,流程繁琐,修复周期较长
2、而现有的自动化生成方式仍然存在以下缺陷:现有方法在生成测试用例时未考虑函数运行时访问的隐式依赖对象,导致测试用例缺少必要的前置状态配置,函数执行结果不稳定,测试可靠性下降。在修复函数缺陷时未对修复范围加以约束,大语言模型可能修改函数签名或改动与当前缺陷无关的代码,引入新的错误或破坏上游调用关系。
技术实现思路
1、基于此,本发明有必要提供一种基于ai的测试用例自动生成系统,以解决至少一个上述技术问题。
2、为实现上述目的,一种基于ai的测试用例自动生成系统,包括:
3、预处理模块,用于探测性执行输入函数,捕获函数运行时访问的隐式依赖对象,构建隐式依赖图;识别输入函数的测试不可触达分支,以全量分支数减去测试不可触达分支数作为分母,计算有效覆盖率基准;
4、测试生成模块,用于以输入函数、隐式依赖图及当前未覆盖分支为输入,调用ai模型生成测试用例集;
5、执行对比模块,用于基于测试用例集执行输入函数,记录通过用例集、通过用例集覆盖的分支、失败用例集及失败用例集的失败行号集合,并统计有效覆盖率;当有效覆盖率未达到有效覆盖率基准时,将未覆盖分支列表返回测试生成模块;
6、修复模块,用于当有效覆盖率达到有效覆盖率基准时,以失败行号集合为输入定位各失败行号的最小可修改语句集合,调用ai模型生成修复版本;对修复版本进行语法树校验,校验通过后提交修复;
7、影响域分析模块,用于对比输入函数与修复版本语法树差异节点,从通过用例集中筛选覆盖语法树差异节点所在代码路径的最小重测集,重跑最小重测集并检测重测后有效覆盖率;若有效覆盖率回退则返回测试生成模块,若有效覆盖率未回退且失败用例集不为空则返回修复模块;
8、汇总输出模块,用于若失败用例集为空,以输入函数为基准输出函数差异记录、修改溯源记录及有效覆盖率报告;
9、其中,修改溯源记录包含每处变更节点对应的触发失败用例编号、失败时的预期输出值与实际输出值;有效覆盖率报告包含实际覆盖率数值、豁免分支清单及各豁免分支的豁免原因类型。
10、本发明通过探测性执行捕获函数运行时访问的隐式依赖对象,将读操作记录转化为测试前置条件,将写操作记录转化为执行后状态验证条件,并将上述条件作为测试生成模块的输入约束。与现有技术忽略隐式依赖对象相比,本发明生成的每组测试用例均携带完整的前置状态配置,消除了因隐式依赖对象状态不确定导致的函数执行结果不稳定问题,显著提升了测试用例的执行可靠性。通过识别防御性保护分支、外部状态依赖分支及不可达代码分支,将上述分支从有效覆盖率基准的分母中剔除,以全量分支数减去测试不可触达分支数作为分母计算有效覆盖率基准。与现有技术以全量分支数为分母相比,本发明的覆盖率目标仅针对测试环境中可触达的分支,从根本上消除了因结构性不可达分支导致覆盖率目标无法收敛、测试生成循环无法正常终止的问题。
11、将当前未覆盖分支的触发条件转化为对函数签名所声明参数的取值方向约束,形成输入构造方向集合,并将其与测试前置条件及执行后状态验证条件联合作为大语言模型的生成输入。与现有技术中大语言模型自由生成测试用例相比,本发明每轮生成的测试用例定向针对当前未覆盖分支,减少了无效用例的生成数量,提升了分支覆盖效率。以失败行号集合定位最小可修改节点集,在语法树校验阶段对修复版本的变更节点集合与最小可修改节点集进行子集验证,拒绝任何超出最小可修改节点集范围或涉及函数签名变更的修复版本,并依据拒绝原因类型对下一轮生成输入执行对应调整。与现有技术中大语言模型自由修改函数代码相比,本发明从机制层面将修复范围严格限定在与当前缺陷直接相关的最小语句集合内,防止修复过程引入新的逻辑错误或破坏上游调用关系。
12、通过提取修复版本与语法树快照的语法树差异节点集合,追踪通过用例集中每个用例的执行路径,将执行路径与差异节点集合存在交集的用例筛选为最小重测集,仅对最小重测集执行重测。与现有技术采用全量用例重测策略相比,本发明利用修复前后语法树差异节点与测试用例执行路径之间的对应关系,将重测范围精确限定在受本次修复影响的用例子集内,在保障修复验证完整性的前提下显著降低了重测开销。
1.一种基于ai的测试用例自动生成系统,其特征在于,包括:
2.根据权利要求1所述的基于ai的测试用例自动生成系统,其特征在于,还包括:
3.根据权利要求2所述的基于ai的测试用例自动生成系统,其特征在于,所述探测性执行输入函数具体为:
4.根据权利要求3所述的基于ai的测试用例自动生成系统,其特征在于,所述构建隐式依赖图具体为:
5.根据权利要求4所述的基于ai的测试用例自动生成系统,其特征在于,所述测试不可触达分支具体为识别以下至少一种分支:
6.根据权利要求5所述的基于ai的测试用例自动生成系统,其特征在于,所述测试生成模块调用ai模型生成测试用例集具体为:
7.根据权利要求6所述的基于ai的测试用例自动生成系统,其特征在于,所述执行对比模块具体为:
8.根据权利要求7所述的基于ai的测试用例自动生成系统,其特征在于,所述以失败行号集合为输入定位各失败行号的最小可修改语句集合具体为:
9.根据权利要求8所述的基于ai的测试用例自动生成系统,其特征在于,所述修复模块对修复版本进行语法树校验具体为:
10.根据权利要求9所述的基于ai的测试用例自动生成系统,其特征在于,所述影响域分析模块具体为:
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com