数据库的事务一致性测试方法、装置、存储介质及设备制造方法及图纸

技术编号:18526117 阅读:21 留言:0更新日期:2018-07-25 12:49
本发明专利技术公开了一种数据库的事务一致性测试方法、装置、存储介质及设备,属于数据库技术领域。方法包括:获取待测试数据库存在的异常现象;获取待测试数据库的SQL测试脚本文件的注释内容;根据注释内容,确定SQL测试脚本文件中与异常现象对应的至少一个事务包含的SQL语句;获取每一条SQL语句的执行顺序,按照每一条SQL语句的执行顺序,启动预设数目线程并发执行至少一个事务的SQL语句;获取至少一个事务的SQL语句的执行结果,并根据执行结果对待测试数据库进行事务一致性测试。由于对数据库的事务一致性测试是基于注释解析自动完成,无需人工实现,所以测试效率较高、节省了大量的人力物力、测试成本较低、且准确性较高,该种方法的效果较佳、且智能化。

【技术实现步骤摘要】
数据库的事务一致性测试方法、装置、存储介质及设备
本专利技术涉及数据库
,特别涉及一种数据库的事务一致性测试方法、装置、存储介质及设备。
技术介绍
事务(Transaction)又称为数据库事务,是指访问并可能更新数据库中各种数据项的一个执行单元,通常一个事务中包含对数据库进行读或写的一个操作序列。而事务一致性则是指:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。其中,一致状态的含义是数据库中的数据应满足完整性约束。以转账为例,假设用户A和用户B的存款加起来一共是5000,则无论用户A和用户B之间如何转账,转账结束后总的存款数目加起来应该还是5000,这即为事务一致性。相关技术在对数据库进行事务一致性测试时是基于人工实现,大体过程为:对于待测试数据库,由测试人员人工确定进行测试需要执行的事务,并人工确定这些事务包含的SQL(StructuredQueryLanguage,结构化查询语言)语句以及每一条SQL语句的执行顺序,最终再由测试人员人工根据SQL语句的执行结果来判断待测试数据库是否通过事务一致性测试。在实现本专利技术的过程中,专利技术人发现相关技术至少存在以下问题:由于对数据库的事务一致性测试是基于人工实现,所以会存在测试效率低、耗时耗力、测试成本较高等一系列问题,所以该种测试方法的效果不佳、不够智能化。
技术实现思路
本专利技术实施例提供了一种数据库的事务一致性测试方法、装置、存储介质及设备,解决了相关技术测试效率低、耗时耗力、测试成本较高等一系列的问题。所述技术方案如下:一方面,提供了一种数据库的事务一致性测试方法,所述方法包括:获取待测试数据库存在的异常现象;获取所述待测试数据库的SQL测试脚本文件的注释内容;根据所述注释内容,确定所述SQL测试脚本文件中与所述异常现象对应的至少一个事务包含的SQL语句;获取每一条SQL语句的执行顺序,按照所述每一条SQL语句的执行顺序,启动预设数目线程并发执行所述至少一个事务的SQL语句;获取所述至少一个事务的SQL语句的执行结果,并根据所述执行结果对所述待测试数据库进行事务一致性测试。另一方面,提供了一种数据库的事务一致性测试装置,所述装置包括:第一获取模块,用于获取待测试数据库存在的异常现象;所述第一获取模块,还用于获取所述待测试数据库的SQL测试脚本文件的注释内容;确定模块,用于根据所述注释内容,确定所述SQL测试脚本文件中与所述异常现象对应的至少一个事务包含的SQL语句;第二获取模块,用于获取每一条SQL语句的执行顺序;处理模块,用于按照所述每一条SQL语句的执行顺序,启动预设数目线程并发执行所述至少一个事务的SQL语句;所述第二获取模块,还用于获取所述至少一个事务的SQL语句的执行结果;所述处理模块,还用于根据所述执行结果对所述待测试数据库进行事务一致性测试。另一方面,提供了一种存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的数据库的事务一致性测试方法。另一方面,提供了一种用于进行事务一致性测试的设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的数据库的事务一致性测试方法。本专利技术实施例提供的技术方案带来的有益效果是:由于对数据库的事务一致性测试是基于对注释内容解析自动完成,无需人工实现,所以测试效率较高、节省了大量的人力物力、测试成本较低、且准确性较高,所以该种测试方法的效果较佳、且智能化。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种任务执行系统的结构示意图;图2是本专利技术实施例提供的一种数据库的事务一致性测试方法的流程图;图3是本专利技术实施例提供的一种SQL测试脚本文件的示意图;图4是本专利技术实施例提供的一种数据库的事务一致性测试方法的整理流程示意图;图5是本专利技术实施例提供的一种数据库的事务一致性测试装置的结构示意图;图6是本专利技术实施例提供的一种用于进行事务一致性测试的设备的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。在对本专利技术实施例进行详细地解释说明之前,先对本专利技术实施例可能涉及到的一些名词进行一下解释说明。SQL:是专为数据库建立的操作命令集,其用来访问和操作数据库。而SQL语句用于取回和更新数据库中的数据。其中,SQL是一种功能齐全的数据库语言。在使用SQL时,仅需用户要发出“做什么”的命令,而具体“怎么做”是无需用户考虑的。另外,由于SQL功能强大、简单易学以及使用方便,目前已经成为了数据库操作的基础,时下几乎所有类型的数据库均支持SQL。事务:又称为数据库事务,是指访问并可能更新数据库中各种数据项的一个执行单元,通常一个事务中包含对数据库进行读或写的一个操作序列。其中,事务的存在通常有以下两个目的:1、为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。2、当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。其中,当一个事务被提交给了数据库管理系统后,则数据库管理系统需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中。如果该事务中有的操作没有成功完成,则该事务中的所有操作都需要被回滚,回到该事务执行前的状态;此外需要说明的是,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。数据库注释:将特定的字符标识作为注释开始标志,从注释开始标志以后的内容即为注释内容。其中,注释内容可用于解释改行或者解释SQL语句。以单行注释为例,比如可采用字符标识“--”作为注释开始标志。其中,注释格式为“--注释内容”。需要说明的是,在注释开始标识“--”之后通常存在一个空格。ACID:指代在数据库管理系统中事务所具有的四个特性。其中,四个特性分别为原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。原子性:是指事务包含的所有操作要么全部成功,要么全部失败回滚。即,事务的操作如果成功则需完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性:即事务不能破坏数据库的一些约束。详细来说,事务应确保数据库的状态从一个一致状态转变为另一个一致状态。其中,一致状态的含义是数据库中的数据应满足完整性约束。隔离性:指代并发事务执行时,如何看到其他事务的执行结果。详细来说,隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。即要达到这样一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前便已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。持久性:宕机重启后,数据库状态还能恢复。详细来说,持久性本文档来自技高网...

