本申请涉及模糊测试,特别是涉及一种数据库集群模糊测试方法、系统、计算机设备和存储介质。
背景技术:
1、数据库的模糊测试的主要目标是检测和发现数据库系统中的潜在漏洞、错误和异常行为,以提高数据库的安全性和稳定性。数据库的模糊测试技术如下:
2、测试程序通过数据库系统提供的各种接口和协议与数据库建立通信连接,然后由模糊测试器生成大量随机或半随机的输入数据,通常是数据库语句,接下来调用数据库的接口进行模拟测试。在这个过程中,模糊测试框架实时监控数据库系统的响应,如果数据库在处理模糊输入遇到异常、崩溃、错误或其他未预期的行为,则会记录下这些异常情况,并记录下每轮测试中的代码覆盖率信息。在下一轮迭代中,根据代码覆盖率和异常情况对输入数据进行变异,从而达到尽可能全面的覆盖。
3、然而,发明人认识到,现有的技术只能应用在单个数据库节点上,启动单个测试节点,在本地的共享内存中记录每轮测试的代码覆盖率信息,或者并行地启动多个测试节点来测试单个数据库节点,但对于大量的数据库集群节点,无法进行统一的进程管理、模糊测试和覆盖率统计。因此,在面对分布式的数据库集群时,现有技术显得有些捉襟见肘。
技术实现思路
1、本申请提供一种数据库集群模糊测试方法、系统、计算机设备和存储介质,旨在解决现有模糊测试技术只能应用在单个数据库节点上,无法应用在数据库集群节点的的技术问题。
2、第一方面,一种数据库集群模糊测试方法,包括:
3、s1,对于数据库集群中的每个节点,创建相应的子进程管理器和子进程观察器,并对于每个子进程管理器,创建相应的子进程管理组;
4、s2,将所有的子进程管理器统一注册到总多进程管理器中,将所有的子进程观察器统一注册到总多进程观察器中,将所有的子进程管理组统一注册到总多进程管理组中;
5、s3,利用模糊测试器生成模糊测试用例,启动所述总多进程管理器;
6、s4,将所述模糊测试用例发送给所述总多进程管理器,通过所述总多进程管理器向所有子进程管理器发送控制指令,使所有子进程管理器利用所述模糊测试用例在相应节点上启动测试进程、执行一轮模糊测试;
7、s5,在当前模糊测试过程中,利用每个子进程管理组记录和管理相应子进程管理器中的模糊测试异常信息,并将所有子进程管理器记录和管理的模糊测试异常信息,在所述总多进程管理组中进行汇总;
8、s6,在当前模糊测试过程中,利用每个子进程观察器分析得到相应节点的代码覆盖率信息,并将所有子进程观察器得到的代码覆盖率信息,在所述总多进程观察器中进行汇总;
9、s7,将所述总多进程管理组中汇总的模糊测试异常信息和所述总多进程观察器中汇总的代码覆盖率信息发送给变异器,使变异器根据汇总的模糊测试异常信息和代码覆盖率信息对所述模糊测试用例进行变异;
10、s8,重复执行步骤s4-s7,进行多轮模糊测试。
11、上述方案中,可选地,所述模糊测试异常信息包括测试进程在测试过程中产生的crash信息和运行日志。
12、上述方案中,可选地,每个子进程观察器在分析得到相应节点的代码覆盖率信息后,将代码覆盖率信息映射到各自的内存中。
13、上述方案中,可选地,对于数据库集群中包含单个节点的集群节点,创建的子进程管理器为一个单进程管理器,创建的子进程观察器为一个单进程观察器;对于数据库集群中包含多个节点的集群节点,创建的子进程管理器为一个多进程管理器,创建的子进程观察器为一个多进程观察器。
14、上述方案中,可选地,所述模糊测试器为american fuzzy lop或american fuzzylop plus plus。
15、上述方案中,可选地,通过配置文件和相应启动脚本,启动所述总多进程管理器。
16、第二方面,一种数据库集群模糊测试系统,包括:
17、总多进程管理器,所述总多进程管理器中注册有多个子进程管理器;每个子进程管理器对应数据库集群中的一个节点,每个所述子进程管理器用于管理测试进程的生命周期;所述总多进程管理器用于管理所有的子进程管理器;
18、总多进程观察器,所述总多进程观察器中注册有多个子进程观察器;每个子进程观察器对应数据库集群中的一个节点,每个子进程观察器用于分析得到每轮模糊测试过程中相应节点的代码覆盖率信息,每个所述子进程观察器将代码覆盖率信息映射到各自的内存中;所述总多进程观察器用于汇总所有子进程观察器得到的代码覆盖率信息,并将汇总的代码覆盖率信息发送给变异器;
19、总多进程管理组,所述总多进程管理组中注册有多个子进程管理组;每个子进程管理组对应一个子进程管理器,每个子进程管理组用于记录和管理相应子进程管理器的模糊测试异常情况;所述总多进程管理组用于汇总所有子进程管理器记录和管理的模糊测试异常信息,并将汇总的模糊测试异常信息发送给变异器。
20、第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现第一方面中任一项所述方法的步骤。
21、第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述方法的步骤。
22、相比现有技术,本申请至少具有以下有益效果:
23、本申请实施例在传统数据库模糊测试的基础上,结合分布式架构,提出了基于集群环境的数据库模糊测试方法;本申请通过创建子进程管理器、子进程观察器和子进程管理组,并将所有的子进程管理器统一注册到总多进程管理器中,将所有的子进程观察器统一注册到总多进程观察器中,将所有的子进程管理组统一注册到总多进程管理组中,使得能够利用总多进程管理器对所有子进程管理器进行管理,利用总多进程管理组汇总所有子进程管理器组的运行日志和crash信息发送给变异器,利用总多进程观察器统计所有注册过的观察器的覆盖率信息,形成汇总的覆盖率发送给变异器,以进行下一轮测试;从而能够对数据库集群中的各个节点实现统一的测试进程管理、模糊测试和覆盖率统计;相比传统的数据库单节点模糊测试,本发明开辟了集群模糊测试的新方向,能够适配海量数据库集群上的测试,能将模糊测试的技术应用于更多的实际场景,发现更多的数据库缺陷和安全漏洞,提升数据库的安全性,减少潜在的风险。
24、本申请实施例控制了不同的节点执行出的覆盖率信息,映射到各自独立管理的内存空间中,保证新发现的路径不受其他进程的影响,进而产生正确的覆盖率反馈。
1.一种数据库集群模糊测试方法,其特征在于,包括:
2.根据权利要求1所述的数据库集群模糊测试方法,其特征在于,所述模糊测试异常信息包括测试进程在测试过程中产生的crash信息和运行日志。
3.根据权利要求1所述的数据库集群模糊测试方法,其特征在于,每个子进程观察器在分析得到相应节点的代码覆盖率信息后,将代码覆盖率信息映射到各自的内存中。
4.根据权利要求1所述的数据库集群模糊测试方法,其特征在于,对于数据库集群中包含单个节点的集群节点,创建的子进程管理器为一个单进程管理器,创建的子进程观察器为一个单进程观察器;对于数据库集群中包含多个节点的集群节点,创建的子进程管理器为一个多进程管理器,创建的子进程观察器为一个多进程观察器。
5.根据权利要求1所述的数据库集群模糊测试方法,其特征在于,所述模糊测试器为american fuzzy lop或americanfuzzy lop plus plus。
6.根据权利要求1所述的数据库集群模糊测试方法,其特征在于,通过配置文件和相应启动脚本,启动所述总多进程管理器。
7.一种数据库集群模糊测试系统,其特征在于,包括:
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述方法的步骤。