一种数据库兼容性测试方法及装置制造方法及图纸

技术编号:36806350 阅读:11 留言:0更新日期:2023-03-09 00:17
本发明专利技术提供了一种数据库兼容性测试方法及装置,包括:捕获业务系统与其后端数据库之间的网络通信流量,以获取业务系统发送给后端数据库的SQL语句;将捕获到的SQL语句转发到待测试数据库;分别记录后端数据库和待测试数据库对不同类型SQL语句的执行信息;对比上述两个数据库的执行信息,定位待测试数据库执行失败的SQL语句,对相应SQL语句进行改写,随后将改写后的SQL语句和所述不同类型SQL语句中未被改写的SQL语句转发给待测试数据库,定位待测试数据库执行耗时相对较长的SQL语句,进行优化。本发明专利技术能够在不影响业务系统正常运行的情况下对待测试数据库进行兼容性测试,使得优化后的待测试数据库能够直接代替所述后端数据库。据库。据库。

【技术实现步骤摘要】
一种数据库兼容性测试方法及装置


[0001]本专利技术属于数据库测试领域,更具体地,涉及一种数据库兼容性测试方法及装置。

技术介绍

[0002]生产环境运行的业务系统后端数据库需要进行版本升级或者切换到其他类型的数据库时,业务系统执行的结构化查询(Structured Query Language,SQL)语句在不同的数据库上可能存在一定的兼容性问题,不能直接用来替换业务系统后端数据库,需要用业务系统执行的SQL语句在待测试数据库上进行测试,定位出不兼容的SQL语句,并将SQL语句替换成待测试数据库支持的语法形式,最后将业务系统的不兼容的SQL改写替换,在待测试数据库上进行压力测试。
[0003]一种现有数据库兼容性测试方法在测试环境下部署一套测试业务系统与待替换数据库,在生产环境业务系统前部署一套流量复制工具,通过流量复制工具将用户对正常业务系统的流量拷贝一份用于测试业务系统。但是该测试方法对生产环境的网络拓扑结构改动较大,可能导致原始正常业务系统无法正常运行;生产环境的流量往往是比较大的,运行过程中会记录大量的日志,不兼容的SQL语句只能通过日志进行排查,费时费力。
[0004]另一种现有数据库兼容性测试方法直接在测试环境部署一套测试业务系统与待替换数据库,通过自定义的测试数据对测试业务系统进行单元测试,接口测试,集成测试,性能测试。但是该测试方法的测试数据都是自己定义的,测试数据与实际生产环境上的数据存在差异,当测试完替换数据库上线后,在实际生产流量的冲击下,可能会出现各种难以预料的问题,例如测试环境数据量较小测试不出性能问题;测试数据与实际数据与实际数据不一致测试不到各种数据场景下的正确性等。

技术实现思路

