CN115658482A - 数据库测试方法及装置、电子设备及计算机可读存储介质 - Google Patents

数据库测试方法及装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN115658482A
CN115658482A CN202211261222.XA CN202211261222A CN115658482A CN 115658482 A CN115658482 A CN 115658482A CN 202211261222 A CN202211261222 A CN 202211261222A CN 115658482 A CN115658482 A CN 115658482A
Authority
CN
China
Prior art keywords
error
test
preset
trigger
data table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211261222.XA
Other languages
English (en)
Inventor
余璜
王国平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202211261222.XA priority Critical patent/CN115658482A/zh
Publication of CN115658482A publication Critical patent/CN115658482A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本公开披露了一种数据库测试方法及装置、电子设备及计算机可读存储介质。该数据库测试方法涉及数据库技术领域,包括:响应于针对目标数据库的测试指令,在目标数据库中生成测试数据表,获取针对测试数据表的测试查询语句,测试查询语句中包括错误注入函数,错误注入函数的参数是基于测试数据表中包含的数据生成的;执行测试查询语句,以便在目标数据库中触发错误注入函数对应的预设错误,从而利用预设错误测试目标数据库的错误处理性能。本公开只要调控测试数据表中的数据,就能控制预设错误出现的时机和形式,从而精准可控地模拟不同错误场景,进而有效提高数据库的测试覆盖率。此外,与传统技术相比,实施本公开更加简便快捷。

Description

