一种数据库迁移的测试方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据库迁移的测试方法和装置。
背景技术
相关技术中,当数据库的磁盘空间已满又无法扩充时,往往需要对数据库进行迁移,将数据库中存储的数据迁移到磁盘空间更大的库中。由于数据库迁移的过程会涉及到多个不同的阶段,所以在对数据库迁移进行测试时,往往需要对测试用例进行大幅修改,成本较高,且测试效率低下。
发明内容
有鉴于此,本申请提供一种数据库迁移的测试方法和装置。
具体地,本申请是通过如下技术方案实现的:
一种数据库迁移的测试方法,所述方法包括:
获取数据库的迁移阶段;
根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库;
将所述当前测试操作指定到所述目标库。
可选的,所述根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库,包括:
当所述迁移阶段为写老读老时,将迁移前的旧数据库确定为所述待测试的目标库;
当所述迁移阶段为写新读新时,将迁移后的新数据库确定为所述待测试的目标库;
当所述迁移阶段为双写读老时,如果所述操作类型为读操作时,则将所述旧数据库确定为所述待测试的目标库;
当所述迁移阶段为双写读老时,如果所述操作类型为写测试时,则将所述旧数据库和所述新数据库确定为所述待测试的目标库;
当所述迁移阶段为双写读新时,如果所述操作类型为读测试时,则将所述新数据库确定为所述待测试的目标库;
当所述迁移阶段为双写读新时,如果所述操作类型为写测试时,则将所述旧数据库和所述新数据库确定为所述待测试的目标库。
可选的,在将所述当前测试操作指定到所述目标库之前,所述方法还包括:
根据数据库备份文件,对所述数据库进行数据还原操作。
可选的,所述对所述数据库进行数据还原操作,包括:
针对所述数据库备份文件中的每张数据备份表,判断所述数据备份表是否命中预设的迁移清单;
当所述数据备份表命中所述迁移清单时,根据所述迁移阶段确定待还原的目标库;
根据所述数据备份表还原所述待还原的目标库中的数据。
可选的,所述根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库,包括:
所述根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库的访问信息;
所述将所述当前测试操作指定到所述目标库,包括:
根据所述目标库的访问信息,对所述目标库进行测试操作;
其中,所述访问信息包括:链接地址、登录名以及登录密码。
一种数据库迁移的测试装置,所述装置包括:
阶段获取单元,获取数据库的迁移阶段;
目标库确定单元,根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库;
操作指定单元,将所述当前测试操作指定到所述目标库。
可选的,所述目标库确定单元,在所述迁移阶段为写老读老时,将迁移前的旧数据库确定为所述待测试的目标库;
在所述迁移阶段为写新读新时,将迁移后的新数据库确定为所述待测试的目标在
在所述迁移阶段为双写读老时,如果所述操作类型为读操作时,则将所述旧数据库确定为所述待测试的目标库;
在所述迁移阶段为双写读老时,如果所述操作类型为写测试时,则将所述旧数据库和所述新数据库确定为所述待测试的目标库;
在所述迁移阶段为双写读新时,如果所述操作类型为读测试时,则将所述新数据库确定为所述待测试的目标库;
在所述迁移阶段为双写读新时,如果所述操作类型为写测试时,则将所述旧数据库和所述新数据库确定为所述待测试的目标库。
可选的,所述装置还包括:
数据还原单元,根据数据库备份文件,对所述数据库进行数据还原操作。
可选的,所述数据还原单元,针对所述数据库备份文件中的每张数据备份表,判断所述数据备份表是否命中预设的迁移清单;当所述数据备份表命中所述迁移清单时,根据所述迁移阶段确定待还原的目标库;根据所述数据备份表还原所述待还原的目标库中的数据。
可选的,所述目标库确定单元,根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库的访问信息;
所述操作指定单元,根据所述目标库的访问信息,对所述目标库进行测试操作;
其中,所述访问信息包括:链接地址、登录名以及登录密码。
由以上描述可以看出,本申请可以根据数据库的迁移阶段和当前测试操作的操作类型确定待测试的目标库,并将所述当前测试操作指定到所述目标库,从而将测试操作指定到匹配迁移阶段的目标库中,无需修改测试用例,大大提高了数据库迁移的测试效率。
附图说明
图1是本申请一示例性实施例示出的一种数据库迁移的测试方法的流程示意图。
图2是本申请一示例性实施例示出的一种对所述数据库进行数据还原操作的流程示意图。
图3是本申请一示例性实施例示出的一种数据库迁移的测试装置的一结构示意图。
图4是本申请一示例性实施例示出的一种数据库迁移的测试装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是本申请一示例性实施例示出的一种数据库迁移的测试方法的流程示意图。
请参考图1,所述数据库迁移的测试方法可以应用在终端中,包括有以下步骤:
步骤101,获取数据库的迁移阶段。
在本实施例中,数据库迁移的过程通常包括有四个阶段:写老读老、双写读老、双写读新以及写新读新。
其中,写老读老的阶段表示:当前所有的读操作和写操作都在迁移前的旧数据库中进行。
双写读老的阶段表示:当前读操作在所述旧数据库中进行,写操作分别在所述旧数据库以及迁移后的新数据库中进行,以确保新数据库中的数据有增量,并检测新数据库中的数据是否正确。
双写读新的阶段表示:当前读操作在所述新数据库中进行,写操作分别在所述旧数据库以及所述新数据库中进行,这个阶段用于验证新数据库的稳定性。
写新读新的阶段表示:当前所有的读操作和写操作都在迁移后的新数据库中进行,表示旧数据库中的数据已全部迁移到新数据库中。
在本实施例中,所述数据库的迁移阶段可以由测试人员在测试前进行设置,比如:测试人员可以先将所述迁移阶段设置为写老读老阶段,并在对所述写老读老阶段测试完毕后,再将所述迁移阶段设置为双写读老阶段并进行测试,直到测试完毕上述迁移过程中的全部四个阶段。可选的,测试人员可以通过drm设置或修改所述迁移阶段,测试人员也可以在基类中设置或修改所述迁移阶段。
步骤102,根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库。
基于前述步骤101,在获取到所述迁移阶段之后,可以根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库。其中,所述操作类型可以包括:读测试和写测试。
迁移状态&操作类型 |
待测试的目标库 |
写老读老 |
旧数据库 |
双写读老&读测试 |
旧数据库 |
双写读老&写测试 |
旧数据库和新数据库 |
双写读新&读测试 |
新数据库 |
双写读新&写测试 |
旧数据库和新数据库 |
写新读新 |
新数据库 |
表1
在本实施例中,请参考表1的示例,当所述迁移阶段为写老读老时,不论当前测试操作的操作类型是读测试还是写测试,均可以确定所述待测试的目标库为迁移前的旧数据库。当所述迁移阶段为双写读老时,如果所述操作类型为读测试,则可以将所述旧数据库确定为所述待测试的目标库,如果所述操作类型为写测试,则可以确定所述待测试的目标库有两个,分别为所述旧数据库和迁移后的新数据库。当所述迁移阶段为双写读新时,如果所述操作类型为读测试,则可以将所述新数据库确定为所述待测试的目标库,如果所述操作类型为写测试,则也可以确定所述待测试的目标库有两个,分别为所述旧数据库和迁移后的新数据库。当所述迁移阶段为写新读新时,不论所述操作类型是读测试还是写测试,均可以确定所述待测试的目标库为所述新数据库。
在本实施例中,在确定待测试的目标库之后,可以获取所述目标库的访问信息,所述访问信息可以包括:链接地址、登录名、登录密码等访问所需的信息。
步骤103,将所述当前测试操作指定到所述目标库。
基于前述步骤102,在确定待测试的目标库之后,可以将当前测试操作指定到所述目标库,即对所述目标库进行测试,比如:根据所述目标库的访问信息,将当前测试操作指定到所述目标库。举例来说,当所述迁移阶段为双写读老时,如果所述操作类型为读测试,则可以根据获取到的旧数据库的访问信息,将当前的读测试操作指定到旧数据库,如果所述操作类型为写测试,则可以根据获取到旧数据库和新数据库的访问信息,将当前的写测试操作分别指定到旧数据库和新数据库,即分别对旧数据库和新数据库进行写测试。
可选的,在本申请另一个例子中,在对数据库进行测试的过程中,在完成对数据库的读测试操作或者写测试操作后,还需要对操作结果进行验证,并在验证结束后清理相关的测试操作。在本步骤中,当所述当前测试操作为结果验证或者清理操作时,仍需要将所述结果验证或者清理操作指定到所述目标库。举例来说,假设迁移阶段为双写读老,则需要将结果验证或者清理操作均指定到旧数据库和新数据库。
可选的,在本申请另一个例子中,如果采用模块化的方式进行数据库测试,即数据库测试的整个测试过程分别由用于读/写测试操作、结果验证以及清理操作的三个模块/组件执行,如果这三个模块/组件彼此独立,则在每个模块/组件在执行相关操作时,可能均需要获取数据库的迁移阶段,并根据获取到的迁移阶段进行目标库的确认,并将相关操作指定到所述目标库中,本申请对此不作特殊限制。
由以上描述可以看出,本申请可以根据数据库的迁移阶段和当前测试操作的操作类型确定待测试的目标库,并将所述当前测试操作指定到所述目标库,从而将测试操作指定到匹配迁移阶段的目标库中,无需修改测试用例,大大提高了数据库迁移的测试效率。
可选的,在本申请另一个例子中,在对数据库进行测试之前,为确保数据库中的数据准确,可以根据数据库备份文件对数据库中的数据进行还原操作。一般而言,数据库备份文件中包括有多张数据备份表,由于数据库的迁移,部分数据备份表中的数据可能已经迁移到新数据库中,所以需要根据数据库的迁移阶段进行数据还原操作。
请参考图2,对数据库进行数据还原操作可以包括以下步骤:
步骤201,针对数据库备份文件中的每张数据备份表,判断所述数据备份表是否命中预设的迁移清单。
在本实施例中,所述迁移清单通常由测试人员进行设置,测试人员可以预先将可能会涉及到数据库迁移的数据备份表的名称存储到迁移清单中。举例来说,假设所述数据备份文件中包括有5张数据备份表,其中,数据备份表1和数据备份表2中的数据可能会迁移,则测试人员可以将数据备份表1和数据备份表2的名称存储到迁移清单中。
在本实施例中,系统在启动后,可以依次判断数据库备份文件中每张数据备份表是否命中所述迁移清单,如果未命中,则说明所述数据备份表中的数据未迁移,可以根据该数据备份表还原旧数据库中的数据。如果所述数据备份表命中所述迁移清单,则说明所述数据备份表中的数据可能发生迁移,转而执行步骤202。
步骤202,当所述数据备份表命中所述迁移清单时,根据迁移阶段确定待还原的目标库。
基于前述步骤201的判断结果,如果所述数据备份表命中所述迁移清单,则在本步骤中,可以获取数据库的迁移阶段,并根据所述迁移阶段确定待还原的目标库。
在本实施例中,当所述迁移阶段为写老读老时,可以确定待还原的目标库为旧数据库。当所述迁移阶段为双写读老或者双写读新时,可以确定待还原的目标库有两个,分别为旧数据库和新数据库。当所述迁移阶段为写新读新时,可以确定待还原的目标库为新数据库。
步骤203,根据所述数据备份表还原所述待还原的目标库中的数据。
基于前述步骤202,在确定待还原的目标库后,可以根据所述数据备份表还原所述待还原的目标库中的数据。
举例来说,假设所述迁移阶段为双写读老,则在步骤202中确定待还原的目标库为旧数据库和新数据库,则在本步骤中,根据所述数据备份表分别对所述旧数据库和所述新数据库中的数据进行还原,并在这两个库的数据均还原成功后,确定已将该数据备份表中的数据成功还原。
由以上描述可以看出,本申请可以根据数据库的迁移阶段确定数据还原时待还原的目标库,并根据数据备份文件中的数据备份表还原所述待还原的目标库中的数据,从而在数据还原时,无需拆分数据备份文件,提高数据还原的效率。
与前述数据库迁移的测试方法的实施例相对应,本申请还提供了数据库迁移的测试装置的实施例。
本申请数据库迁移的测试装置的实施例可以应用在终端上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在终端的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请数据库迁移的测试装置所在终端的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的终端通常根据该终端的实际功能,还可以包括其他硬件,对此不再赘述。
图4是本申请一示例性实施例示出的一种数据库迁移的测试装置的结构示意图。
请参考图4,所述数据库迁移的测试装置300可以应用在前述图3所示的终端中,包括有:阶段获取单元301、目标库确定单元302、操作指定单元303以及数据还原单元304。
其中,所述阶段获取单元301,获取数据库的迁移阶段;
所述目标库确定单元302,根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库;
所述操作指定单元303,将所述当前测试操作指定到所述目标库。
可选的,所述目标库确定单元302,在所述迁移阶段为写老读老时,将迁移前的旧数据库确定为所述待测试的目标库;
在所述迁移阶段为写新读新时,将迁移后的新数据库确定为所述待测试的目标在
在所述迁移阶段为双写读老时,如果所述操作类型为读操作时,则将所述旧数据库确定为所述待测试的目标库;
在所述迁移阶段为双写读老时,如果所述操作类型为写测试时,则将所述旧数据库和所述新数据库确定为所述待测试的目标库;
在所述迁移阶段为双写读新时,如果所述操作类型为读测试时,则将所述新数据库确定为所述待测试的目标库;
在所述迁移阶段为双写读新时,如果所述操作类型为写测试时,则将所述旧数据库和所述新数据库确定为所述待测试的目标库。
所述数据还原单元304,根据数据库备份文件,对所述数据库进行数据还原操作。
所述数据还原单元304,针对所述数据库备份文件中的每张数据备份表,判断所述数据备份表是否命中预设的迁移清单;当所述数据备份表命中所述迁移清单时,根据所述迁移阶段确定待还原的目标库;根据所述数据备份表还原所述待还原的目标库中的数据。
所述目标库确定单元302,根据所述迁移阶段和当前测试操作的操作类型确定待测试的目标库的访问信息;
所述操作指定单元303,根据所述目标库的访问信息,对所述目标库进行测试操作;
其中,所述访问信息包括:链接地址、登录名以及登录密码。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。