当前位置: 首页 > 专利查询>清华大学专利>正文

数据库管理系统模糊测试方法、装置及电子设备制造方法及图纸

技术编号:33534633 阅读:16 留言:0更新日期:2022-05-19 02:12
本发明专利技术提供一种数据库管理系统模糊测试方法、装置及电子设备,所述方法包括:步骤S1:基于SQL语法树,生成待测试数据库管理系统的初始SQL语句,并得到当前测试用例;步骤S2:基于当前测试用例,运行待测试数据库管理系统,并根据运行时信息动态生成新的SQL语句;步骤S3:将新的SQL语句加入到当前测试用例,重复步骤S2,直至当前测试用例的SQL语句的运行数量达到预设数量;步骤S4:收集当前测试用例被覆盖的代码分支,基于被覆盖的代码分支,确定SQL测试用例种子,并变异生成新的测试用例;步骤S5:将新的测试用例作为当前测试用例,重复执行步骤S2,直至待测试数据库管理系统运行时长达到预设时长,以完成模糊测试。通过本发明专利技术提升测试用例的有效性。升测试用例的有效性。升测试用例的有效性。

【技术实现步骤摘要】
数据库管理系统模糊测试方法、装置及电子设备


[0001]本专利技术涉及计算软件测试
,尤其涉及一种数据库管理系统模糊测试方法、装置及电子设备。

技术介绍

[0002]数据库管理系统(Database Management System,又称DBMS)用于数据的存储和查询,是数据处理分析的基础软件。
[0003]随着现代社会的不断发展,数据规模越来越大,数据分析需求也越来越多,数据库管理系统的使用也日益普遍。金融经济、生物医药、国防科工等各个领域都需要使用数据库管理系统来进行数据存储和分析。目前,除了以MySQL、Oracle和SQLite等为代表的国外传统数据管理系统在大规模使用外,国产数据库管理系统OpenGauss和OceanBase等也逐渐开始得到应用。
[0004]由于数据库管理系统执行逻辑复杂、代码量庞大、异常处理情况多样等原因,数据库管理系统的可靠性和安全性难以得到有效保证,因此可能出现代码缺陷和安全漏洞。一旦这些代码缺陷和安全漏洞被触发,就会导致数据库管理系统出现崩溃、挂起或者数据泄漏等严重问题,也容易受到攻击者的恶意攻击和破坏。因此,通过测试技术来有效发现数据库管理系统的代码缺陷和安全漏洞,以提升其可靠性和安全性,是目前业界亟待解决的重要课题。

技术实现思路

