CN113076240A - 数据库测试方法、系统、电子设备和存储介质 - Google Patents
数据库测试方法、系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113076240A CN113076240A CN202010010799.8A CN202010010799A CN113076240A CN 113076240 A CN113076240 A CN 113076240A CN 202010010799 A CN202010010799 A CN 202010010799A CN 113076240 A CN113076240 A CN 113076240A
- Authority
- CN
- China
- Prior art keywords
- task
- database
- execution
- queue
- session
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了一种数据库测试方法、系统、电子设备和存储介质。通过从生产环境中获取执行事务,根据执行事务生成总任务队列,将各任务分别发送至参考数据库和待测数据库,通过参考数据库和待测数据库分别执行所述总任务队列中的任务以获取执行结果集和执行时间,比较参考数据库和待测数据库的执行结果集和执行时间以获取测试结果。可以对数据库进行自动测试,减小数据库测试的成本,提高数据库测试的全面性和准确性。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库测试方法、系统、电子设备和存储介质。
背景技术
数据库测试是依据数据库设计规范对软件系统的数据库结构、数据表及其之间的数据调用关系进行的测试。数据库经常面临升级的问题,而在每次升级之前,应用程序都要经过大量的测试,把在生产环境中所使用的所有功能都在测试环境中重新操作一遍,以此来验证功能的可用性。
现有技术通常是搭建一个测试环境,包括测试用的客户端、服务器和数据库等,安装好相应的测试版本。同时,出于安全的考虑,测试环境与生产环境是独立的,互不影响。搭建好测试环境后,由专门的测试人员在测试设备上进行操作。例如,对于某个应用程序的测试,要求测试人员将程序里的每一个功能都操作一遍,并对测试结果进行判断。
然而,现有技术的测试方法既浪费大量的人力、时间,又无法保证测试的正确性和全面性,如果在测试中被忽略的问题,将来在生产环境中发生了,对整个生产系统将造成极大的影响。
发明内容
有鉴于此,本发明实施例的目的在于提供一种数据库测试方法、系统、电子设备和存储介质,可以对数据库进行自动测试,减小数据库测试的成本,提高数据库测试的全面性和准确性。
第一方面,本发明实施例的提供了一种数据库测试方法,所述方法包括:
从生产环境中获取执行事务;
根据所述执行事务生成总任务队列,所述总任务队列包括多个任务,各任务包括会话标识和对应的可执行指令;
将各任务分别发送至参考数据库和待测数据库;
通过参考数据库执行所述总任务队列中的任务以获取第一执行结果集和第一执行时间;
通过待测数据库执行所述总任务队列中的任务以获取第二执行结果集和第二执行时间;以及
比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果。
优选地,将各任务分别发送至参考数据库和待测数据库包括:
根据所述总任务队列生成任务队列,所述任务队列包括多个任务,各任务包括会话标识和对应的可执行指令,且同一个会话标识只有一个可执行指令;
通过主进程为各个会话创建子进程,所述会话用于连接数据库;
将所述任务队列中任务添加至对应的子进程的运行队列;以及
通过子进程将任务发送至参考数据库和待测数据库。
优选地,根据所述总任务队列生成任务队列包括:
按照预定顺序在所述总任务队列中选择一个任务;
根据选择的任务的会话标识检测对应的会话;
响应于所述会话不存在,根据所述会话标识建立对应的会话;
响应于所述会话存在或建立对应的会话,在所述运行队列中检测选择的任务;以及
响应于选择的任务不存在于运行队列中,将对应的任务添加到任务队列中。
优选地,根据所述总任务队列生成任务队列还包括:
响应于选择的任务存在于运行队列中,按照预定顺序在所述总任务队列中选择下一个任务。
优选地,将所述任务队列中任务添加至对应的子进程的运行队列包括:
获取子进程对应的会话标识;
按照预定顺序在所述任务队列中选择一个任务;
检测选择的任务的会话标识与子进程的会话标识的一致性;以及
响应于选择的任务的会话标识与子进程的会话标识一致,将所述选择的任务添加至所述子进程的运行队列。
优选地,通过子进程将所述任务队列中的各任务添加到运行队列中还包括:
响应于选择的任务的会话标识与子进程的会话标识不一致,按照预定顺序在所述任务队列中选择下一个任务。
优选地,比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果包括:
响应于各任务的第一执行结果集和第二执行结果集一致,且各任务的第一执行时间和第二执行时间一致,测试结果为待测数据库满足性能指标;以及
响应于各任务的第一执行结果集和第二执行结果集不一致,或各任务的第一执行时间和第二执行时间不一致,测试结果为待测数据库不满足性能指标。
第二方面,本发明实施例提供了一种数据库测试系统,所述系统包括生产环境和测试环境,所述测试环境包括:
监测设备,被配置为从生产环境中获取执行事务;
参考数据库和待测数据库;
应用仿真器,被配置为根据所述执行事务生成总任务队列,将各任务分别发送至参考数据库和待测数据库,所述总任务队列包括多个任务,各任务包括会话标识和对应的可执行指令,其中,所述参考数据库被配置为执行所述总任务队列中的任务以获取第一执行结果集和第一执行时间,所述待测数据库被配置为执行所述总任务队列中的任务以获取第二执行结果集和第二执行时间;以及
结果分析器,被配置为比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果。
第三方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如第一方面所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储计算机程序指令,所述计算机程序指令在被处理器执行时实现如第一方面所述的方法。
本发明实施例的技术方案通过从生产环境中获取执行事务,根据执行事务生成总任务队列,将各任务分别发送至参考数据库和待测数据库,通过参考数据库和待测数据库分别执行所述总任务队列中的任务以获取执行结果集和执行时间,比较参考数据库和待测数据库的执行结果集和执行时间以获取测试结果。可以对数据库进行自动测试,减小数据库测试的成本,提高数据库测试的全面性和准确性。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明实施例的数据库测试系统的示意图;
图2是本发明实施例的数据库测试方法的流程图;
图3是本发明实施例的总任务队列的示意图;
图4是本发明实施例的将任务发送至参考数据库和待测数据库的流程图;
图5是本发明实施例的任务队列的示意图;
图6是本发明实施例的获取任务队列的流程图;
图7是本发明实施例的子进程与会话标识的示意图;
图8是本发明实施例的获取运行队列的流程图;
图9是本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个申请文件中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
数据库在开发过程中分为三个阶段:开发、测试和上线,对应的项目部署环境为开发环境、测试环境和生产环境。其中,开发环境又称为软件开发环境(SoftwareDevelopment Environment,SDE),是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件。它由软件工具和环境集成机制构成,软件工具用以支持软件开发的相关过程、活动和任务,环境集成机制为工具集成和软件的开发、维护及管理提供统一的支持。测试环境(Testing environment)是指测试运行其上的软件和硬件环境的描述,以及任何其它与被测软件交互的软件,包括驱动和桩。测试环境是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称。生产环境是指正式提供对外服务的环境,用户正式使用的系统环境。
本发明实施例提供一种数据库测试方法和测试系统,可以适用于多种数据库升级测试,例如Oracle Database(Oracle数据库)、SQL Server(sql server数据库)、MySQL数据库等,可以自动完成数据库升级后的兼容性、性能、压力等问题的测试。
图1是本发明实施例的数据库测试系统的示意图。如图1所示,本发明实施例的数据库测试系统包括生产环境1和测试环境2。其中,生产环境1为用户正式使用的系统环境。测试环境2用于从生产环境1中获取执行事务以对数据库进行测试。
在本实施例中,生产环境1包括客户端11、网络交换机12和服务器13。其中,客户端11通过网络交换机12将执行事务发送至服务器13。服务器13根据所述执行事务获取执行结果集和执行时间,并通过网络交换机12将执行结果集和执行时间返回至客户端11。
进一步地,所述执行事务为数据库事务(Database Transaction)。数据库事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。事务需要满足原子性、一致性、隔离型和持久性。具体地,原子性是指事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。一致性是指几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。隔离性是指事务的执行不受其它事务的干扰,事务执行的中间结果对其它事务必须是透明的。持久性是指对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
在本实施例中,客户端11为用户操作的终端设备,用户通过客户端11输入数据操作请求(也即执行事务),以对数据库进行操作。具体地,客户端11可以是手机、笔记本电脑、台式电脑和平板电脑等。
在本实施例中,网络交换机12是一个扩大网络的设备,可以为子网络中提供更多的连接端口,以便连接更多的客户端。网络交换机具备物理编址、网络拓扑结构、错误校验、帧序列以及流控等功能,同时具有性能价格比高、高度灵活、相对简单、易于实现等特点。
在本实施例中,服务器13用于根据接收到的执行事务对数据库进行操作,并获取执行结果集和执行时间,通过网络交换机12将执行结果集和执行时间返回至客户端11。
在本实施例中,测试环境2包括监测设备21、应用仿真器22、参考数据库23、待测数据库24和结果分析器25。其中,监测设备21被配置为从生产环境中获取执行事务。应用仿真器22被配置为根据所述执行事务生成总任务队列,将各任务分别添加至运行队列中,所述总任务队列包括多个任务,各任务包括可执行指令和对应的会话标识。参考数据库23被配置为执行所述运行队列中的任务以获取第一执行结果集和第一执行时间。待测数据库24被配置为执行所述运行队列中的任务以获取第二执行结果集和第二执行时间。结果分析器25被配置为比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果。
在本实施例中,监测设备21可以通过安装有监控软件的服务器实现。具体地,监测设备21通过分析网络交换机12的镜像端口拷贝过来的数据以获取执行事务。
在本实施例中,应用仿真器22可以通过安装有相应软件程序的服务器来实现。
在本实施例中,参考数据库23和待测数据库24可以分别设置在不同的服务器上,也可以设置在同一服务器上。
在本实施例中,结果分析器25以通过安装有相应软件程序的服务器来实现。
应理解,上述监控软件、应用仿真器、参考数据库、待测数据库和结果分析器可以设置在同一服务器上,也可以分别设置在不同的服务器上。
进一步地,测试环境2完成本发明实施例的测试方法如图2所示,包括如下步骤:
步骤S100、从生产环境中获取执行事务。
在本实施例中,监测设备21通过旁路监控模式从生产环境中获取执行事务,所述执行事务为数据库操作请求。具体地,旁路监控模式是指通过网络交换机的“端口镜像”功能来实现监控。旁路监控模式部署起来比较灵活方便,只需要在网络交换机上面配置镜像端口即可,不会影响现有的网络结构。监测设备通过分析镜像端口拷贝过来的数据,对原始传递的数据包不会造成延时,不会对网速造成任何影响。而且,监测设备一旦故障或者停止运行,不会影响现有网络。
进一步地。监测设备21获取的执行事务包括网络协议命令、运行起止时间、执行结果集和错误代码等。
通过在核心交换机处得到执行事务,使得测试环境和生产环境的操作命令是完全一致的,可以做到自动仿真。由此,可以实现数据库的生产压力全面仿真测试。而现有的业内传统升级测试方法,只能针对部分场景进行压力测试,无法实现全面的真实生产压力测试。
步骤S200、根据所述执行事务生成总任务队列。
在本实施例中,所述总任务队列包括多个任务,所述总任务队列包括多个任务,各任务包括会话标识和对应的可执行指令。
进一步地,监测设备21获取到执行事务后,将执行事务导出至应用仿真器22。应用仿真器22解析执行事务以获取数据库操作指令和对应的会话标识(session-id),并将数据库操作指令进行格式化生成可执行指令SQL(结构化查询语言,Structured QueryLanguage),将SQL和对应的session-id按照执行时间排序生成总任务队列。其中,所述格式化为将所述数据库操作指令转换为预定格式。
具体地,图3是本发明实施例的总任务队列的示意图。如图3所示,本发明实施例以总任务队列中包括N各会话标识为例进行说明,每个会话标识具有对应的至少一个SQL,例如,对于会话标识session-1,其对应的SQL至少包括SQL1和SQL2。
具体地,在计算机中,会话(session)是逻辑上的客户端与服务器的通信交互。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个会话标识(session-id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session-id把这个session检索出来使用,如果检索不到对应的session,服务器会新建一个对应的session。如果客户端请求不包含session-id,则为此客户端创建一个session并且生成一个与此session相关联的session-id,session-id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session-id将被在本次响应中返回给客户端保存。
进一步地,用户通过客户端发送数据操作请求中包括session-id,服务器将客户端的session-id和服务器内存中存放的session-id进行对比,从而找到相对应的session以对数据库进行操作。
步骤S300、将各任务分别发送至参考数据库和待测数据库。
在本实施例中,应用仿真器23将各总任务队列中的各个任务分别发送至参考数据库和待测数据库中,以对数据库进行操作。具体如图4所示,包括如下步骤:
步骤S310、根据所述总任务队列生成任务队列。
在本实施例中,应用仿真器23对总任务队列中的各个任务进行预处理以获取任务队列,所述任务队列包括多个任务,各任务包括会话标识和对应的可执行指令,且同一个会话标识只有一个可执行指令。具体地,图5是本发明实施例的任务队列的示意图。如图5所示,在所述任务队列中,同一个会话标识只有一个可执行指令。例如,对于会话标识session-1,对应的可执行指令为SQL1。
进一步地,根据所述总任务队列生成任务队列如图6所示,包括如下步骤:
步骤S311、按照预定顺序在所述总任务队列中选择一个任务。
在本实施例中,应用仿真器23按照预定顺序在所述总任务队列中选择一个任务。
优选地,应用仿真器23按照执行时间顺序选择一个任务。
步骤S312、根据选择的任务的会话标识检测对应的会话。
在本实施例中,应用仿真器23根据选择的任务的session-id检测对应的session是否存在,session用于连接数据库。
步骤S313、响应于所述会话不存在,根据所述会话标识建立对应的会话。
在本实施例中,应用仿真器23根据选择的任务的session-id检测对应的session是否存在,如果检索不到对应的session,应用仿真器会新建一个对应的session。
步骤S314、响应于所述会话存在,在运行队列中检测选择的任务。
在本实施例中,应用仿真器23根据选择的任务的session-id检测对应的session是否存在,如果已经存在,则说明以前已经为此客户端创建过session,继续使用该session。进一步地,响应于session存在或者建立新的session之后,应用仿真器23在运行队列中检测对应的session-id是否存在,所述运行队列中的任务为正在执行的任务。如果对应的session-id在运行队列中,则说明数据库正在执行任务,返回步骤S311,选择下一个任务。
步骤S315、响应于选择的任务不存在于运行队列中,将对应的任务添加到任务队列中。
在本实施例中,应用仿真器23在运行队列中检测对应的session-id是否存在,如果对应的session-id不在运行队列中,则说明数据库没有执行对应的任务,将所述任务添加至任务队列中。
步骤S320、通过主进程为各个会话创建子进程。
在本实施例中,应用仿真器23通过主进程为每一个session创建一个子进程,每一个子进程负责执行对应session的任务,具体可参照图7。如图7所示,每一个session-id对应一个子进程,由此,子进程可以通过session-id调用对应的session与数据库进行通信。一个子进程在同一时刻只能执行一个SQL。
步骤S330、将所述任务队列中任务添加至对应的子进程的运行队列。
进一步地,将所述任务队列中任务添加至对应的子进程的运行队列如图8所示,包括如下步骤:
步骤S331、获取子进程对应的会话标识。
在本实施例中,应用仿真器23获取子进程对应的session-id。
步骤S332、按照预定顺序在所述任务队列中选择一个任务。
优选地,应用仿真器23按照执行时间顺序在所述任务队列中选择一个任务。
步骤S333、检测选择的任务对应的会话标识与子进程对应的会话标识的一致性。
在本实施例中,应用仿真器23检测选择的任务对应的会话标识与子进程对应的会话标识是否一致。如果不一致,返回步骤S332,选择下一个任务。
步骤S334、将所述选择的任务添加至所述子进程的运行队列。
在本实施例中,响应于选择的任务对应的会话标识与子进程对应的会话标识一致,将所述选择的任务添加至所述子进程的运行队列。具体地,通过进程锁将选择的任务锁定到运行队列,以表明该任务的session正在被选择的子进程使用,以使得其它进程无法使用该session。
步骤S340、通过子进程将任务发送至参考数据库和待测数据库。
在本实施例中,子进程通过session-id调用对应的session,通过session与参考数据库和待测数据库进行通信,将所述SQL发送。
步骤S400、通过参考数据库执行所述运行队列中的任务以获取第一执行结果集和第一执行时间。
在本实施例中,将任务锁定在子进程的运行队列中后,子进程通过会话标识调用对应的session与参考数据库进行通信,通过参考数据库执行对应的SQL以获取第一执行结果集和第一执行时间。
进一步地,所述执行结果集为执行成功,或者执行失败。所述执行时间为运行时间(run time),可执行指令从运行开始到运行结束的时间。
进一步地,所述参考数据库为数据库升级前的版本。
步骤S500、通过待测数据库执行所述运行队列中的任务以获取第二执行结果集和第二执行时间。
在本实施例中,将任务锁定在子进程的运行队列中后,子进程通过会话标识调用对应的session与参考数据库进行通信,通过待测数据库执行对应的SQL以获取第二执行结果集和第二执行时间。
进一步地,所述执行结果集为执行成功,或者执行失败。所述执行时间为运行时间(run time),可执行指令从运行开始到运行结束的时间。
优选地,所述待测数据库为数据库将要升级的版本。
步骤S600、比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果。
在本实施例中,通过结果分析器25比较所述第一执行结果集和第二执行结果集,并比较第一执行时间和第二执行时间。响应于各任务的第一执行结果集和第二执行结果集一致,且各任务的第一执行时间和第二执行时间一致,测试结果为待测数据库满足性能指标。响应于各任务的第一执行结果集和第二执行结果集不一致,或各任务的第一执行时间和第二执行时间不一致,测试结果为待测数据库不满足性能指标。
通过网络旁路技术截取生产环境的真实数据库执行事务以获取SQL语句命令,利用应用仿真器将截取的数据在测试环境中自动回放,模拟生产环境应用程序高度并发的仿真测试机制,最后再通过运行结果结果分析器对结果集和运行时间进行比较,此系统可以提高数据库升级测试的效率和准确性,并实现数据库的压力测试。
本发明实施例通过从生产环境中获取执行事务,根据执行事务生成总任务队列,将各任务分别添加至运行队列中,通过参考数据库和待测数据库分别执行所述运行队列中的任务以获取执行结果集和执行时间,比较参考数据库和待测数据库的执行结果集和执行时间以获取测试结果。可以对数据库进行自动测试,减小数据库测试的成本,提高数据库测试的全面性和准确性。
图9是本发明实施例的电子设备的示意图。图9所示的电子设备为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器91和存储器92。处理器91和存储器92通过总线93连接。存储器92适于存储处理器91可执行的指令或程序。处理器91可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器91通过执行存储器92所存储的指令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其它装置的控制。总线93将上述多个组件连接在一起,同时将上述组件连接到显示控制器94和显示装置以及输入/输出(I/O)装置95。输入/输出(I/O)装置95可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出装置95通过输入/输出(I/O)控制器96与系统相连。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品。
本发明是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程。
这些计算机程序指令可以存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现流程图一个流程或多个流程中指定的功能。
也可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程中指定的功能的装置。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据库测试方法,其特征在于,所述方法包括:
从生产环境中获取执行事务;
根据所述执行事务生成总任务队列,所述总任务队列包括多个任务,各任务包括会话标识和对应的可执行指令;
将各任务分别发送至参考数据库和待测数据库;
通过参考数据库执行所述总任务队列中的任务以获取第一执行结果集和第一执行时间;
通过待测数据库执行所述总任务队列中的任务以获取第二执行结果集和第二执行时间;以及
比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果。
2.根据权利要求1所述的方法,其特征在于,将各任务分别发送至参考数据库和待测数据库包括:
根据所述总任务队列生成任务队列,所述任务队列包括多个任务,各任务包括会话标识和对应的可执行指令,且同一个会话标识只有一个可执行指令;
通过主进程为各个会话创建子进程,所述会话用于连接数据库;
将所述任务队列中任务添加至对应的子进程的运行队列;以及
通过子进程将任务发送至参考数据库和待测数据库。
3.根据权利要求2所述的方法,其特征在于,根据所述总任务队列生成任务队列包括:
按照预定顺序在所述总任务队列中选择一个任务;
根据选择的任务的会话标识检测对应的会话;
响应于所述会话不存在,根据所述会话标识建立对应的会话;
响应于所述会话存在或建立对应的会话,在所述运行队列中检测选择的任务;以及
响应于选择的任务不存在于运行队列中,将对应的任务添加到任务队列中。
4.根据权利要求3所述的方法,其特征在于,根据所述总任务队列生成任务队列还包括:
响应于选择的任务存在于运行队列中,按照预定顺序在所述总任务队列中选择下一个任务。
5.根据权利要求2所述的方法,其特征在于,将所述任务队列中任务添加至对应的子进程的运行队列包括:
获取子进程对应的会话标识;
按照预定顺序在所述任务队列中选择一个任务;
检测选择的任务的会话标识与子进程的会话标识的一致性;以及
响应于选择的任务的会话标识与子进程的会话标识一致,将所述选择的任务添加至所述子进程的运行队列。
6.根据权利要求5所述的方法,其特征在于,通过子进程将所述任务队列中的各任务添加到运行队列中还包括:
响应于选择的任务的会话标识与子进程的会话标识不一致,按照预定顺序在所述任务队列中选择下一个任务。
7.根据权利要求1所述的方法,其特征在于,比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果包括:
响应于各任务的第一执行结果集和第二执行结果集一致,且各任务的第一执行时间和第二执行时间一致,测试结果为待测数据库满足性能指标;以及
响应于各任务的第一执行结果集和第二执行结果集不一致,或各任务的第一执行时间和第二执行时间不一致,测试结果为待测数据库不满足性能指标。
8.一种数据库测试系统,其特征在于,所述系统包括生产环境和测试环境,所述测试环境包括:
监测设备,被配置为从生产环境中获取执行事务;
参考数据库和待测数据库;
应用仿真器,被配置为根据所述执行事务生成总任务队列,将各任务分别发送至参考数据库和待测数据库,所述总任务队列包括多个任务,各任务包括会话标识和对应的可执行指令,其中,所述参考数据库被配置为执行所述总任务队列中的任务以获取第一执行结果集和第一执行时间,所述待测数据库被配置为执行所述总任务队列中的任务以获取第二执行结果集和第二执行时间;以及
结果分析器,被配置为比较所述第一执行结果集和第二执行结果集以及第一执行时间和第二执行时间以获取测试结果。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储计算机程序指令,其特征在于,所述计算机程序指令在被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010010799.8A CN113076240A (zh) | 2020-01-06 | 2020-01-06 | 数据库测试方法、系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010010799.8A CN113076240A (zh) | 2020-01-06 | 2020-01-06 | 数据库测试方法、系统、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113076240A true CN113076240A (zh) | 2021-07-06 |
Family
ID=76609253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010010799.8A Pending CN113076240A (zh) | 2020-01-06 | 2020-01-06 | 数据库测试方法、系统、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076240A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113709448A (zh) * | 2021-08-05 | 2021-11-26 | 贵阳朗玛视讯科技有限公司 | 一种基于iptv系统的测试装置和方法 |
-
2020
- 2020-01-06 CN CN202010010799.8A patent/CN113076240A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113709448A (zh) * | 2021-08-05 | 2021-11-26 | 贵阳朗玛视讯科技有限公司 | 一种基于iptv系统的测试装置和方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5887154A (en) | Business process simulation system | |
US9058430B2 (en) | Testing a software application interfacing with multiple external software applications in a simulated test environment | |
US5758351A (en) | System and method for the creation and use of surrogate information system objects | |
US5812436A (en) | Method and apparatus for testing and analyzing the conformance of a proposed set of requirements for a proposed network management application | |
US20040153837A1 (en) | Automated testing | |
CN111722839B (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
US20060265475A9 (en) | Testing web services as components | |
CN111737140B (zh) | 接口自动化测试方法、装置、设备及计算机可读存储介质 | |
US20210191845A1 (en) | Unit testing of components of dataflow graphs | |
CN109977012B (zh) | 系统的联调测试方法、装置、设备及计算机可读存储介质 | |
US20120291013A1 (en) | Systems and Methods for Synchronizing Software Execution Across Data Processing Systems and Platforms | |
JP4370525B2 (ja) | アプリケーション環境チェック装置及び方法とそのプログラム | |
CN112463144A (zh) | 分布式存储的命令行服务方法、系统、终端及存储介质 | |
CN111752843A (zh) | 用于确定影响面的方法、装置、电子设备及可读存储介质 | |
JP2002535773A (ja) | 組み込み型のオペーレティングシステムを有する装置をテストして妥当性を検査するためのシステム及び方法 | |
US20160140197A1 (en) | Cross-system synchronization of hierarchical applications | |
CN110688305A (zh) | 测试环境同步方法、装置、介质、电子设备 | |
CN112749219A (zh) | 数据抽取方法、装置、电子设备、存储介质及程序产品 | |
CN113742215A (zh) | 一种自动配置和调用测试工具进行测试分析的方法及系统 | |
CN113076240A (zh) | 数据库测试方法、系统、电子设备和存储介质 | |
JPH08235098A (ja) | 分散アプリケーション通信方式 | |
CN110286882B (zh) | 一种基于模型检测的前台系统设计与验证方法 | |
CN111259619A (zh) | 配置对象的控制方法、装置、存储介质及验证平台 | |
CN114676198A (zh) | 一种面向多模数据库的基准评测系统及其构建方法 | |
CN112003826A (zh) | 一种ipmi数据扩展方法和装置 |
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 |