CN108415835A - 分布式数据库测试方法、装置、设备及计算机可读介质 - Google Patents
分布式数据库测试方法、装置、设备及计算机可读介质 Download PDFInfo
- Publication number
- CN108415835A CN108415835A CN201810154073.4A CN201810154073A CN108415835A CN 108415835 A CN108415835 A CN 108415835A CN 201810154073 A CN201810154073 A CN 201810154073A CN 108415835 A CN108415835 A CN 108415835A
- Authority
- CN
- China
- Prior art keywords
- values
- data
- test
- distributed data
- maximum
- 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.)
- Granted
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种分布式数据库测试方法,包括:生成测试数据;执行异常模拟,产生异常环境;在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作;对服务可用性和数据正确性进行验证。本发明实施例可对支持多点并发数据读写的分布式数据库进行集群异常情况下服务可用性和数据正确性的验证,实现了数据库多实例的并发验证,弥补了当前仅能验证单一数据库实例的空白。同时还集成了集群操作和异常模拟功能,可实现异常测试的全自动化,大大节省了测试人员的人力开销。
Description
技术领域
本发明涉及数据库测试技术领域,尤其涉及一种分布式数据库测试方法及装置、设备和计算机可读介质。
背景技术
随着数据库技术的快速变革,分布式数据库逐步兴起。分布式数据库的系统架构完全不同于主流的关系型数据库和NoSQL数据库,同时这种分布式数据库支持多点接入的数据读写。
而对于分布式数据库的异常测试,则不同于传统的关系型数据库。主流的关系型数据库(如mysql),其多为一主库多备库的架构。当主库实例/机器/网络发生异常时,主要测试集群在多个从库实例中选择出一个实例去担任下一个主库实例、以及将选中的从库实例切换为主库实例过程中,数据服务的可用性和数据的正确性,测试和验证的重点在原主库实例和新主库实例上,从根本上说都是单一实例的验证。
在支持多点并发数据读写的分布式数据库中,每个实例的地位和作用是相同的,它是没有主库实例的概念的,多个实例之间通过时间戳进行实例间的同步和通信。在某个实例/机器/网络发生异常时,需要验证的是集群中其他所有处于正常状态的数据库实例对外提供的数据服务可用性和数据正确性,那么显而易见的,原有的对单一数据库实例验证的数据库异常测试方法无法满足这种支持多点并发数据读写的分布式数据库异常测试需求。
发明内容
本发明实施例提供一种分布式数据库测试方法、装置、设备及计算机可读介质,以解决或缓解现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种分布式数据库测试方法,包括:
制定数据测试模型;
生成测试数据;
执行异常模拟,产生异常环境;
在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作;
对服务可用性和数据正确性进行验证。
结合第一方面,本发明在第一方面的第一种实现方式中,所述数据测试模型为:同一ID的数据只能执行一次插入操作,并且查询、修改和删除的操作发生在插入操作之后。
结合第一方面的第一种实现方式,本发明在第一方面的第二种实现方式中,所述测试数据的形式为(id,k,c),所述id字段值为正整数,所述k=id*n,其中n为常量;所述c的字段值为字母A-Z中第m位对应的值,其中m=id%26,表示id的数值除以26后取余数。
结合第一方面,本发明在第一方面的第三种实现方式中,所述异常模拟包括:实例异常模拟、链路异常模拟和机器异常模拟。
结合第一方面的第二种实现方式,本发明在第一方面的第四种实现方式中,所述在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作的步骤中,包括:
通过最大Id值日志文件记录当前最大id值;
读取最大Id值日志文件中的最大id值,向多个数据库实例节点执行id加1插入操作,将插入操作的执行结果记录到i.log文件中,并对最大Id值日志文件中的最大id值进行更新;
在1到最大id值的范围内对多个数据库实例节点同时执行查询、修改和删除操作,并分别将执行结果记录到查询日志文件、更新日志文件和删除日志文件。
结合第一方面的第四种实现方式,本发明在第一方面的第五种实现方式中,所述对服务可用性和数据正确性进行验证的步骤中,包括:
判断SQL的操作log文件中是否有操作失败的记录,若有则表明验证结果为失败;
当没有操作失败记录,再判断其中一个id值是否在删除日志文件中出现,若有,判断该id值的查询预期结果是否为空;
当该id没有出现在删除日志文件中,再判断该id值是否在更新日志文件中出现,若有,以该id值在更新日志文件中出现次数表示其被更新的次数t,并预设每次更新时k值增加1,判断该id值的查询预期结果是否为:k=id*n+t、c值不变;
当该id没有出现在删除日志文件和更新日志文件中,判断该id的查询预期结果是否与初始测试数据相同。
第二方面,本发明实施例提供了一种分布式数据库测试装置,包括:
测试模型制定模块,用于制定数据测试模型;
测试数据生成模块,用于生成测试数据;
异常模拟模块,用于执行异常模拟,产生异常环境;
操作模块,用于在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作;
验证模块,用于对服务可用性和数据正确性进行验证。
结合第二方面,本发明在第二方面第一种实现方式中,所述数据测试模型为:同一ID的数据只能执行一次插入操作,并且查询、修改和删除的操作发生在插入操作之后。
结合第二方面的第一种实现方式,本发明在第二方面第二种实现方式中,所述测试数据的形式为(id,k,c),所述id字段值为正整数,所述k=id*n,其中n为常量;所述c的字段值为字母A-Z中第m位对应的值,其中m=id%26,表示id的数值除以26后取余数。
结合第二方面,本发明在第二方面第三种实现方式中,所述异常模拟包括:实例异常模拟、链路异常模拟和机器异常模拟。
结合第二方面的第二种实现方式,本发明在第二方面的第四种实现方式中,所述操作模块中包括:
记录子模块,用于通过最大Id值日志文件记录当前最大id值;
读取子模块,用于读取最大Id值日志文件中的最大id值,向多个数据库实例节点执行id加1插入操作,将插入操作的执行结果记录到i.log文件中,并对最大Id值日志文件中的最大id值进行更新;
执行子模块,用于在1到最大id值的范围内对多个数据库实例节点同时执行查询、修改和删除操作,并分别将执行结果记录到查询日志文件、更新日志文件和删除日志文件。
结合第二方面的第四种实现方式,本发明在第二方面的第五种实现方式中,所述验证模块包括:
第一验证子模块,用于判断SQL的操作log文件中是否有操作失败的记录,若有则表明验证结果为失败;
第二验证子模块,用于当没有操作失败记录,再判断其中一个id值是否在删除日志文件中出现,若有,判断该id值的查询预期结果是否为空;
第三验证子模块,用于当该id没有出现在删除日志文件中,再判断该id值是否在更新日志文件中出现,若有,以该id值在更新日志文件中出现次数表示其被更新的次数m,并预设每次更新时k值增加1,判断该id值的查询预期结果是否为k=id*n+m、c值不变;
第四验证子模块,用于当该id没有出现在删除日志文件和更新日志文件中,判断该id的查询预期结果是否与初始测试数据相同
所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,分布式数据库测试装置的结构中包括处理器和存储器,所述存储器用于存储支持分布式数据库测试装置执行上述第一方面中分布式数据库测试方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述分布式数据库测试装置还可以包括通信接口,用于分布式数据库测试装置与其他设备或通信网络通信。
第三方面,本发明实施例提供了一种计算机可读介质,用于存储分布式数据库测试装置所用的计算机软件指令,其包括用于执行上述第一方面的分布式数据库测试方法所涉及的程序。
上述技术方案中的一个技术方案具有如下优点或有益效果:本发明实施例可对支持多点并发数据读写的分布式数据库进行集群异常情况下服务可用性和数据正确性的验证,实现了数据库多实例的并发验证,弥补了当前仅能验证单一数据库实例的空白。同时还集成了集群操作和异常模拟功能,可实现异常测试的全自动化,大大节省了测试人员的人力开销。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1为实施例一的分布式数据库测试方法的步骤流程图;
图2a为实施例一的步骤S110的第一种操作序列示意图;
图2b为实施例一的步骤S110的第二种操作序列示意图;
图2c为实施例一的步骤S110的第三种操作序列示意图;
图2d为实施例一的步骤S110的第四种操作序列示意图;
图2e为实施例一的步骤S110的第五种操作序列示意图;
图2f为实施例一的步骤S110的第六种操作序列示意图;
图3为实施例一的步骤S140的具体步骤流程图;
图4为实施例一的步骤S140的实现示意图;
图5为实施例一的步骤S150的具体步骤流程图;
图6为实施例一的步骤S150的实现示意图;
图7为实施例三的分布式数据库测试装置的连接框图;
图8为实施例五的分布式数据库测试设备连接框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。本发明实施例主要提供了一种通过在客户端进行分布式数据库测试的方法及装置,下面分别通过以下实施例进行技术方案的展开描述。
实施例一
请参阅图1,其为本发明实施例一的分布式数据库测试方法的步骤流程图。本实施例一提供了一种分布式数据库测试方法,包括以下步骤:
S110:制定数据测试模型。
在制定数据测试模型时,需要简化数据测试模型。因为对于同一ID的记录来说,进行一次SQL操作,该记录有4种可能的变化(增删改查),那么进行N次SQL操作,该记录就有4的N次方种可能的变化,这样庞大的排列组合是无法验证数据的正确性的。由于SQL语句的顺序序列只影响数据的结果、并不影响数据库内部的逻辑,故所述数据测试模型可以简化为:同一ID的数据只能执行一次插入(insert)操作,并且查询(select)、修改(update)和删除(delete)的操作发生在插入(insert)操作之后。
以下具体介绍本实施例的模型简化过程及原理:
首先,模型的前提为:模拟真实的生产环境,集群有一定量的数据存在,集群原有数据和新增数据都可能发生变更。
模型标准为:覆盖insert、select、update、delete操作,对多个数据库实例节点同时并发随机发压,需满足条件1:所有操作的预期结果都应是成功的,因为若有预期的失败操作存在、则无法判断数据库的多实例节点是否存在异常;条件2:每条数据记录的预期值是唯一且确定的,这样才好验证数据的正确性;条件3:符合用户行为习惯
那么,Select操作不会变更记录,那么先对insert、update、delete原子操作做全排列,如图2a-图2f所示,其中I代表insert操作,U代表update操作,D代表delete操作。前两种序列满足模型标准。第三种序列会出现主键duplicate错误,不满足条件1。第四种序列如果后续操作是update,那最终记录预期值就是初始值+1次update操作,而在整个操作序列中有2次update,其预期结果是不确定的,不满足条件2。第五种序列不满足用户操作数据的场景,不满足条件3。第六种序列同第四种序列,不满足条件2。
基于上述分析,数据模型可以简化为:
假设同一id数据只insert一次,并且select、update和delete发生在insert之后,select、update和delete操作可以频繁多次发生。Update只做整形字段加1的操作。
基于以上的数据模型,记录的预期结果为:如果出现过delete操作,则记录预期结果为空;否则的话,出现过update操作,则记录预期结果为初始值加上update次数,若是其他情况则记录预期结果为初始值。
S120:生成测试数据。
在本步骤中,生成测试数据采用的语句如下:
CREATE TABLE sbtest(
id INT NOT NULL DEFAULT 0:::INT,
k INT NOT NULL DEFAULT 0:::INT,
c STRING(120)NOT NULL DEFAULT”:::STRING,
CONSTRAINT""primary""PRIMARY KEY(id ASC),
FAMILY""primary""(id,k,c)
);
其中,所述测试数据的形式为(id,k,c),所述id字段值为正整数,所述k=id*n,其中n为常量;所述c的字段值为字母A-Z中第m位对应的值,其中m=id%26,表示id的数值除以26后取余数。
根据上述的测试数据的生成规则预先在数据库中初始化一定量的测试数据,这些数据的id字段值从1开始连续增加。
S130:执行异常模拟,产生异常环境。
在一个实施例中,所述异常模拟包括:实例异常模拟。其中,所述实例异常可以采用kill命令终止进程的方式执行。通过执行异常模拟,以便接下来测试分布式数据库在异常的环境下的数据操作是否有效正确。
S140:在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作。
请参阅图3和图4,其分别为步骤S140的具体步骤流程图和实现示意图。所述S140步骤中,包括:
S141:通过最大Id值日志文件记录当前最大id值。
S142:读取最大Id值日志文件中的最大id值,向多个数据库实例节点执行id加1插入操作,将插入操作的执行结果记录到i.log文件中,并对最大Id值日志文件中的最大id值进行更新。
首先,创建四个进程,分别为插入进程(insert),查询进程(select),更新进程(update)和删除进程(delete)。而根据数据测试模型,首先先执行插入进程(insert)。在插入(insert)进程中读取最大Id值日志文件(Max_Id)中记录的最大值id后,对多个数据库实例节点执行id加1的插入操作,并将插入操作的执行结果记录到i.log文件中。其中,在一个实施例中,可以设定一个阈值,当插入的记录条数达到设定阈值时,再更新最大id值。如图3所示,可以在实现中采用counter计数器进行记录。
S143:在1到最大id值的范围内对多个数据库实例节点同时执行查询、修改和删除操作,并分别将执行结果记录到查询日志文件(s.log)、更新日志文件(u.log)和删除日志文件(d.log)。
这样所有进程定期的对Max_Id文件进行读写,保证数据库中原有数据和新增数据都可以被验证到。
另外,在一个实施例中,可以对查询条数、更新条数和删除条数和运行时间设置阈值。当在执行查询操作时,如果查询条数或查询运行时间达到预设值时,则结束查询操作。同理,当执行更新操作和删除操作时,当更新条数和更新运行时间达到预设值时,结束更新操作。当删除条数和删除操作运行时间达到预设值时,结束删除操作。
S150:对服务可用性和数据正确性进行验证。
如图5和图6所示,其分别是步骤S150的具体步骤流程图和实现示意图。
所述步骤S150中,包括:
S151:判断SQL的操作log文件中是否有操作失败的记录,若有则表明验证结果为失败。
在本步骤中,先读取4个操作log文件,然后判断是否有操作错误信息,若有则验证失败,若没有则进行下一步验证。
S152:当没有操作失败记录,再判断其中一个id值是否在删除日志文件(d.log文件)中出现,若有,判断该id值的查询预期结果是否为空。
在本步骤中,验证删除操作是否正确。当其中一个id在删除日志文件(d.log)中出现,则表示该id对应的数据被执行了删除操作。那么查询该id值,正确的结果应该是为空,也即查询不到。
S153:当该id没有出现在删除日志文件(d.log)中,再判断该id值是否在更新日志文件(u.log)中出现,若有,以该id值在更新日志文件(u.log)中出现次数表示其被更新的次数t,并预设每次更新时k值增加1,判断该id值的查询预期结果是否为:k=id*n+t、c值不变。
在本步骤中,如果该id出现在更新日志文件(u.log)中时,则表明该id发生了一次更新操作。而在本步骤中,每次更新操作,对k值增加1,也即k=id*n+t,t为更新次数。此时,通过查询该id值,若此时的k值符合预设结果,则表明验证成功。
S154:当该id没有出现在删除日志文件(d.log)和更新日志文件(u.log)中,判断该id的查询预期结果是否与初始测试数据相同。
在本步骤中,如果在d.log和u.log都没发现有该id值,则表明该id值没有进行删除操作和更新操作,即该id值对应的数据没有被修改。那么,当查询该id值时,如果该id值对应的数据与初始数据一致,则表明验证成功。
实施例二
与实施例一的区别在于:本实施例二在执行异常模拟的步骤中,所采用的异常模
拟还包括:链路异常模拟和机器异常模拟。其中,当使用链路异常模拟时,可以采用
iptables+tc模拟链路异常状态。当采用机器异常可以采用cpulimit+Linux命令进行模拟。
本实施例二的原理与实施例一相同,故不再赘述。
实施例三
本实施例三对应于实施例一,提供了一种分布式数据库测试装置。请参阅图7,其为本实施例三的分布式数据库测试装置的连接框图。
本实施例三提供了一种分布式数据库测试装置,包括:
测试模型制定模块110,用于制定数据测试模型。
所述数据测试模型为:同一ID的数据只能执行一次插入操作,并且查询、修改和删除的操作发生在增加操作之后。
测试数据生成模块120,用于生成测试数据。
所述测试数据的形式为(id,k,c),所述id字段值为正整数,所述k=id*n,其中n为常量;所述c的字段值为字母A-Z中第m位对应的值,其中m=id%26,表示id的数值除以26后取余数。
异常模拟模块130,用于执行异常模拟,产生异常环境。
在一个实施例中,所述异常模拟包括:实例异常模拟。其中,所述实例异常可以采用kill命令终止进程的方式进行。
操作模块140,用于在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作。
所述操作模块140中包括:
记录子模块141,用于通过最大Id值日志文件记录当前最大id值。
读取子模块142,用于读取最大Id值日志文件中的最大id值,向多个数据库实例节点执行id加1插入操作,将插入操作的执行结果记录到i.log文件中,并对最大Id值日志文件中的最大id值进行更新。
执行子模块143,用于在1到最大id值的范围内对多个数据库实例节点同时执行查询、修改和删除操作,并分别将执行结果记录到查询日志文件、更新日志文件和删除日志文件。
验证模块150,用于对服务可用性和数据正确性进行验证。
所述验证模块150包括:
第一验证子模块151,用于判断SQL的操作log文件中是否有操作失败的记录,若有则表明验证结果为失败;
第二验证子模块152,用于当没有操作失败记录,再判断其中一个id值是否在删除日志文件中出现,若有,判断该id值的查询预期结果是否为空;
第三验证子模块153,用于当该id没有出现在删除日志文件中,再判断该id值是否在更新日志文件中出现,若有,以该id值在更新日志文件中出现次数表示其被更新的次数m,并预设每次更新时k值增加1,判断该id值的查询预期结果是否为k=id*n+m、c值不变;
第四验证子模块154,用于当该id没有出现在删除日志文件和更新日志文件中,判断该id的查询预期结果是否与初始测试数据相同。
本实施例三与实施例一的原理相同,故不再赘述。
实施例四
本实施例四与实施例三的区别在于:所述异常模拟模块130在执行异常模拟时,所
采用的异常模拟还可以包括:链路异常模拟和机器异常模拟。其中,当使用链路异常模拟
时,可以采用iptables+tc模拟链路异常状态。当采用机器异常可以采用cpulimit+Linux命
令进行模拟。
本实施例四的原理与实施例二相同,故不再赘述。本实施例四的应用方式与原理与实施例二相同,故不再赘述。
实施例五
本发明实施例五提供一种分布式数据库测试设备,如图8所示,该设备包括:存储器310和处理器320,存储器310内存储有可在处理器320上运行的计算机程序。所述处理器320执行所述计算机程序时实现上述实施例中的分布式数据库测试方法。所述存储器310和处理器320的数量可以为一个或多个。
该设备还包括:
通信接口330,用于与外界设备进行通信,进行数据交互传输。
存储器310可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器310、处理器320和通信接口330独立实现,则存储器310、处理器320和通信接口330可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,PeripheralComponent)总线或扩展工业标准体系结构(EISA,Extended Industry StandardComponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器310、处理器320及通信接口330集成在一块芯片上,则存储器310、处理器320及通信接口330可以通过内部接口完成相互间的通信。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
本发明实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质的更具体的示例至少(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
在本发明实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于指令执行系统、输入法或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、射频(Radio Frequency,RF)等等,或者上述的任意合适的组合。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
综上所述,本发明实施例可对支持多点并发数据读写的分布式数据库进行集群异常情况下服务可用性和数据正确性的验证,实现了数据库多实例的并发验证,弥补了当前仅能验证单一数据库实例的空白。同时还集成了集群操作和异常模拟功能,可实现异常测试的全自动化,大大节省了测试人员的人力开销。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种分布式数据库测试方法,其特征在于,包括:
制定数据测试模型;
生成测试数据;
执行异常模拟,产生异常环境;
在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作;以及
对服务可用性和数据正确性进行验证。
2.根据权利要求1所述分布式数据库测试方法,其特征在于,所述数据测试模型为:同一ID的数据只能执行一次插入操作,并且查询、修改和删除的操作发生在插入操作之后。
3.根据权利要求2所述分布式数据库测试方法,其特征在于,所述测试数据的形式为(id,k,c),所述id字段值为正整数,所述k=id*n,其中n为常量;所述c的字段值为字母A-Z中第m位对应的值,其中m=id%26,表示id的数值除以26后取余数。
4.根据权利要求1所述分布式数据库测试方法,其特征在于,所述异常模拟包括:实例异常模拟、链路异常模拟和机器异常模拟。
5.根据权利要求3所述分布式数据库测试方法,其特征在于,所述在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作的步骤中,包括:
通过最大Id值日志文件记录当前最大id值;
读取最大Id值日志文件中的最大id值,向多个数据库实例节点执行id加1插入操作,将插入操作的执行结果记录到i.log文件中,并对最大Id值日志文件中的最大id值进行更新;以及
在1到最大id值的范围内对多个数据库实例节点同时执行查询、修改和删除操作,并分别将执行结果记录到查询日志文件、更新日志文件和删除日志文件。
6.根据权利要求5所述分布式数据库测试方法,其特征在于,所述对服务可用性和数据正确性进行验证的步骤中,包括:
判断SQL的操作log文件中是否有操作失败的记录,若有则表明验证结果为失败;
当没有操作失败记录,再判断其中一个id值是否在删除日志文件中出现,若有,判断该id值的查询预期结果是否为空;
当该id没有出现在删除日志文件中,再判断该id值是否在更新日志文件中出现,若有,以该id值在更新日志文件中出现次数表示其被更新的次数t,并预设每次更新时k值增加1,判断该id值的查询预期结果是否为:k=id*n+t、c值不变;以及
当该id没有出现在删除日志文件和更新日志文件中,判断该id的查询预期结果是否与初始测试数据相同。
7.一种分布式数据库测试装置,其特征在于,包括:
测试模型制定模块,用于制定数据测试模型;
测试数据生成模块,用于生成测试数据;
异常模拟模块,用于执行异常模拟,产生异常环境;
操作模块,用于在异常环境下根据所述数据测试模型和测试数据同时对分布式数据库的多个数据库实例进行相应的操作;以及
验证模块,用于对服务可用性和数据正确性进行验证。
8.根据权利要求7所述分布式数据库测试装置,其特征在于,所述数据测试模型为:同一ID的数据只能执行一次插入操作,并且查询、修改和删除的操作发生在插入操作之后。
9.根据权利要求8所述分布式数据库测试装置,其特征在于,所述测试数据的形式为(id,k,c),所述id字段值为正整数,所述k=id*n,其中n为常量;所述c的字段值为字母A-Z中第m位对应的值,其中m=id%26,表示id的数值除以26后取余数。
10.根据权利要求7所述分布式数据库测试装置,其特征在于,所述异常模拟包括:实例异常模拟、链路异常模拟和机器异常模拟。
11.根据权利要求9所述分布式数据库测试装置,其特征在于,所述操作模块中包括:
记录子模块,用于通过最大Id值日志文件记录当前最大id值;
读取子模块,用于读取最大Id值日志文件中的最大id值,向多个数据库实例节点执行id加1插入操作,将插入操作的执行结果记录到i.log文件中,并对最大Id值日志文件中的最大id值进行更新;以及
执行子模块,用于在1到最大id值的范围内对多个数据库实例节点同时执行查询、修改和删除操作,并分别将执行结果记录到查询日志文件、更新日志文件和删除日志文件。
12.根据权利要求11所述分布式数据库测试装置,其特征在于,所述验证模块包括:
第一验证子模块,用于判断SQL的操作log文件中是否有操作失败的记录,若有则表明验证结果为失败;
第二验证子模块,用于当没有操作失败记录,再判断其中一个id值是否在删除日志文件中出现,若有,判断该id值的查询预期结果是否为空;
第三验证子模块,用于当该id没有出现在删除日志文件中,再判断该id值是否在更新日志文件中出现,若有,以该id值在更新日志文件中出现次数表示其被更新的次数m,并预设每次更新时k值增加1,判断该id值的查询预期结果是否为k=id*n+m、c值不变;以及
第四验证子模块,用于当该id没有出现在删除日志文件和更新日志文件中,判断该id的查询预期结果是否与初始测试数据相同。
13.一种分布式数据库测试设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-6中任一所述的分布式数据库测试方法。
14.一种计算机可读介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的分布式数据库测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810154073.4A CN108415835B (zh) | 2018-02-22 | 2018-02-22 | 分布式数据库测试方法、装置、设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810154073.4A CN108415835B (zh) | 2018-02-22 | 2018-02-22 | 分布式数据库测试方法、装置、设备及计算机可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108415835A true CN108415835A (zh) | 2018-08-17 |
CN108415835B CN108415835B (zh) | 2019-07-30 |
Family
ID=63128683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810154073.4A Active CN108415835B (zh) | 2018-02-22 | 2018-02-22 | 分布式数据库测试方法、装置、设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108415835B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240933A (zh) * | 2018-09-28 | 2019-01-18 | 四川长虹电器股份有限公司 | 一种数据表操作结果断言方法 |
CN109408366A (zh) * | 2018-09-03 | 2019-03-01 | 平安科技(深圳)有限公司 | 数据源配置测试方法、系统、计算机设备和存储介质 |
CN109614389A (zh) * | 2018-11-28 | 2019-04-12 | 山东中创软件商用中间件股份有限公司 | 一种数据入库方法、系统、设备及介质 |
CN109783391A (zh) * | 2019-01-28 | 2019-05-21 | 浪潮软件集团有限公司 | 一种基于用户大数据行为反馈数据的分布式数据库测试方法和系统 |
CN109921960A (zh) * | 2019-03-27 | 2019-06-21 | 北京百度网讯科技有限公司 | 一种idc机房网络异常测试方法及装置 |
CN110147328A (zh) * | 2019-05-24 | 2019-08-20 | 深圳市网心科技有限公司 | 一种数据库性能测试方法、系统、电子设备和存储介质 |
CN110971643A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 消息推送方法和装置、存储介质和处理器 |
CN111309750A (zh) * | 2020-03-31 | 2020-06-19 | 中国邮政储蓄银行股份有限公司 | 图数据库的数据更新方法和装置 |
CN112732952A (zh) * | 2019-10-28 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种分布式推荐系统中功能模块的监控方法及相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609472A (zh) * | 2012-01-18 | 2012-07-25 | 深圳市同洲视讯传媒有限公司 | 进行分布式数据库系统性能测试的方法及系统 |
CN103678133A (zh) * | 2013-12-18 | 2014-03-26 | 中国科学院深圳先进技术研究院 | 一种用于应用软件云测试的任务调度系统 |
CN105512038A (zh) * | 2015-12-12 | 2016-04-20 | 天津南大通用数据技术股份有限公司 | 一种基于数据库自动化并行测试平台执行方法 |
CN105589928A (zh) * | 2015-12-02 | 2016-05-18 | 中国银联股份有限公司 | 用于分布式数据处理系统的模拟测试方法 |
-
2018
- 2018-02-22 CN CN201810154073.4A patent/CN108415835B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609472A (zh) * | 2012-01-18 | 2012-07-25 | 深圳市同洲视讯传媒有限公司 | 进行分布式数据库系统性能测试的方法及系统 |
CN103678133A (zh) * | 2013-12-18 | 2014-03-26 | 中国科学院深圳先进技术研究院 | 一种用于应用软件云测试的任务调度系统 |
CN105589928A (zh) * | 2015-12-02 | 2016-05-18 | 中国银联股份有限公司 | 用于分布式数据处理系统的模拟测试方法 |
CN105512038A (zh) * | 2015-12-12 | 2016-04-20 | 天津南大通用数据技术股份有限公司 | 一种基于数据库自动化并行测试平台执行方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408366A (zh) * | 2018-09-03 | 2019-03-01 | 平安科技(深圳)有限公司 | 数据源配置测试方法、系统、计算机设备和存储介质 |
CN109408366B (zh) * | 2018-09-03 | 2023-05-30 | 平安科技(深圳)有限公司 | 数据源配置测试方法、系统、计算机设备和存储介质 |
CN109240933A (zh) * | 2018-09-28 | 2019-01-18 | 四川长虹电器股份有限公司 | 一种数据表操作结果断言方法 |
CN110971643A (zh) * | 2018-09-30 | 2020-04-07 | 北京国双科技有限公司 | 消息推送方法和装置、存储介质和处理器 |
CN110971643B (zh) * | 2018-09-30 | 2022-07-29 | 北京国双科技有限公司 | 消息推送方法和装置、存储介质和处理器 |
CN109614389A (zh) * | 2018-11-28 | 2019-04-12 | 山东中创软件商用中间件股份有限公司 | 一种数据入库方法、系统、设备及介质 |
CN109783391A (zh) * | 2019-01-28 | 2019-05-21 | 浪潮软件集团有限公司 | 一种基于用户大数据行为反馈数据的分布式数据库测试方法和系统 |
CN109921960A (zh) * | 2019-03-27 | 2019-06-21 | 北京百度网讯科技有限公司 | 一种idc机房网络异常测试方法及装置 |
CN110147328A (zh) * | 2019-05-24 | 2019-08-20 | 深圳市网心科技有限公司 | 一种数据库性能测试方法、系统、电子设备和存储介质 |
CN112732952A (zh) * | 2019-10-28 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种分布式推荐系统中功能模块的监控方法及相关装置 |
CN111309750A (zh) * | 2020-03-31 | 2020-06-19 | 中国邮政储蓄银行股份有限公司 | 图数据库的数据更新方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108415835B (zh) | 2019-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108415835B (zh) | 分布式数据库测试方法、装置、设备及计算机可读介质 | |
CN107885499A (zh) | 一种接口文档生成方法及终端设备 | |
CN110781231A (zh) | 基于数据库的批量导入方法、装置、设备及存储介质 | |
CN108073146B (zh) | 使用架构表示的要求的自动化处理控制硬件工程规划 | |
CN109522228A (zh) | 接口自动化测试数据构造方法、装置、平台及存储介质 | |
CN108733671B (zh) | 数据历史归档的方法和装置 | |
CN115048254B (zh) | 数据分配策略的仿真测试方法、系统、设备和可读介质 | |
CN105446952A (zh) | 用于处理语义片段的方法和系统 | |
JP5651050B2 (ja) | データ生成装置及びデータ生成プログラム | |
CN114489762A (zh) | 一种多版本应用的实现方法、系统及电子设备 | |
US20210117593A1 (en) | Configurable digital twin | |
CN111506552A (zh) | 一种树状结构的动态数据库设计方法及系统 | |
US11301426B1 (en) | Maintaining stable record identifiers in the presence of updated data records | |
CN109376148B (zh) | 缓慢变化维表的数据处理方法、装置、电子设备 | |
CN114385243B (zh) | 一种控制编排引擎用指令自动化下发方法及装置 | |
CN104536897A (zh) | 基于关键字的自动测试方法及系统 | |
CN113535727A (zh) | 信息系统的数据输出方法及数据输出装置、电子设备 | |
CN116361297B (zh) | 一种分库分表方法、装置、设备及存储介质 | |
CN111767299A (zh) | 数据库操作方法、装置、系统、存储介质及电子设备 | |
CN114047980B (zh) | 可编程控制器配置数据的管理系统 | |
CN117135050B (zh) | 应用部署方法和装置 | |
JP2021056570A (ja) | データベースの分割システム、データベースの分割方法、及びデータベースの分割プログラム | |
WO2022201294A1 (en) | Physical model generation apparatus, control method, and computer-readable storage medium | |
CN117113011B (zh) | 基于xml技术的煤矿电力整定数据拼接方法和装置 | |
WO2021187305A1 (ja) | 情報処理システム、情報処理方法及び記録媒体 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |