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

基于差分模糊测试的数据库管理系统测试方法和测试系统技术方案

技术编号:35104466 阅读:16 留言:0更新日期:2022-10-01 17:13
本发明专利技术公开一种基于差分模糊测试的数据库管理系统测试方法和测试系统,旨在通过对数据库管理系统的源代码进行修改,使数据库管理系统能够生成多个不同的查询计划,从而通过对比执行不同查询计划得出的结果而判断数据库管理系统是否存在缺陷。该方法主要包含对数据库管理系统的修改方法和判断数据库管理系统是否存在缺陷的准则两部分。本发明专利技术可以为数据库管理系统开发和测试过程提供支持,以减少数据库管理系统中存在的缺陷,进而减少上层依赖数据库管理系统而开发的软件的缺陷,提高软件的安全性和可用性。的安全性和可用性。的安全性和可用性。

【技术实现步骤摘要】
基于差分模糊测试的数据库管理系统测试方法和测试系统


[0001]本专利技术属于软件测试领域,具体涉及一种基于差分模糊测试的数据库管理系统测试方法和测试系统。

技术介绍

[0002]目前,关系型数据库已被广泛使用。关系型数据库由数据库管理系统(Database Management System,DBMS)管理,数据库管理系统是一种通过结构化查询语言(Structured Query Language,SQL)操纵和管理数据库的软件,被广泛用于建立、使用和维护数据库,能够高效地存储和检索数据。
[0003]数据库管理系统涉及众多对数据库管理的功能,不可避免地包含一些错误,这些错误潜在地威胁到了使用这些数据库管理系统的软件安全,因此,对DBMS进行测试,寻找其中未被发现的错误,可以为其上层的众多软件提供更安全、可靠的服务,进而保障软件的可用性和可靠性。
[0004]当前,已有众多针对DBMS的测试工作,然而,大部分测试工作聚焦于寻找数据库引擎中的断言错误、崩溃错误和未定义行为,这些错误相对容易确认,因为这类错误通常会触发导致软件运行的异常。但是,导致数据库得出错误查询结果的错误,即逻辑上存在问题的错误,如查询结果缺少一行等异常,则相对难以通过自动化的测试发现,因为此类异常通常涉及到DBMS的查询处理器,而目前尚缺少判断DBMS查询结果正确性的方法。
[0005]1998年,Don Slutzti提出了一种通过差分模糊测试来寻找此类逻辑缺陷的方法,该方法通过对比不同的数据库管理系统执行相同查询的结果,来确定是否发生了异常。尽管这一方法确实找到了一些错误,但是这种方法具有很大的局限性。虽然所有的DBMS都支持SQL语言,但却都拥有自己的特性,这一方法能够测试不同的DBMS实现的共性部分,而无法针对不同DBMS的特性部分进行测试。此外,该方法也无法发现多个DBMS共同拥有的,可以使执行结果产生错误的底层的错误。
[0006]2019年,Manuel Rigger团队提出了一系列有效的、通用的针对同一数据库管理系统寻找逻辑缺陷的方法,包括“基准行查询生成”、“去优化”等,并根据这些方法开发了对应的测试工具。这一系列的方法理论基础仍然为“差异对比”。例如,在“基准行查询生成”方法中,测试工具首先选取一行,并生成预期包含该结果行的查询语句。通过检查结果集是否包含该行,来判断数据库引擎是否发生了预期之外的逻辑缺陷。而在“去优化”的方法中,测试工具生成两条逻辑等价,但优化情况不同的查询语句,通过比较数据库管理系统执行两条查询语句得到的结果集行数是否相同,来确定是否发生了预期外逻辑缺陷。
[0007]Manuel Rigger所提出的系列方法与测试用例的生成方法都是强相关的,每一种方法都对应着一种不同的测试准则,对应着一种不同的测试用例生成规则。因此,该方法对测试用例生成规则的要求较高,当不断使用一类固定的构造方法产生的测试用例进行测试时,会逐渐难以找到更多新的错误,仍具有很大的局限性。
[0008]在现已公开的专利技术专利,如“基于数据库管理系统模糊测试的覆盖率分析方法及
系统”(CN202111486228.2)中,该专利技术仅能够找到导致数据库管理系统崩溃的缺陷,而不能找到使数据库产生错误结果的缺陷。而在如“一种数据库系统应用基准测试规范设计方法和测试方法”(CN202011164926.6)等专利技术中,则是针对具体应用场景和需求对数据库展开的测试,与测试数据库管理系统本身无关。

技术实现思路

