【技术实现步骤摘要】
一种单元测试方法、系统、电子设备及存储介质
[0001]本专利技术涉及计算机程序测试
,具体而言,涉及一种单元测试方法、系统、电子设备及存储介质。
技术介绍
[0002]单元测试是对由源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能,单元测试检查每一个控制结构的分支以确保完全覆盖和最大可能的错误检查。
[0003]以C/C++语言开发的软件系统为例,在进行单元测试时,传统上,主要有两种测试方法,一种是人工单元测试,测试人员手动编写待测函数的驱动函数,构造特定的输入,对桩函数等都需要进行手动的模拟构建,人工单元测试要求测试人员对函数所实现的功能,输入的边界值有全面的掌握,费时费力,在构造好测试用例后,需要手动编译运行,然后人工统计运行的信息,做出反馈。另一种是半自动化单元测试,测试人员采用自动生成测试用例的方法对待测函数进行分析,但是该方法生成的测试用例可能具有随机性,对待测函数边界行为的探索能力有限,完备性不够,且其对于桩函数的自动化做的不够好,并不能适当的处理未定义的桩函数,很大 ...
【技术保护点】
【技术特征摘要】
1.一种单元测试方法,其特征在于,包括:S10:获取待测程序;S20:解析所述待测程序,提取所述待测程序的待测函数及所述待测函数的基础信息,并利用开源框架LLVM分析所述待测程序,将待测程序编译成LLVM中间码;S30:根据每个所述待测函数的基础信息,对所述待测函数进行代码插桩,生成驱动函数;S40:分析所述驱动函数,生成用于单元测试所述待测函数的测试用例;S50:执行所述测试用例,反馈单元测试结果。2.根据权利要求2所述的单元测试方法,其特征在于,所述“对所述待测函数进行代码插桩,生成驱动函数”包括:分析所述LLVM中间码,根据所述待测函数的函数参数、全局变量和/或局部静态变量进行代码插桩,生成调用所述待测函数的适用于符号执行的驱动函数,所述驱动函数作为符号执行引擎的输入;并将每个所述待测函数生成一个所述驱动函数进行符号执行;标记所述待测函数的函数参数、全局变量和/或局部静态变量中影响所述待测函数行为的变量,以作为所述符号执行引擎自动符号化的依据。3.根据权利要求2所述的单元测试方法,其特征在于,所述“分析所述驱动函数,生成用于单元测试所述待测函数的测试用例”包括:通过混合符号执行技术分析所述驱动函数;将所述待测函数的函数参数、全局变量和/或局部静态变量中已标记的变量进行符号化,赋予未标记的变量在所述待测函数中初始化时的真实值,利用所述符号执行引擎解释执行所述待测程序,生成一组所述测试用例。4.根据权利要求3所述的单元测试方法,其特征在于,所述“执行所述测试用例,反馈单元测试结果”包括:将所述测试用例封装成测试驱动程序,并在解释器中将所述测试驱动程序声明作为解释器的内嵌函数;单元测试结果包括测试覆盖率信息、指令的行数、调用指令调用的次数和是...
【专利技术属性】
技术研发人员:任飞,杨智霖,谢辉,
申请(专利权)人:湖南泛联新安信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。