技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种单元测试用例生成方法、设备及介质与流程  >  正文

一种单元测试用例生成方法、设备及介质与流程

  • 国知局
  • 2024-10-09 16:37:31

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

背景技术:

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

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

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

技术实现思路

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

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

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

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

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

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

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

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

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

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

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

12、本技术实施例提供一种单元测试用例生成设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:通过编译器llvm对获取到的源代码进行解析,生成中间表示;对中间表示进行代码分析与边界分析,以得到待测试单元;将输入变量替换为符号值,通过符号值对待测试单元对应的不同路径分别进行路径约束条件的采集;基于采集的路径约束条件,得到测试用例信息,基于测试用例信息确定出相应的测试框架,生成参考测试用例;执行参考测试用例,在测试覆盖率满足预置覆盖率阈值的情况下,确定参考测试用例为所需测试用例。

13、本技术实施例提供的一种非易失性计算机存储介质,存储有计算机可执行指令,计算机可执行指令设置为:通过编译器llvm对获取到的源代码进行解析,生成中间表示;对中间表示进行代码分析与边界分析,以得到待测试单元;将输入变量替换为符号值,通过符号值对待测试单元对应的不同路径分别进行路径约束条件的采集;基于采集的路径约束条件,得到测试用例信息,基于测试用例信息确定出相应的测试框架,生成参考测试用例;执行参考测试用例,在测试覆盖率满足预置覆盖率阈值的情况下,确定参考测试用例为所需测试用例。

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

本文地址:https://www.jishuxx.com/zhuanli/20240929/313591.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。