[0009]针对现有技术的不足,本专利技术提供一种基于差分模糊测试的数据库管理系统测试方法和测试系统,该方法通过修改DBMS的源代码,使其对于一条查询语句,能够生成并执行多个查询计划。随后,通过对比不同查询计划所得出的结果是否相同,判断是否发生预期外逻辑缺陷。
[0010]本专利技术的目的通过如下的技术方案来实现:
[0011]一种基于差分模糊测试的数据库管理系统测试方法,该方法包括:
[0012]对数据库管理系统的源代码进行修改,使数据库管理系统能够支持多查询计划;
[0013]对数据库管理系统进行差分模糊测试,具体包括:
[0014](1)生成测试用例;
[0015](2)执行测试用例;
[0016](3)比对结果差异;
[0017](4)测试用例简化;
[0018](5)白名单过滤。
[0019]进一步地,对数据库管理系统的源代码进行修改,使数据库管理系统能够支持多查询计划,有如下三种方式:改变多表连接的顺序、改变单表的访问方式和开启关闭查询优化。
[0020]进一步地,所述改变多表连接的顺序具体为:
[0021]定位数据库管理系统源代码中处理多表查询嵌套顺序的函数,将其中因查询代价而剪枝的部分删去,使其在多表查询时查询计划能够采用多种顺序。
[0022]进一步地,所述改变单表的访问方式具体为:
[0023]定位数据库管理系统源代码中处理决定单表访问方式的函数,并将其中因查询代价而舍弃计划的部分删去,使其在执行查询语句时能支持不同的单表扫描方式。
[0024]进一步地,所述开启关闭查询优化具体为:
[0025]定位数据库管理系统源代码中对查询语句进行结构优化(如等值传递优化)和扫描优化(如Covering

Index优化、Skip

Scan优化等)的部分,通过增加条件判断语句为其增加开关,使其能支持开启和关闭优化两种执行路径。
[0026]进一步地,所述生成测试用例具体包括:通过预设的语句生成规则生成符合DBMS输入标准的测试用例,所述测试用例包括状态创建语句和查询语句;
[0027]所述执行测试用例具体包括:将生成的测试用例输入到源代码修改后的数据管理系统中,并监测数据库管理系统的状态,保存数据库管理系统执行查询语句的结果集。
[0028]进一步地,所述比对结果差异具体为:
[0029]通过对比不同查询计划得出的结果,当结果不一致时,则认为可能触发了缺陷。
[0030]进一步地,所述测试用例简化具体为:
[0031]将结果不一致的测试用例按照不同粒度选取测试用例的其中一部分,将其删去之后再次执行,如果仍然发生异常,则说明该删除部分不是导致发生异常的关键,并将其永久删去;如果不再发生异常,则说明该删除部分是导致发生异常的关键,将其保留;以此去除与异常发生无关的部分。
[0032]进一步地,所述白名单过滤具体为:通过预设的过滤标准对常见的非缺陷因素导致结果差异的测试用例进行区分,若为非缺陷因素导致,则将其分到低优先级队列中存储,否则,将其分配到正常优先级队列中存储;最后再人工对由缺陷因素导致的测试案例进行进一步检查,选出其中非错误因素导致的异常,总结这些特征,并将其加入白名单,在后续测试中将此类情况以较低优先级去确认;否则通过人工对用例进行深度简化,并向开发者报告。
[0033]一种实现上述的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于差分模糊测试的数据库管理系统测试方法,其特征在于,该方法包括:对数据库管理系统的源代码进行修改,使数据库管理系统能够支持多查询计划;对数据库管理系统进行差分模糊测试,具体包括:(1)生成测试用例;(2)执行测试用例;(3)比对结果差异;(4)测试用例简化;(5)白名单过滤。2.根据权利要求1所述的基于差分模糊测试的数据库管理系统测试方法,其特征在于,对数据库管理系统的源代码进行修改,使数据库管理系统能够支持多查询计划,有如下三种方式:改变多表连接的顺序、改变单表的访问方式和开启关闭查询优化。3.根据权利要求2所述的基于差分模糊测试的数据库管理系统测试方法,其特征在于,所述改变多表连接的顺序具体为:定位数据库管理系统源代码中处理多表查询嵌套顺序的函数,将其中因查询代价而剪枝的部分删去,使其在多表查询时查询计划能够采用多种顺序。4.根据权利要求2所述的基于差分模糊测试的数据库管理系统测试方法,其特征在于,所述改变单表的访问方式具体为:定位数据库管理系统源代码中处理决定单表访问方式的函数,并将其中因查询代价而舍弃计划的部分删去,使其在执行查询语句时能支持不同的单表扫描方式。5.根据权利要求2所述的基于差分模糊测试的数据库管理系统测试方法,其特征在于,所述开启关闭查询优化具体为:定位数据库管理系统源代码中对查询语句进行结构优化和扫描优化的部分,通过增加条件判断语句为其增加开关,使其能支持开启和关闭优化两种执行路径。6.根据权利要求1所述的基于差分模糊测试的数据库管理系统测试方法,其特征在于,所述生成测试用例具体包括:通过预设的语句生成规则生成符合DBMS输入标准的测试用例,所述测试用例包括状态创建语句和查询语句;所述执行测试用例具体包括:将生成的测试用例输入到源代码修改后的数据管理系统中,并监测数据库管理系统的状态,保存数据库管理系统执行查询语句的结果集。7.根据权利要求1所述的基于差分模糊测试的数据库管理系统测试方法,其特征在于,所述比对结果差异具体为:通过对比不同查询计划得出的结果,当结果不一致时,则认为可能触发了缺陷。8.根据权利要求7所述的基于差分模糊测试的数据库管理系统测试方法,其特征在于,所述测试用例简化具体为...

【专利技术属性】
技术研发人员:周亚金王克李嘉奇
申请(专利权)人:浙江大学
类型:发明
国别省市:

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

1