[0005]针对现有技术的缺陷,本专利技术的目的在于提供一种数据库兼容性测试方法及装置,旨在解决现有数据库兼容性测试方法对业务系统的网络拓扑改动较大,导致原业务系统无法正常运行,或自定义测试数据对数据库测试,虽然不影响业务系统但是测试数据与业务系统数据存在差异导致测试完的数据库不可靠的问题。
[0006]为实现上述目的,第一方面,本专利技术提供了一种数据库兼容性测试方法,包括如下步骤:
[0007]捕获业务系统与其后端数据库之间的网络通信流量,以获取业务系统发送给后端数据库的各种不同类型的结构化查询语言SQL语句;
[0008]将捕获到的各种不同类型的SQL语句按照捕获的先后顺序转发到待测试数据库,并指示待测试数据库执行收到的SQL语句;
[0009]分别记录所述后端数据库和待测试数据库对不同类型SQL语句的执行信息;所述执行信息包括:SQL语句是否执行成功、SQL语句执行耗时以及SQL语句执行失败时的错误信息;
[0010]对比上述两个数据库的执行信息,对待测试数据库执行失败且执行失败原因为语法报错的SQL语句进行改写,以便改写后的SQL语句符合待测试数据库的语法规范;并基于改写后的SQL语句确定待测试数据库执行耗时相对较长的SQL语句,对其进行优化,以在不影响业务系统正常运行的情况下对待测试数据库进行兼容性测试,使得优化后的待测试数据库能够直接代替所述后端数据库。
[0011]可以理解的是,本专利技术中提到的“上述两个数据库”指的是待测试数据库和后端数据库,本专利技术将不再对此做特别说明。
[0012]在一个可选的示例中,对SQL语句进行改写和优化,具体为:
[0013]对比上述两个数据库的执行信息,定位待测试数据库执行失败的SQL语句,根据SQL语句执行失败时的错误信息确定执行失败原因是否为语法报错,若为语法报错且相应SQL语句能够进行改写,则对相应SQL语句进行改写,以便改写后的SQL语句符合待测试数据库的语法规范,随后将改写后的SQL语句和所述不同类型SQL语句中未被改写的SQL语句转发给待测试数据库,并记录待测试数据库对新收到SQL语句的执行信息;
[0014]将后端数据库对所述不同类型SQL语句的执行信息与待测试数据库对新收到SQL语句的执行信息进行相应的一一对比,定位两个数据库均执行成功且待测试数据库执行耗时相对较长的SQL语句,对执行耗时较长的SQL语句进行优化,直至待测试数据库的执行耗时减去后端数据库执行耗时的差值不大于预设时差,以在不影响业务系统正常运行的情况下对待测试数据库进行兼容性测试,使得优化后的待测试数据库能够直接代替所述后端数据库。
[0015]在一个可选的示例中,该方法还包括如下步骤:
[0016]在完成上述兼容性测试后,按照上述对SQL语句的改写和优化的结果将业务系统发送给后端数据库的SQL语句进行适应性更新,并将所述后端数据库替换为待测试数据库,以将待测试数据库正式投入使用。
[0017]在一个可选的示例中,所述各种不同类型的SQL语句包括:数据查询语句、数据操作语句、数据定义语句、数据控制语句和事务控制语句中的至少一类SQL语句;该方法还包括如下步骤:
[0018]对执行耗时较长的SQL语句进行优化后,将待测试数据库新收到SQL语句中未被优化的SQL语句和优化得到的SQL语句作为查询压力测试的原始SQL语句集;
[0019]将压力测试原始SQL语句集中数据查询语句的数量按照预设倍数进行放大,其他类型的SQL语句保持数量不变,得到查询压力测试的最终SQL语句集;
[0020]将所述最终SQL语句集转发给待测试数据库,以便获取待测数据库在数据查询语句数量放大后的执行情况,完成对待测试数据库的查询压力测试。
[0021]在一个可选的示例中,所述捕获业务系统与其后端数据库之间的网络通信流量,将捕获到的各种不同类型的SQL语句按照捕获的先后顺序转发到待测试数据库,具体为:
[0022]捕获业务系统与其后端数据库之间的网络通信流量,确定对应的网络通信数据包;
[0023]解析所述网络通信数据包确定对应的SQL语句和数据库连接信息;所述数据库连接信息指示后端数据库的哪个数据库连接执行对应的SQL语句且指示所述SQL语句由哪个用户给出;
[0024]查询待测试数据库是否绑定其收到SQL语句对应的用户,若未绑定,则根据所述数据库连接信息在后端数据库查询对应的用户,若查询到对应用户,则指示待测试数据库绑定对应用户,若未查询到对应用户,则指示待测数据库用预设默认用户进行绑定;
[0025]将解析的SQL语句按照对应的数据库连接信息转发至与其后端执行数据库对应的待测试数据库;
[0026]第二方面,本专利技术提供了一种数据库兼容性测试装置,包括:
[0027]流量捕获模块,用于捕获业务系统与其后端数据库之间的网络通信流量,以获取业务系统发送给后端数据库的各种不同类型的结构化查询语言SQL语句;
[0028]SQL语句转发模块,用于将捕获到的各种不同类型的SQL语句按照捕获的先后顺序转发到待测试数据库,并指示待测试数据库执行收到的SQL语句;
[0029]执行信息记录模块,用于分别记录所述后端数据库和待测试数据库对不同类型SQ本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库兼容性测试方法,其特征在于,包括如下步骤:捕获业务系统与其后端数据库之间的网络通信流量,以获取业务系统发送给后端数据库的各种不同类型的结构化查询语言SQL语句;将捕获到的各种不同类型的SQL语句按照捕获的先后顺序转发到待测试数据库,并指示待测试数据库执行收到的SQL语句;分别记录所述后端数据库和待测试数据库对不同类型SQL语句的执行信息;所述执行信息包括:SQL语句是否执行成功、SQL语句执行耗时以及SQL语句执行失败时的错误信息;对比上述两个数据库的执行信息,对待测试数据库执行失败且执行失败原因为语法报错的SQL语句进行改写,以便改写后的SQL语句符合待测试数据库的语法规范;并基于改写后的SQL语句确定待测试数据库执行耗时相对较长的SQL语句,对其进行优化,以在不影响业务系统正常运行的情况下对待测试数据库进行兼容性测试,使得优化后的待测试数据库能够直接代替所述后端数据库。2.根据权利要求1所述的方法,其特征在于,对SQL语句进行改写和优化,具体为:对比上述两个数据库的执行信息,定位待测试数据库执行失败的SQL语句,根据SQL语句执行失败时的错误信息确定执行失败原因是否为语法报错,若为语法报错且相应SQL语句能够进行改写,则对相应SQL语句进行改写,以便改写后的SQL语句符合待测试数据库的语法规范,随后将改写后的SQL语句和所述不同类型SQL语句中未被改写的SQL语句转发给待测试数据库,并记录待测试数据库对新收到SQL语句的执行信息;将后端数据库对所述不同类型SQL语句的执行信息与待测试数据库对新收到SQL语句的执行信息进行相应的一一对比,定位两个数据库均执行成功且待测试数据库执行耗时相对较长的SQL语句,对执行耗时较长的SQL语句进行优化,直至待测试数据库的执行耗时减去后端数据库执行耗时的差值不大于预设时差,以在不影响业务系统正常运行的情况下对待测试数据库进行兼容性测试,使得优化后的待测试数据库能够直接代替所述后端数据库。3.根据权利要求1所述的方法,其特征在于,还包括如下步骤:在完成上述兼容性测试后,按照上述对SQL语句的改写和优化的结果将业务系统发送给后端数据库的SQL语句进行适应性更新,并将所述后端数据库替换为待测试数据库,以将待测试数据库正式投入使用。4.根据权利要求1所述的方法,其特征在于,所述各种不同类型的SQL语句包括:数据查询语句、数据操作语句、数据定义语句、数据控制语句和事务控制语句中的至少一类SQL语句;所述方法还包括如下步骤:对执行耗时较长的SQL语句进行优化后,将待测试数据库新收到SQL语句中未被优化的SQL语句和优化得到的SQL语句作为查询压力测试的原始SQL语句集;将压力测试原始SQL语句集中数据查询语句的数量按照预设倍数进行放大,其他类型的SQL语句保持数量不变,得到查询压力测试的最终SQL语句集;将所述最终SQL语句集转发给待测试数据库,以便获取待测数据库在数据查询语句数量放大后的执行情况,完成对待测试数据库的查询压力测试。5.根据权利要求1所述的方法,其特征在于,所述捕获业务系统与其后端数据库之间的网络通信流量,将捕获到的各种不同类型的SQL语句按照捕获的先后顺序转发到待测试数
据库,具体为:捕获业务系统与其后端数据库之间的网络通信流量,确定对应的网络通信数据包;解析所述网络通信数据包确定对应的SQL语句和数据库连接信息;所述数据库连接信息指示后端数据库的哪个数据库连接执行对应的SQL语句且指示所述SQL语句由哪个用户给出;查询待测试数据库是否绑定其收到SQL语句对应的用户,若未绑定,则根据所述数据库连接信息在后端数据库查询对应的用户,若查询到对应用户,则指示待测试...

【专利技术属性】
技术研发人员:吕童曾丽胡蝶梅纲
申请(专利权)人:武汉达梦数据库股份有限公司
类型:发明
国别省市:

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

1