【技术保护点】
1.一种数据库的事务一致性测试方法,其特征在于,所述方法包括:获取待测试数据库存在的异常现象;获取所述待测试数据库的结构化查询语言SQL测试脚本文件的注释内容;根据所述注释内容,确定所述SQL测试脚本文件中与所述异常现象对应的至少一个事务包含的SQL语句;获取每一条SQL语句的执行顺序,按照所述每一条SQL语句的执行顺序,启动预设数目线程并发执行所述至少一个事务的SQL语句;获取所述至少一个事务的SQL语句的执行结果,并根据所述执行结果对所述待测试数据库进行事务一致性测试。

【技术特征摘要】
1.一种数据库的事务一致性测试方法,其特征在于,所述方法包括:获取待测试数据库存在的异常现象;获取所述待测试数据库的结构化查询语言SQL测试脚本文件的注释内容;根据所述注释内容,确定所述SQL测试脚本文件中与所述异常现象对应的至少一个事务包含的SQL语句;获取每一条SQL语句的执行顺序,按照所述每一条SQL语句的执行顺序,启动预设数目线程并发执行所述至少一个事务的SQL语句;获取所述至少一个事务的SQL语句的执行结果,并根据所述执行结果对所述待测试数据库进行事务一致性测试。2.根据权利要求1所述的方法,其特征在于,所述获取所述待测试数据库的结构化查询语言SQL测试脚本文件的注释内容,包括:按行顺序读取所述待测试数据库的SQL测试脚本文件;对于所述SQL测试脚本文件中包含的至少一条SQL语句,在所述至少一条SQL语句的结尾位置获取所述注释内容;其中,所述注释内容中至少包括执行所述SQL语句的事务的标识信息。3.根据权利要求2所述的方法,其特征在于,所述在所述至少一条SQL语句的结尾位置获取所述注释内容,包括:对于任意一条SQL语句,在所述任意一条SQL语句的结尾位置处确定注释开始标志;在距离所述注释开始标志目标数目个空格的位置处获取所述注释内容。4.根据权利要求1所述的方法,其特征在于,所述获取每一条SQL语句的执行顺序,包括:在所述SQL测试脚本文件中获取所述每一条SQL语句的行号;根据所述每一条SQL语句的行号,确定所述每一条SQL语句的执行顺序。5.根据权利要求1所述的方法,其特征在于,所述根据所述执行结果对所述待测试数据库进行事务一致性测试,包括:将所述执行结果保存为文本形式,得到执行结果文本;将所述执行结果文本与预先设置的基准文本进行消息摘要算法第五版MD5比对;若...

【专利技术属性】
技术研发人员:刘威王德宝倪欣张丹
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1