数据库测试方法及装置、电子设备及计算机可读存储介质
技术领域
本公开涉及数据库技术领域,具体涉及一种数据库测试方法及装置、电子设备及计算机可读存储介质。
背景技术
随着大数据技术的飞速发展,数据库被广泛应用。为了提高数据库的可靠性与稳定性,需要对数据库进行异常测试。测试过程中,通过构造各种错误并触发错误,以测试数据库的错误处理性能。
然而,相关技术中,通过压测软件和代码注入探针(tracepoint)的方式进行测试,不仅操作复杂,而且很难精确地触发各种错误,测试覆盖率低。
发明内容
有鉴于此,本公开提供一种数据库测试方法及装置、电子设备及计算机可读存储介质,以解决异常测试操作复杂以及测试覆盖率低的问题。
第一方面,提供一种数据库测试方法,该方法包括:响应于针对目标数据库的测试指令,在目标数据库中生成测试数据表;获取针对测试数据表的测试查询语句,测试查询语句中包括错误注入函数,错误注入函数的参数是基于测试数据表中包含的数据生成的,错误注入函数用于在符合预设触发条件的情况下,触发错误注入函数对应的预设错误;执行测试查询语句,以便在目标数据库中触发错误注入函数对应的预设错误,从而利用预设错误测试目标数据库的错误处理性能。
第二方面,提供一种数据库测试装置,该装置包括:生成模块,配置为响应于针对目标数据库的测试指令,在目标数据库中生成测试数据表;获取模块,配置为获取针对测试数据表的测试查询语句,测试查询语句中包括错误注入函数,错误注入函数的参数是基于测试数据表中包含的数据生成的,错误注入函数用于在符合预设触发条件时,触发错误注入函数对应的预设错误;执行模块,配置为执行测试查询语句,以便在目标数据库中触发错误注入函数对应的预设错误,从而利用预设错误测试目标数据库的错误处理性。
第三方面,提供一种电子设备,该电子设备包括:处理器和用于存储计算机可执行指令的存储器,该处理器用于执行该计算机可执行指令,以实现上述第一方面所提及的方法。
第四方面,提供一种计算机可读存储介质,该存储介质存储有指令,当该指令被执行时,能够实现上述第一方面所提及的方法。
第五方面,提供一种计算机程序产品,包括指令,当该指令被执行时,能够实现上述第一方面所提及的方法。
本公开实施例提供的数据库测试方法,通过构建测试数据表、以及包括错误注入函数的测试查询语句的方式,实现在数据库执行测试查询语句的过程中,在错误注入函数符合预设触发条件时,在数据库中触发预设函数的目的,从而实现利用预设错误测试目标数据库的错误处理性能的目的。由于限定了预设触发条件和错误注入函数的参数与测试数据表中数据的关系,因此只要调控测试数据表中的数据,就能控制预设错误出现的时机和形式,从而精准可控地模拟不同错误场景,进而有效提高测试覆盖率。此外,由于无需通过压测软件和代码注入探针的方式构造错误,使得本公开的测试方法在实施过程中更加简便快捷。
附图说明
图1所示为本公开一实施例提供的数据库测试方法应用场景的系统架构示意图。
图2所示为本公开一实施例提供的数据库测试方法的流程示意图。
图3所示为本公开一实施例提供的在目标数据库中生成测试数据表的流程示意图。
图4所示为本公开另一实施例提供的数据库测试方法的流程示意图。
图5所示为本公开一实施例提供的数据库测试装置的结构示意图。
图6所示为本公开另一实施例提供的数据库测试的结构示意图。
图7所示为本公开一实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本公开一部分实施例,而不是全部的实施例。
由于数据库能够依靠大数据展开数据挖掘和数据计算等特点,其被广泛应用于各行各业,尤其是MySQL等关系数据库管理系统(Relational Database Management System,RDBM)备受青睐。
然而,数据库运行过程中很容易因为各种原因导致系统运行错误,数据库自身在出现错误时的错误处理性能至关重要,不仅影响数据库的可靠性与稳定性,而且影响用户体验。因此,对数据库进行异常测试至关重要。异常测试指的是通过构造各种错误并触发错误,获取数据库对错误的处理结果,比对处理结果和预设结果,从而测试数据库的错误处理性能。
传统技术中,通过压测软件(比如,MySQL的pquery异常测试工具)和代码注入探针(tracepoint)的方式进行测试。MySQL的pquery异常测试工具需要数据库产生真实错误,比如,出现服务器宕机、副本迁移、或切主等真实错误,才能测试数据库的错误处理性能,其他错误场景会被遗漏。然而,在数据库出现真实的错误的概率较低,即使出现真实错误,错误场景也相对单一,从而导致MySQL的pquery异常测试工具测试覆盖率低,此外,产生真实错误后续维修操作也十分复杂。
代码注入探针就是在代码路径上注入错误以模拟错误,但探针能够模拟的错误场景有限,测试覆盖率仍旧低,并且需要外部控制探针开启或者关闭,当存在多个探针时,尤其是在分布式数据库中,多个探针的开闭和后续维护都很复杂,灵活性有限。
为了解决上述问题,本公开实施例提供一种数据库测试方法,通过构建测试数据表、和包括错误注入函数的测试查询语句的方式,实现在数据库执行测试查询语句的过程中,在错误注入函数符合预设触发条件时,在数据库中触发预设函数的目的,从而实现利用预设错误测试目标数据库的错误处理性能的目的。由于限定了预设触发条件和错误注入函数的参数与测试数据表中数据的关系,只要调控测试数据表中的数据,就能控制预设错误出现的时机和形式,从而精准可控地模拟不同错误场景,进而有效提高数据库的测试覆盖率。此外,由于无需通过压测软件和代码注入探针的方式构造错误,使得本公开的测试方法在实施过程中更加简便快捷。
需要说明的是,上述提及的错误处理性能指的是数据库对错误的处理结果是否与预设结果相同,也就是说,错误处理性能能够表征数据库处理错误的方式是否正确。数据库对错误的处理结果与预设结果相同,表明数据库处理错误的方式是正确的,数据库对错误的处理结果与预设结果不相同,表明数据库处理错误的方式是不正确的,需要改进数据库。
下面结合图1对数据库测试方法的系统架构进行举例说明。
如图1所示,本公开实施例提供的数据库测试方法涉及测试管理终端110、与测试管理终端110通信连接的测试服务器120、以及与测试服务器120通信连接的目标数据库130。
在实际应用过程中,测试人员在测试管理终端110输入测试指令,测试服务器120响应于针对目标数据库130的测试指令,测试服务器120调用目标数据库130中的数据,在目标数据库130中生成测试数据表。
测试人员在测试管理终端110输入针对测试数据表的测试查询语句,测试服务器120 获取针对测试数据表的测试查询语句,测试服务器120并执行测试查询语句,由于测试查询语句中包括错误注入函数,错误注入函数的参数是基于测试数据表中包含的数据生成的,错误注入函数用于在符合预设触发条件的情况下,触发错误注入函数对应的预设错误。
测试服务器120在执行测试查询语句过程中,目标数据库130中触发错误注入函数对应的预设错误,并针对预设错误产生应对信息,测试服务器120获取目标数据库针对预设错误的应对信息,将应对信息发送给测试管理终端110,测试人员基于测试管理终端110接收的应对信息、和针对预设错误的预设应对信息,评估目标数据库的错误处理性能。
示例性地,目标数据库130为分布式数据库,也就是说,目标数据库130有多个服务器(即对应多个服务端)。每个服务器中都可能有一份完整数据拷贝副本,或者部分数据拷贝副本,并具有自己局部的数据库,位于不同地点的多个服务器通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布式的大型的数据库。
示例性地,测试服务器120可以为目标数据库130包括的多个服务器中的一个服务器。
示例性地,测试管理终端110可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备等类型的实体设备。本公开实施例中测试管理终端110 中运行的操作系统可以包括但不限于安卓系统、IOS系统、windows等。
下面结合图2至图4详细介绍本公开实施例提及的数据库测试方法。
图2所示为本公开一实施例提供的数据库测试方法的流程示意图。如图2所示,本公开实施例提供的数据库测试方法包括如下步骤。
步骤S210,响应于针对目标数据库的测试指令,在目标数据库中生成测试数据表。
示例性地,上述提及的测试指令可以是创建表的语句结构化查询语言(Structured Query Language,SQL)。
步骤S220,获取针对测试数据表的测试查询语句。
测试查询语句中包括错误注入函数,错误注入函数的参数是基于测试数据表中包含的数据生成的,错误注入函数用于在符合预设触发条件的情况下,触发错误注入函数对应的预设错误。
示例性地,测试查询语句是针对目标数据库的表示查询的结构化查询语句(即,Query SQL),也可以是表示增加、删除、更改的结构化查询语句(即,DML SQL)。
示例性地,上述提及的在目标数据库中生成测试数据表的目的在于,由于错误注入函数的参数是基于测试数据表中包含的数据生成的,并且错误注入函数是注入在测试查询语句中,使得在执行查询语句过程中,错误注入函数能够被触发,从而利用预设错误测试目标数据库的错误处理性能的目的。也就是说,通过构造测试数据表、以及包括错误注入函数的测试查询语句的方式,实现构造预设错误的目的。
此外,只有错误注入函数满足符合预设触发条件才能触发预设错误,并且错误注入函数的参数是基于测试数据表中数据生成的,那么测试数据表中的数据能够控制预设错误出现的时机和形式,从而通过调控测试数据表中的数据,就能实现精准可控地模拟不同错误场景,进而有效提高测试数据库的覆盖率的目的。
在一示例中,错误注入函数的参数包括触发数据条件参数,上述提及的在目标数据库中生成错误注入函数对应的预设错误的具体实现方式为,在触发数据条件参数符合预设触发条件的情况下,在目标数据库中生成错误注入函数对应的预设错误。也就是说,在触发数据条件参数不符合预设触发条件的情况下,仍继续执行测试查询语句。
举例说明,SQL语句为errno(err_code[c1]),其中,errno为错误注入函数,触发数据条件参数为err_code的值,也就是查询c1过程中的返回值。
当err_code的值小于0时,触发数据条件参数符合预设触发条件,errno函数将输入的err_code值转化成一个错误码,并在errno函数中将这个错误码抛出,从而触发预设错误。当err_code大于或者等于0时,触发数据条件参数不符合预设触发条件,errno 函数不报错,它的计算结果就是err_code的值。
基于上述描述可知,err_code的值满足符合预设触发条件才能触发预设错误,并且 err_code的值与查询的测试数据表中c1息息相关,因此,合理构造测试数据表中的数据,错误注入函数的具体形式,能够获得不同的预设错误。
在另一示例中,错误注入函数的参数还包括触发时间节点参数,上述提及的在目标数据库中生成错误注入函数对应的预设错误,包括:在触发数据条件参数符合预设触发条件的情况下,获取触发数据条件参数符合预设触发条件的时间节点;在时间节点早于触发时间节点参数的情况下,在目标数据库中生成错误注入函数对应的预设错误。也就是说,在时间节点等于或者晚于触发时间节点参数的情况下,预设错误并不能被触发。
需要说明的是,上述提及的时间节点指的是,测试查询语句被执行的过程中,触发数据条件参数符合预设触发条件的时刻。比如,测试数据表的第100行中有个负数,目标数据库在10点10分0秒开始执行测试查询语句,在10点10分20秒时查询到第100 行的负数,此时触发数据条件参数符合预设触发条件,则触发数据条件参数符合预设触发条件的时间节点即为10点10分20秒。
举例说明,SQL语句为errno(err_code[c1,expire_after_us]),其中,errno为错误注入函数,触发数据条件参数为err_code的值,也就是查询c1过程中的返回值,触发时间节点参数为us,即u秒。
当err_code的值小于0时,错误注入函数的触发数据条件参数符合预设触发条件,符合预设触发条件的时间节点和开始执行测试查询语句的时间节点之间的秒数小于u秒,errno函数将输入的err_code值转化成一个错误码,并在errno函数中将这个错误码抛出,从而触发预设错误。
当err_code的值小于0时,错误注入函数的触发数据条件参数符合预设触发条件,符合预设触发条件的时间节点和开始执行测试查询语句的时间节点之间大于或者等于u秒,errno函数仍旧不报错,它的计算结果就是err_code的值。
基于上述描述可知,在err_code的值满足符合预设触发条件的前提下,还需要早于触发时间节点参数。因此,通过时间节点参数的调整,能够进一步控制预设错误出现的时间,精准可控地模拟不同错误场景,进而有效提高测试覆盖率。
步骤S230,执行测试查询语句,以便在目标数据库中触发错误注入函数对应的预设错误,从而利用预设错误测试目标数据库的错误处理性能。
上述提及的错误注入函数对应的预设错误指的是,基于测试数据表和触发错误注入函数构造的错误的错误码。错误码有很多,每个错误码代表一种预设错误,对应一种错误场景。
本公开实施例中,通过构建测试数据表、和包括错误注入函数的测试查询语句的方式(也可以被称为数据驱动的方式),实现在数据库执行测试查询语句的过程中,在错误注入函数符合预设触发条件时,在数据库中触发预设函数的目的,从而实现利用预设错误测试目标数据库的错误处理性能的目的。由于限定了预设触发条件和错误注入函数的参数与测试数据表中数据的关系,只要调控测试数据表中的数据,就能控制预设错误出现的时机和形式,从而精准可控地模拟不同错误场景,进而有效提高测试覆盖率。此外,由于无需通过压测软件和代码注入探针的方式构造错误,使得本公开的测试方法在实施过程中更加简便快捷。
基于上述描述,测试数据表中的数据能够控制预设错误出现的时机和形式,下面结合图 3详细说明如何在目标数据库中生成测试数据表。如图3所示,在本公开实施例中,在目标数据库中生成测试数据表步骤,包括下列步骤。
步骤S310,获取测试指令对应的数据表设置数据。
数据表设置数据包括数据表的数据量设置数据和/或数据表的参数数值范围设置数据,在测试查询语句被执行的过程中,错误注入函数被触发的时间节点是基于数据表设置数据确定的。
步骤S320,基于数据表设置数据,在目标数据库中生成测试数据表。
示例性地,上述提及的获取测试指令对应的数据表设置数据可以被执行为,响应于创建表的SQL语句中包括的插入语句,获取插入语句对应的数据表设置数据。
考虑到c1,c2和c3列的数据已知,c1,c2和c3列的数据量能够影响t1的数据量,c1,c2和c3列的数据范围也能够影响t1的数值范围。考虑到错误注入函数的触发数据条件参数(即上述提及errno函数中的err_code值)与表t1的数值范围和数据量有关, c1,c2和c3能够影响错误注入函数被触发的时间节点。
举例说明,测试指令为:
create table t1(c1int,c2int,c3int);
insert into t1values(-4038,2,10000);
具体地,在创建表t1的过程中,插入c1,c2和c3列的数据,在表t1中插入(-4038,2,10000),则t1表的形式如表1所示,
表1
t1.c1 ...... t1.c2 ..... t1.c3
1 ...... 1 ...... a
-4038 ...... 2 ...... 10000
测试查询语句为:select*,errno(c1)from t1order by c2asc,表示为按照c2升序排列表格所有的列。
由于错误注入函数中触发数据条件参数(err_code的值)是c1的值,在查询到第二行的时候,err_code的值小于0,则触发数据条件参数满足预设触发条件,触发预设错误4038。
此时,能够测试目标数据库在返回一行数据后,触发4038错误,目标数据库进行重试,目标数据库针对预设错误的预设应对信息可能为无法重试,反馈错误给测试终端。本实施例提供的“返回一行数据后,触发4038错误,目标数据库进行重试”是传统技术中obmonster异常测试工具和tracepoint无法实现的。
进一步地,假如-4038位于第1万行,1万行之前c1的数据都是非负数,则预设错误需要在目标数据库运行1万行之后才触发,这种错误场景也是传统方式中无法覆盖的。也就是说,覆盖了输出的前N行数据都不触发预设错误,仅在特定行数上才触发预设错误的场景。
再进一步地,假如多个测试数据表做连接,控制数据表设置数据,能够使错误出现某个测试数据表的底部、中间、或顶部,或者多个测试数据表的底部、中间、或顶部,更或者出现在多个测试数据表连接后的结果集上。
本公开实施例中,通过获取测试指令对应的数据表设置数据,实现调整错误注入函数被触发的时间节点,从而控制预设错误出现的时机,进而精准可控地模拟不同错误场景,继而有效提高测试覆盖率的目的。
由于分布式数据库的有多个服务器,且在物理上分布设置,分布式数据库中有许多特定的错误需要测试覆盖,因此,在得到预设错误的过程中,需要考虑服务器的位置。
在一示例中,目标数据库对应有多个服务端,执行测试查询语句的服务端为多个服务端中的一个服务端,提供测试数据表中包含的数据的服务端为多个服务端中的另一个服务端。
举例说明,在服务端1创建表t2,服务器2获取测试查询语句并执行,此时,相对于服务端1而言,是一个远程服务器上执行的SQL(即,remote SQL),从而能够测试分布式数据库在执行remote SQL时触发错误时的应对信息。与传统技术相比,本公开提供的方法能够覆盖remote错误场景,从而提高测试覆盖率。
在另一示例中,目标数据库对应有多个服务端,执行测试查询语句的服务端为多个服务端中的一个服务端,提供测试数据表中包含的数据的服务端为多个服务端中的至少两个服务端。
举例说明,创建表t3,表t3是一个分布式数据表,数据位于服务器3、4和5上,系统中的任意一个服务器X获取测试查询语句并执行,此时,相对于服务器X而言,是一个多个服务器上执行的SQL(即,distributed SQL),从而能够测试分布式数据库在执行distributedSQL时触发错误时的应对信息。与传统技术相比,本公开提供的方法能够覆盖distributed错误场景,从而提高测试覆盖率。
在一些实施例中,测试查询语句中包括错误并行触发语句,错误并行触发语句用于,在测试数据表中包含的多个数据均能使错误注入函数符合预设触发条件的情况下,并行触发多个数据各自对应的预设错误。比如,测试查询语句为select/*+parallel(3)*/*,errno(c1)from t1order by c2asc,当c1中存在3个数值使触发数据条件参数小于0,可以在一次查询中并行触发3次错误。这三个错误分别与c1中存在3个数值对应的错误码相对应。
举例说明,
测试指令为:
create table t1(c1int,c2int,c3int);
insert into t1values(-4038,1,1000000);(-4029,2,2000000);
具体地,t2表的形式如表1所示,
表2
t2.c1 ...... t2.c2 ..... t2.c3
1 ...... 1 ...... a
-4038 ...... 1 ...... 1000000
-4029 ...... 2 ...... 2000000
测试查询语句为:select/*+parallel(2)*/*,errno(c1)from t1order byc2asc,在一次查询中并行触发4038和4029的2次错误。
本公开实施例中,通过错误并行触发语,实现覆盖并行触发多个预设错误的场景,并且通过数据表设置数据、错误并行触发语已以及触发时间节点参数的共同控制,还能实现不同时间节点触发不同错误的目的,从而有效提高测试覆盖率的目的。
图4所示为另一实施例提供的数据库测试方法的流程示意图。具体地,下面着重叙述图4所示实施例与图2所示实施例的不同之处,相同之处不再赘述。
如图4所示,该数据库测试方法包括如下步骤。
步骤S410,获取目标数据库针对预设错误的应对信息。
示例性地,上述提及的目标数据库针对预设错误的应对信息包括以下三种情况中的任意一种,(1)直接将预设错误报告发送给测试服务器,以便测试管理终端的测试人员获得预设错误报告;(2)反复重试测试语句,直至超时,发送重试失败报告给测试服务器,以便测试管理终端的测试人员获得重试失败报告;(3)反复重试测试语句,直至重试成功,发送重试成功报告给测试服务器,以便测试管理终端的测试人员获得重试成功报告。
步骤S420,基于应对信息,评估目标数据库的错误处理性能。
示例性地,若目标数据库针对预设错误的应对信息和针对目标错误的预设应对信息匹配次数的概率大于或者等于第一阈值,则表明目标数据库的错误处理能力达标,无需改进数据库系统,若标数据库针对预设错误的应对信息和针对目标错误的预设应对信息不匹配次数的概率大于或者等于到第二阈值,则表明目标数据库的错误处理能力不达标,需要改进数据库系统。
本公开实施例中,通过获取目标数据库针对预设错误的应对信息,并基于目标数据库针对预设错误的应对信息和针对目标错误的预设应对信息,实现评估目标数据库的错误处理性能的目的,从而有效改进目标数据库,进而提升用户体验的目的。
上文结合图2至图4,详细描述了本公开的方法实施例,下面结合图5至图6,详细描述本公开的装置实施例。此外,应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
图5所示为本公开一实施例提供的数据库测试装置的结构示意图。如图5所示,本公开实施例提供的数据库测试装置500包括生成模块510、获取模块520和执行模块530。具体地,生成模块510被配置为,响应于针对目标数据库的测试指令,在目标数据库中生成测试数据表。获取模块520被配置为,获取针对测试数据表的测试查询语句,测试查询语句中包括错误注入函数,错误注入函数的参数是基于测试数据表中包含的数据生成的,错误注入函数用于在符合预设触发条件时,触发错误注入函数对应的预设错误。执行模块530被配置为,执行测试查询语句,以便在目标数据库中触发错误注入函数对应的预设错误,从而利用预设错误测试目标数据库的错误处理性能。
在一些实施例中,生成模块510进一步配置为,获取测试指令对应的数据表设置数据,数据表设置数据包括数据表的数据量设置数据和/或数据表的参数数值范围设置数据,在测试查询语句被执行的过程中,错误注入函数被触发的时间节点是基于数据表设置数据确定的;基于数据表设置数据,在目标数据库中生成测试数据表。
在一些实施例中,测试查询语句中包括错误并行触发语句,错误并行触发语句用于,在测试数据表中包含的多个数据均能使错误注入函数符合预设触发条件的情况下,并行触发多个数据各自对应的预设错误。
在一些实施例中,目标数据库对应有多个服务端,其中,执行测试查询语句的服务端为多个服务端中的一个服务端;并且,提供测试数据表中包含的数据的服务端为多个服务端中的另一个服务端。
在另一些实施例中,目标数据库对应有多个服务端,其中,执行测试查询语句的服务端为多个服务端中的一个服务端;或者,提供测试数据表中包含的数据的服务端为多个服务端中的至少两个服务端。
在一些实施例中,错误注入函数的参数包括触发数据条件参数,执行模块530进一步被配置为,执行测试查询语句,以便在触发数据条件参数符合预设触发条件的情况下,在目标数据库中生成错误注入函数对应的预设错误,从而利用预设错误测试目标数据库的错误处理性能。
在一些实施例中,错误注入函数的参数还包括触发时间节点参数,执行模块530进一步被配置为,执行测试查询语句,以便在触发数据条件参数符合预设触发条件的情况下,获取触发数据条件参数符合预设触发条件的时间节点;在时间节点早于触发时间节点参数的情况下,在目标数据库中生成错误注入函数对应的预设错误,从而利用预设错误测试目标数据库的错误处理性能。
图6所示为本公开另一实施例提供的侵权检测装置的结构示意图。在图5所示实施例基础上延伸出图6所示实施例,下面着重叙述图6所示实施例与图5所示实施例的不同之处,相同之处不再赘述。
如图6所示,本公开实施例提供的数据库测试装置500还包括:评估模块610。
具体地,获取模块510进一步被配置为,在执行测试查询语句之后,获取目标数据库针对预设错误的应对信息。评估模块610被配置为,基于应对信息,评估目标数据库的错误处理性能。
图7所示为本公开一实施例提供的电子设备的结构示意图。图7所示的电子设备700 包括存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器 702、通信接口703通过总线704实现彼此之间的通信连接。
存储器701可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702和通信接口703 用于执行本公开实施例的数据库测试方法的各个步骤。
处理器702可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),图形处理器(Graphics Processing Unit,GPU)或者一个或多个集成电路,用于执行相关程序,以实现本公开实施例的数据库测试装置中的单元所需执行的功能。
处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本公开的数据处理方法的各个步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(ASIC)、现场可编程门阵列(Field Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本公开实施例的数据库测试装置中包括的单元所需执行的功能,或者执行本公开方法实施例的数据库测试方法。
通信接口703使用例如但不限于收发器一类的收发装置,来实现装置700与其他设备或通信网络之间的通信。例如,可以通过通信接口703接收品宣请求或者品宣数据。
总线704可包括在电子设备700各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
应注意,尽管图7所示的电子设备700仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,电子设备700还包括实现正常运行所必需的其他器件。同时,根据具体需要,本领域的技术人员应当理解,电子设备700 还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,电子设备 700也可仅仅包括实现本公开实施例所必需的器件,而不必包括图7中所示的全部器件。
除了上述方法、装置和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开各个实施例提供的数据库测试方法的各个步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的步骤式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开各个实施例提供的数据库测试方法的各个步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM 或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个相似区域分割单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种数据库测试方法,包括:
响应于针对目标数据库的测试指令,在所述目标数据库中生成测试数据表;
获取针对所述测试数据表的测试查询语句,所述测试查询语句中包括错误注入函数,所述错误注入函数的参数是基于所述测试数据表中包含的数据生成的,所述错误注入函数用于在符合预设触发条件的情况下,触发所述错误注入函数对应的预设错误;
执行所述测试查询语句,以便在所述目标数据库中触发所述错误注入函数对应的预设错误,从而利用所述预设错误测试所述目标数据库的错误处理性能。
2.根据权利要求1所述的方法,所述在所述目标数据库中生成测试数据表,包括:
获取所述测试指令对应的数据表设置数据,所述数据表设置数据包括数据表的数据量设置数据和/或数据表的参数数值范围设置数据,在所述测试查询语句被执行的过程中,所述错误注入函数被触发的时间节点是基于所述数据表设置数据确定的;
基于所述数据表设置数据,在所述目标数据库中生成所述测试数据表。
3.根据权利要求1所述的方法,所述测试查询语句中包括错误并行触发语句,所述错误并行触发语句用于,在所述测试数据表中包含的多个数据均能使所述错误注入函数符合所述预设触发条件的情况下,并行触发所述多个数据各自对应的预设错误。
4.根据权利要求1所述的方法,所述目标数据库对应有多个服务端,
其中,执行所述测试查询语句的服务端为所述多个服务端中的一个服务端,并且,提供所述测试数据表中包含的数据的服务端为所述多个服务端中的另一个服务端;
或者,提供所述测试数据表中包含的数据的服务端为所述多个服务端中的至少两个服务端。
5.根据权利要求1至4任一项所述的方法,所述错误注入函数的参数包括触发数据条件参数,所述在所述目标数据库中生成所述错误注入函数对应的预设错误,包括:
在所述触发数据条件参数符合所述预设触发条件的情况下,在所述目标数据库中生成所述错误注入函数对应的预设错误。
6.根据权利要求5所述的方法,所述错误注入函数的参数还包括触发时间节点参数,所述在所述触发数据条件参数符合所述预设触发条件的情况下,在所述目标数据库中生成所述错误注入函数对应的预设错误,包括:
在所述触发数据条件参数符合所述预设触发条件的情况下,获取所述触发数据条件参数符合预设触发条件的时间节点;
在所述时间节点早于所述触发时间节点参数的情况下,在所述目标数据库中生成所述错误注入函数对应的预设错误。
7.根据权利要求1至4任一项所述的方法,在执行所述测试查询语句之后,还包括:
获取所述目标数据库针对所述预设错误的应对信息;
基于所述应对信息,评估所述目标数据库的错误处理性能。
8.一种数据库测试装置,包括:
生成模块,配置为响应于针对目标数据库的测试指令,在所述目标数据库中生成测试数据表;
获取模块,配置为获取针对所述测试数据表的测试查询语句,所述测试查询语句中包括错误注入函数,所述错误注入函数的参数是基于所述测试数据表中包含的数据生成的,所述错误注入函数用于在符合预设触发条件时,触发所述错误注入函数对应的预设错误;
执行模块,配置为执行所述测试查询语句,以便在所述目标数据库中触发所述错误注入函数对应的预设错误,从而利用所述预设错误测试所述目标数据库的错误处理性能。
9.一种电子设备,包括:
处理器;以及
存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如权利要求1至7任一项所述的方法。
CN202211261222.XA 2022-10-14 2022-10-14 数据库测试方法及装置、电子设备及计算机可读存储介质 Pending CN115658482A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211261222.XA CN115658482A (zh) 2022-10-14 2022-10-14 数据库测试方法及装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211261222.XA CN115658482A (zh) 2022-10-14 2022-10-14 数据库测试方法及装置、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN115658482A true CN115658482A (zh) 2023-01-31

Family

ID=84988263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211261222.XA Pending CN115658482A (zh) 2022-10-14 2022-10-14 数据库测试方法及装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN115658482A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435507A (zh) * 2023-12-20 2024-01-23 天津华来科技股份有限公司 自适应通用退避测试方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435507A (zh) * 2023-12-20 2024-01-23 天津华来科技股份有限公司 自适应通用退避测试方法及系统

Similar Documents

Publication Publication Date Title
CN109062809B (zh) 一种线上测试用例生成方法、装置及电子设备
CN108459962B (zh) 代码规范性检测方法、装置、终端设备及存储介质
CN109062794B (zh) 一种软件测评结果的确定方法、装置及电子设备
US8555234B2 (en) Verification of soft error resilience
CN110704297B (zh) 代码评审方法、装置、计算机设备及存储介质
CN110209521A (zh) 数据校验方法、装置、计算机可读存储介质和计算机设备
CN110716878B (zh) 一种接口自动化测试方法、装置及系统
CN110879781A (zh) 程序调试方法、装置、电子设备及计算机可读存储介质
CN109284331B (zh) 基于业务数据资源的制证信息获取方法、终端设备及介质
CN115658482A (zh) 数据库测试方法及装置、电子设备及计算机可读存储介质
US11163924B2 (en) Identification of changes in functional behavior and runtime behavior of a system during maintenance cycles
CN110147354B (zh) 批量数据编辑方法、装置、计算机设备及存储介质
US20210286706A1 (en) Graph-based method for inductive bug localization
CN113886590A (zh) 数据汇总方法、装置、计算机设备及存储介质
CN110765008B (zh) 一种数据处理方法及装置
CN112817847A (zh) 数据处理任务的测试方法、装置、电子设备及存储介质
US20040093476A1 (en) System for preventing memory usage conflicts when generating and merging computer architecture test cases
CN115470141A (zh) 一种故障模拟方法、装置及相关设备
CN115357594A (zh) 一种基于区块链的数据模型更新方法及相关设备
CN114996076A (zh) 一种用于芯片仿真的遍历型用例验证方法、系统及电子设备
CN114116337A (zh) 基于pcie链路配置的硬盘测试方法、系统、终端及存储介质
CN110471829B (zh) 软件代码测试覆盖率的检查方法及装置
CN111427623A (zh) 程序退出方法、装置、计算机设备和存储介质
US7155378B2 (en) Method for providing cycle-by-cycle ad HOC verification in a hardware-accelerated environment
CN111352825B (zh) 数据接口的测试方法、装置及服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination