System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种单元测试用例生成方法、设备及介质技术_技高网

一种单元测试用例生成方法、设备及介质技术

技术编号:42873132 阅读:60 留言:0更新日期:2024-09-27 17:33
本申请实施例公开了一种单元测试用例生成方法、设备及介质,属于计算机软件技术领域,解决手动编写单元测试效率低下的问题,包括,通过编译器LLVM对获取到的源代码进行解析,生成中间表示;对中间表示进行代码分析与边界分析,以得到待测试单元;将输入变量替换为符号值,通过符号值对待测试单元对应的不同路径分别进行路径约束条件的采集;基于采集的路径约束条件,得到测试用例信息,基于测试用例信息确定出相应的测试框架,生成参考测试用例;执行参考测试用例,在测试覆盖率满足预置覆盖率阈值的情况下,确定参考测试用例为所需测试用例。

【技术实现步骤摘要】

本申请涉及计算机软件,尤其涉及一种单元测试用例生成方法、设备及介质


技术介绍

1、当今信息技术日新月异,软件系统的规模和复杂性以前所未有的速度持续增长,软件已成为推动社会进步和产业升级的关键力量。然而,这一发展趋势也对软件的质量与可靠性提出了更为严苛的要求,软件测试作为保障软件质量的重要环节,其地位日益凸显。

2、单元测试聚焦于软件中的最小可测试单元,如函数、方法或模块,旨在验证这些独立单元在隔离环境下的行为是否符合预期。

3、然而,传统的手动编写单元测试方法面临着挑战与不足,手动编写单元测试效率低下,特别是在面对大型、复杂的软件系统时,开发人员需要花费大量时间和精力来创建和维护测试用例,不仅增加了开发成本,还可能延迟软件交付时间。


技术实现思路

1、本申请实施例提供了一种单元测试用例生成方法、设备及介质,用于解决如下技术问题:手动编写单元测试效率低下,特别是在面对大型、复杂的软件系统时,开发人员需要花费大量时间和精力来创建和维护测试用例,不仅增加了开发成本,还可能延迟软件交付时间。

2、本申请实施例采用下述技术方案:

3、本申请实施例提供一种单元测试用例生成方法。包括,通过编译器llvm对获取到的源代码进行解析,生成中间表示;对中间表示进行代码分析与边界分析,以得到待测试单元;将输入变量替换为符号值,通过符号值对待测试单元对应的不同路径分别进行路径约束条件的采集;基于采集的路径约束条件,得到测试用例信息,基于测试用例信息确定出相应的测试框架,生成参考测试用例;执行参考测试用例,在测试覆盖率满足预置覆盖率阈值的情况下,确定参考测试用例为所需测试用例。

4、本申请实施例中间标识是一种与机器和语言无关的中间代码表示形式,能够跨不同的平台和架构进行代码分析和转换,提高了代码的可移植性和复用性。通过对中间表示进行代码分析,更加精确地理解程序的结构和行为,确保测试用例能够覆盖代码的关键路径和边界情况。通过符号执行技术,自动探索程序的执行路径,无需手动构造大量测试用例。通过执行测试用例,验证程序的正确性和稳定性,及时发现并修复潜在的问题。本申请实施例通过编译器llvm对源代码进行解析、分析,并生成测试用例,不仅提高了测试的自动化程度和效率,还增强了测试的全面性和有效性。

5、在本申请的一种实现方式中,对中间表示进行代码分析与边界分析,以得到待测试单元,具体包括:遍历中间表示中的函数定义节点,并记录各函数定义节点分别对应的函数定义信息;其中,函数定义信息至少包括名称、参数、返回类型中的一项;对中间表示构建控制流图,以通过控制流图进行控制流分析,得到数据流信息;在中间表示中确定出存在边界的代码数据,并确定出边界条件;其中,存在边界的代码数据至少包括循环语句、条件语句、数组访问以及指针解引用中的一项;基于函数定义信息、数据流信息以及边界条件,得到待测试单元;其中,待测试单元至少包括关键函数、边界条件以及异常路径中的一项。

6、在本申请的一种实现方式中,将输入变量替换为符号值,通过符号值对待测试单元对应的不同路径分别进行路径约束条件的采集,具体包括:确定出待测试单元对应的控制流图;将输入变量替换为符号值,使符号值遍历控制流图,以基于控制流图中的各条件分支生成不同的执行路径;基于执行路径的分支点,生成相应的条件表达式,并将条件表达式作为分支点约束条件;基于待测试单元对应的多个分支点约束条件,得到测试单元对应的路径约束条件。

7、在本申请的一种实现方式中,基于采集的路径约束条件,得到测试用例信息,基于测试用例信息确定出相应的测试框架,生成参考测试用例,具体包括:将待测试单元对应的路径约束条件输入约束求解器,得到触发不同执行路径的输入值;基于输入值得到测试用例信息;将测试用例信息与预置测试框架参照表进行匹配,确定出参考测试框架;其中,预置测试框架参照表包括多种测试框架,以及还包括多种测试框架分别对应的集成条件;集成条件至少包括集成能力、集成所需语言类型、扩展性以及维护性中的一项;在参考测试框架中,根据测试用例信息生成参考测试用例。