[0005]本专利技术提供一种数据库管理系统模糊测试方法、装置及电子设备,能够生成语法正确且语义正确的SQL语句,提升测试用例的有效性,从而可以准确发现数据库管理系统的代码缺陷和安全漏洞,并且避免了手动进行代码测试工作。
[0006]本专利技术提供一种数据库管理系统模糊测试方法,所述方法包括:步骤S1:基于SQL语法树,生成关于待测试数据库管理系统的初始SQL语句,并基于所述初始SQL语句得到当前测试用例;步骤S2:基于所述当前测试用例,运行所述待测试数据库管理系统,并根据运行时信息来动态生成新的SQL语句;步骤S3:将所述新的SQL语句加入到所述当前测试用例,重复步骤S2,直至所述当前测试用例的SQL语句的运行数量达到预设数量;步骤S4:收集所述当前测试用例被覆盖的代码分支,基于所述被覆盖的代码分支,确定SQL测试用例种子,并基于所述SQL测试用例种子变异生成新的测试用例;步骤S5:将所述新的测试用例作为所述当前测试用例,重复执行步骤S2,直至所述待测试数据库管理系统运行时长达到预设时长,用以完成模糊测试。
[0007]根据本专利技术提供的一种数据库管理系统模糊测试方法,在基于所述SQL语法树,生成关于待测试数据库管理系统的初始SQL语句之前,所述方法还包括:对待测试数据库管理系统的源代码进行编译,得到编译后的待测试数据库管理系统,并将所述编译后的待测试数据库管理系统作为最终的所述待测试数据库管理系统。
[0008]根据本专利技术提供的一种数据库管理系统模糊测试方法,所述对待测试数据库管理系统的源代码进行编译,得到编译后的待测试数据库管理系统,包括:基于编译器对所述待测试数据库管理系统的源代码进行编译,生成关于所述待测试数据库管理系统的中间代码文件,其中,所述中间代码文件包括代码基本块和代码分支;对所述代码基本块和所述代码分支进行插桩处理,得到插桩后待测试数据库管理系统;基于所述编译器对所述插桩后待测试数据库管理系统进行编译处理,得到编译后的待测试数据库管理系统,其中,编译后的待测试数据库管理系统为可运行的数据库管理系统。
[0009]根据本专利技术提供的一种数据库管理系统模糊测试方法,所述根据运行时信息来动态生成新的SQL语句,包括:基于所述当前测试用例,运行所述待测试数据库管理系统,得到关于所述当前测试用例的执行结果和数据库状态信息,并根据所述执行结果、所述数据库状态信息,以及所述SQL语法树动态生成所述新的SQL语句。
[0010]根据本专利技术提供的一种数据库管理系统模糊测试方法,所述基于所述被覆盖的代码分支,确定SQL测试用例种子,包括:若所述被覆盖的代码分支包括新覆盖的代码分支,则将所述当前测试用例作为所述SQL测试用例种子,并将所述SQL测试用例种子保存至种子池。
[0011]根据本专利技术提供的一种数据库管理系统模糊测试方法,在基于SQL语法树,生成关于待测试数据库管理系统的初始SQL语句之后,所述方法还包括:基于预设语法结构和预设语法规则,检测所述初始SQL语句;若所述初始SQL语句的语法结构满足所述预设语法结构,以及所述初始SQL语句的语法规则满足所述预设语法规则,则将检测后的初始SQL语句作为构成所述当前测试用例的初始SQL语句。
[0012]根据本专利技术提供的一种数据库管理系统模糊测试方法,所述数据库状态信息包括运行所述待测试数据库管理系统后得到的数据表以及对应所述数据表的数据信息,在所述得到关于所述当前测试用例的执行结果和数据库状态信息之后,所述方法还包括:基于所述当前测试用例的执行结果、所述数据表以及对应所述数据表的数据信息,确定所述当前测试用例的语义依赖关系;若所述语义依赖关系不满足预设语义依赖关系,则停止基于所述当前测试用例对所述待测试数据库管理系统进行模糊测试,且所述当前测试用例不作为所述SQL测试用例种子。
[0013]根据本专利技术提供的一种数据库管理系统模糊测试方法,在所述得到关于所述当前测试用例的执行结果和数据库状态信息之后,所述方法还包括:若检测到所述当前测试用例的执行结果出现错误,则停止基于所述当前测试用例对所述待测试数据库管理系统进行模糊测试,且所述当前测试用例不作为所述SQL测试用例种子。
[0014]根据本专利技术提供的一种数据库管理系统模糊测试方法,在所述得到关于所述当前测试用例的执行结果和数据库状态信息之前,所述方法还包括:若检测到所述待测试数据库管理系统在运行过程的运行信息和日志文件内容存在内存缺陷和/或语义缺陷,则停止基于所述当前测试用例对所述待测试数据库管理系统进行模糊测试,且所述当前测试用例不作为所述SQL测试用例种子。
[0015]本专利技术还提供一种数据库管理系统模糊测试装置,所述装置包括:生成模块,用于基于SQL语法树,生成关于待测试数据库管理系统的初始SQL语句,并基于所述初始SQL语句得到当前测试用例;运行模块,用于基于所述当前测试用例,运行所述待测试数据库管理系
统,并根据运行时信息来动态生成新的SQL语句;处理模块,将所述新的SQL语句加入到所述当前测试用例,重复执行所述运行模块执行的步骤,直至所述当前测试用例的SQL语句的运行数量达到预设数量;收集模块,用于收集所述当前测试用例被覆盖的代码分支,基于所述被覆盖的代码分支,确定SQL测试用例种子,并基于所述SQL测试用例种子变异生成新的测试用例;测试模块,用于将所述新的测试用例作为所述当前测试用例,重复执行所述运行模块执行的步骤,直至所述待测试数据库管理系统运行时长达到预设时长,用以完成模糊测试。
[0016]本专利技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据库管理系统模糊测本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库管理系统模糊测试方法,其特征在于,所述方法包括:步骤S1:基于SQL语法树,生成关于待测试数据库管理系统的初始SQL语句,并基于所述初始SQL语句得到当前测试用例;步骤S2:基于所述当前测试用例,运行所述待测试数据库管理系统,并根据运行时信息来动态生成新的SQL语句;步骤S3:将所述新的SQL语句加入到所述当前测试用例,重复步骤S2,直至所述当前测试用例的SQL语句的运行数量达到预设数量;步骤S4:收集所述当前测试用例被覆盖的代码分支,基于所述被覆盖的代码分支,确定SQL测试用例种子,并基于所述SQL测试用例种子变异生成新的测试用例;步骤S5:将所述新的测试用例作为所述当前测试用例,重复执行步骤S2,直至所述待测试数据库管理系统运行时长达到预设时长,用以完成模糊测试。2.根据权利要求1所述的数据库管理系统模糊测试方法,其特征在于,在基于所述SQL语法树,生成关于待测试数据库管理系统的初始SQL语句之前,所述方法还包括:对待测试数据库管理系统的源代码进行编译,得到编译后的待测试数据库管理系统,并将所述编译后的待测试数据库管理系统作为最终的所述待测试数据库管理系统。3.根据权利要求2所述的数据库管理系统模糊测试方法,其特征在于,所述对待测试数据库管理系统的源代码进行编译,得到编译后的待测试数据库管理系统,包括:基于编译器对所述待测试数据库管理系统的源代码进行编译,生成关于所述待测试数据库管理系统的中间代码文件,其中,所述中间代码文件包括代码基本块和代码分支;对所述代码基本块和所述代码分支进行插桩处理,得到插桩后待测试数据库管理系统;基于所述编译器对所述插桩后待测试数据库管理系统进行编译处理,得到编译后的待测试数据库管理系统,其中,编译后的待测试数据库管理系统为可运行的数据库管理系统。4.根据权利要求1所述的数据库管理系统模糊测试方法,其特征在于,所述根据运行时信息来动态生成新的SQL语句,包括:基于所述当前测试用例,运行所述待测试数据库管理系统,得到关于所述当前测试用例的执行结果和数据库状态信息,并根据所述执行结果、所述数据库状态信息,以及所述SQL语法树动态生成所述新的SQL语句。5.根据权利要求1或3所述的数据库管理系统模糊测试方法,其特征在于,所述基于所述被覆盖的代码分支,确定SQL测试用例种子,包括:若所述被覆盖的代码分支包括新覆盖的代码分支,则将所述当前测试用例作为所述SQL测试用例种子,并将所述SQL测试用例种子保存至种子池。6.根据权利要求1所述的数据库管理系统模糊测试方法,其特征在于,在基于SQL语法树,生成关于待测试数据库管理系统的初始SQL语句之后,所述方法还包括:基于预设语法结构和预设语法规则,检测所述初始SQL语句;若所述初始SQL语句的语法结构满足所述预设语法结构,以及所述初始SQL语句的语法规则满足所述预设语法规则,则将检测后的初始SQL语句作为构成所述当前测试...

【专利技术属性】
技术研发人员:白家驹江祖铭胡事民
申请(专利权)人:清华大学
类型:发明
国别省市:

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

1