[发明专利]一种支持自动化检测程序缺陷的方法和系统有效
申请号: | 202210009142.9 | 申请日: | 2022-01-06 |
公开(公告)号: | CN114036072B | 公开(公告)日: | 2022-04-08 |
发明(设计)人: | 任飞;孙文川;肖剑明 | 申请(专利权)人: | 湖南泛联新安信息科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F11/07 |
代理公司: | 长沙市护航专利代理事务所(特殊普通合伙) 43220 | 代理人: | 张洁 |
地址: | 410005 湖南省长沙市开福区伍家岭街道*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 支持 自动化 检测 程序 缺陷 方法 系统 | ||
本发明公开了一种支持自动化检测程序缺陷的方法和系统,包括获取待测试程序,按照预设的程序完备配置原则给待测试程序配置信息得到完备后的待测试程序;分析完备后的待测试程序,解析并提取待测函数和待测函数信息,并将完备后的待测试程序编译成LLVM中间码;分析LLVM中间码得到中间码指令上的附带信息,根据附带信息和待测函数信息对待测函数进行代码插桩,生成符号执行驱动程序;通过执行分析技术分析符号执行驱动程序,生成待测试程序的触发缺陷测试数据;解释器实际执行缺陷测试数据,输出执行结果得到待测试程序的缺陷测试结果。无需任何人工干预,大大减少了缺陷测试的工作量,保证系统在进行测试时的通用性和自动化程度。
技术领域
本发明属于计算机技术领域,尤其涉及一种支持自动化检测程序缺陷的方法和系统。
背景技术
目前,对软件系统进行缺陷测试时,传统的测试方法对人员技术水平要求高,工作量大,且对于某些超出语言标准的编译器特性支持性不够完善,测试系统的兼容扩展性不尽人意,现有缺陷查找与验证技术自动化程度不够高和通用性弱,因此亟需一种可自动化检测程序缺陷的方法。
发明内容
针对以上技术问题,本发明提供一种支持自动化检测程序缺陷的方法和系统。
本发明解决其技术问题采用的技术方案是:
一种支持自动化检测程序缺陷的方法,方法包括以下步骤:
步骤S100:获取待测试程序,按照预设的程序完备配置原则给待测试程序配置信息得到完备后的待测试程序;
步骤S200:分析完备后的待测试程序,解析并提取待测函数和待测函数信息,并将完备后的待测试程序编译成LLVM中间码;
步骤S300:分析LLVM中间码得到中间码指令上的附带信息,根据附带信息和待测函数信息对待测函数进行代码插桩,生成符号执行驱动程序;
步骤S400:通过执行分析技术分析符号执行驱动程序,生成待测试程序的触发缺陷测试数据;
步骤S500:解释器实际执行缺陷测试数据,输出执行结果得到待测试程序的缺陷测试结果。
优选地,步骤S200中的待测函数信息至少包括待测函数的函数名、代码行数统计信息、分支统计信息、圈复杂度、控制流信息、影响待测函数行为的函数参数、全局变量和局部静态变量。
优选地,步骤S200包括:
步骤S210:分析完备后的待测试程序获取完备后的待测试程序中的关键字;
步骤S220:当根据关键字判断对应的语言不在预设的编译环境的方言范围内时,采用拓展开源框架Clang的方式对待测试程序进行兼容后,解析并提取待测函数和待测函数信息,并将完备后的待测试程序编译成LLVM中间码;当根据关键字判断对应的语言在预设的编译环境的方言范围内时,解析并提取待测函数和待测函数信息,并将完备后的待测试程序编译成LLVM中间码。
优选地,步骤S300包括:
步骤S310:分析LLVM中间码得到中间码指令上的附带信息;
步骤S320:根据影响待测函数行为的函数参数、全局变量和局部静态变量进行代码插桩,插桩的过程中,将影响函数行为的变量的名称和类型添加到附带信息中进行标记,生成调用待测函数的符号执行驱动函数。
优选地,步骤S400包括:
步骤S410:将标记的变量进行符号化,没有标记的变量给予其在待测函数中初始化时的真实值,得到符号化后的驱动函数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南泛联新安信息科技有限公司,未经湖南泛联新安信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210009142.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种模拟复合载荷条件下的力磁耦合测试装置
- 下一篇:一种人源化抗体及其应用