8、在本申请的一种实现方式中,执行参考测试用例,在测试覆盖率满足预置覆盖率阈值的情况下,确定参考测试用例为所需测试用例,具体包括:执行参考测试用例,获取测试覆盖率;将测试覆盖率与预置覆盖率阈值进行比对,在测试覆盖率小于预置覆盖率阈值的情况下,确定出未被测试覆盖的路径;针对未被测试覆盖的路径,生成新的测试用例,基于新的测试用例与参考测试用例生成新的参考测试用例,以进行测试用例生成迭代;执行新的参考测试用例,直至新的参考测试用例对应的测试覆盖率大于预置覆盖率阈值,结束迭代过程,得到所需测试用例。

9、在本申请的一种实现方式中,基于测试用例信息确定出相应的测试框架,生成参考测试用例之后,方法还包括:将参考测试用例对应的执行路径进行向量化处理;将向量化处理后的执行路径与预置缺陷数据向量进行相似度计算,以基于相似度结果确定出参考测试用例匹配的参考缺陷数据;基于匹配关系,将参考测试用例划分为多个测试用例组;基于每个测试用例组,将每个测试用例路径作为一个节点,对测试用例进行模拟执行测试用例路径,基于模拟结果,对各节点进行权重分配;基于权重分配结果与各参考缺陷数据分别对应的权重,对参考测试用例进行筛选。

10、在本申请的一种实现方式中,将参考测试用例对应的执行路径进行向量化处理,具体包括:基于各参考测试用例,构建参考测试用例集;基于孤立森林算法,确定出各参考测试用例分别对应的异常分值,基于异常分值将参考测试用例集中的异常参考测试用例进行筛除;对筛除后的各参考测试用例的路径进行特征提取,得到各参考测试用例分别对应的数据特征值;对各数据特征值进行组合,得到参考测试用例集对应的数据特征集;将各数据特征值分别在数据特征集中进行投影,得到各数据特征值分别对应的第一数据特征向量;基于数据特征的不同,对第一数据特征向量中不同数据特征进行权重分配,得到各测试用例分别对应的第二数据特征向量。

11、在本申请的一种实现方式中,通过编译器llvm对获取到的源代码进行解析,生成中间表示,具体包括:通过编译器llvm对获取到的源代码预处理;其中,预处理包括宏定义替换以及头文件导入;将预处理后的源代码进行切割,并基于切割后的源代码进行单词序列组合,以构建语法树;通过代码生成器对语法树自顶向下进行遍历,以生成中间表示。

12、本申请实施例提供一种单元测试用例生成设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:通过编译器llvm对获取到的源代码进行解析,生成中间表示;对中间表示进行代码分析与边界分析,以得到待测试单元;将输入变量替换为符号值,通过符号值对待测试单元对应的不同路径分别进行路径约束条件的采集;基于采集的路径约束条件,得到测试用例信息,基于测试用例信息确定出相应的测试框架,本文档来自技高网...

【技术保护点】

1.一种单元测试用例生成方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述对所述中间表示进行代码分析与边界分析,以得到待测试单元,具体包括:

3.根据权利要求2所述的一种单元测试用例生成方法,其特征在于,所述将输入变量替换为符号值,通过所述符号值对所述待测试单元对应的不同路径分别进行路径约束条件的采集,具体包括:

4.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述基于采集的所述路径约束条件,得到测试用例信息,基于所述测试用例信息确定出相应的测试框架,生成参考测试用例,具体包括:

5.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述执行所述参考测试用例,在测试覆盖率满足预置覆盖率阈值的情况下,确定所述参考测试用例为所需测试用例,具体包括:

6.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述基于所述测试用例信息确定出相应的测试框架,生成参考测试用例之后,所述方法还包括:

7.根据权利要求6所述的一种单元测试用例生成方法,其特征在于,所述将所述参考测试用例对应的执行路径进行向量化处理,具体包括:

8.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述通过编译器LLVM对获取到的源代码进行解析,生成中间表示,具体包括:

9.一种单元测试用例生成设备,其特征在于,该设备包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该设备执行权利要求1-8中的任一项所述的方法。

10.一种非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令能够执行权利要求1-8任一项所述的方法。

...

【技术特征摘要】

1.一种单元测试用例生成方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述对所述中间表示进行代码分析与边界分析,以得到待测试单元,具体包括:

3.根据权利要求2所述的一种单元测试用例生成方法,其特征在于,所述将输入变量替换为符号值,通过所述符号值对所述待测试单元对应的不同路径分别进行路径约束条件的采集,具体包括:

4.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述基于采集的所述路径约束条件,得到测试用例信息,基于所述测试用例信息确定出相应的测试框架,生成参考测试用例,具体包括:

5.根据权利要求1所述的一种单元测试用例生成方法,其特征在于,所述执行所述参考测试用例,在测试覆盖率满足预置覆盖率阈值的情况下,确定所述参考测试用例为所需测试用例,具体包括:

6....

【专利技术属性】
技术研发人员:刘敏姜凯赵鑫鑫薛海军
申请(专利权)人:山东浪潮科学研究院有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1