数据迁移方案模板,数据库迁移方案文档

  数据迁移方案模板,数据库迁移方案文档

  最近经历了一次大规模的数据迁移测试。由于过去对数据迁移测试的研究很少,制定测试实施计划非常困难。我也在网上查了很多,发现相关资料很少,而且大部分都是理论指导,没有具体怎么做的方法。整个计划不够全面,没有实际的实施指导价值。

  所以结合自己的数据迁移测试实施经验和之前的观点,我写了这样一个比较完整的,更有指导意义的测试计划。一方面是对这次数据迁移测试经验的总结,另一方面也想让更多的朋友参与到这次数据迁移测试的讨论中来,为以后可能经历的同学留下更好的参考资料。由于能力有限,这篇论文肯定有很多瑕疵。欢迎大家评论一下,哈哈。希望以后能改进这篇文章。

  在下面输入文本。

  数据迁移范围的确定前期工作在进行数据迁移测试之前,需要与开发部门确认数据迁移范围,主要包括以下几点:

  基本数据迁移基本数据迁移是指将一些cxdwg直接从旧库中复制到新库中的新表中,或者:

  1.表拆分:将旧数据库的cxdwg拆分成新数据库中的其他新表;2.表合并:将旧数据库中的几个cxdwgs的字段合并到新数据库中的一个新表中。

  因此,以下问题需要提前与开发部确认:

  您希望与开发部门确认哪些表要迁移?弄清楚旧库中哪些表cxdwg对应迁移到新库中?

  在迁移表中,哪些数据字段需要迁移,哪些数据字段不需要迁移?

  cxdwg要迁移的数据记录数量是多少?

  旧系统数据库1的表结构的变化。新添加的字段和旧的系统表之间没有关系。

  Cxdwg被移植到新表中。新表格中有一些必填字段在cxdwg中不可用。需要随着开发确认这些数据的填充规则(给什么默认值)。

  2.新添加的字段由旧系统的特定字段转换而来。

  新系统中的某些字段可能是由旧系统中的某些字段通过某些规则转换而来的,因此需要与开发部门确认这些转换规则。

  迁移范围统计方法

  基本数据迁移1。表的直接复制

  2.表的间接复制(表拆分和表合并)

  旧系统数据库1的表结构的变化。新添加的字段和旧的系统表之间没有关系。

  2.新添加的字段特定于旧系统。

  测试方案

  测试的类型被分成以上的块,并且每种类型的测试将在下面被详细解释。

  为了保证新旧系统的无缝切换,基础数据迁移测试必须保证数据的正确性。要将数据从旧系统迁移到新系统,首先要确保迁移的数据量是一致的。

  只有数据量一致,才能检验其他方面。如果数据量不一致,说明迁移方法或脚本错误,需要查找原因。

  方法:测试工具:文本比较工具Navicat(以Beyond Compare为例)

  测试流程:迁移范围确定:

  开发部门统计这次的数据迁移范围,交给测试部门。

  数据表导出:

  1.对于直接复制的表

  根据“迁移范围确定”中的库名、表名和张数,通过Navicat工具分别将迁移前对应的cxdwg和迁移后的新表导出为txt格式。

  如果不是整张表的数据,可以通过SQL语句选择需要的张数。

  以上面的表1为例,

  将旧库old中的cxdwghxuser导出并保存在hxuser old.txt中。

  以及新库中的新表hxuser new,保存在hxuser new.txt中.

  2.对于不直接复制的表

  在Navicat中,需要用SQL语句查询迁移前对应的cxdwg数据和迁移后的新表数据,然后以txt格式导出。

  以上面的“表(2)”为例。

  1)使用SQL在迁移前查询cxdwg数据并导出。

  2)用SQL查询迁移后的新表数据并导出。

  3.新旧数据比对

  使用Beyond Compare比较旧数据和新数据是否一致。如果它们一致,则迁移是正确的;如果它们不一致,则迁移中存在问题。

  以上表1为例,对比上一步导出的“hxuser old.txt”和“hxuser new.txt”。

  如果数据一致,在无法比较中就不会有数据差异。

  如果数据不一致,可以在Beyond Compare中比较差异数据,直接定位差异数据,统计新旧数据的所有差异。

  方法:测试工具: Navicat,生成MD5文件的工具(以Hash为例)

  测试流程除了第三步“新旧数据对比”之外,测试流程与方法1基本相同。这里使用了散列工具。

  使用Hash为新旧数据文本生成MD5值,比较两个MD5值是否一致。如果它们一致,则迁移是正确的;如果它们不一致,则迁移中存在问题。

  (md5可以为任何文件生成唯一的MD5“数字指纹”(无论其大小、格式和数量)。如果有人对文件做了任何改动,

  MD5,也就是对应的“数字指纹”,会发生变化。MD5只会计算文件的内容,不会比较创建时间,文件名等。)

  以上表1为例,使用Hash分别为“hxuser old.txt”和“hxuser new.txt”生成MD5值。

  可以看出,如果数据一致,则MD5值一致。

  当数据不一致时,MD5值会不同。

  方法3测试工具:代码脚本(任何语言都可以,Python和Java优先)

  测试流程:在这里,我们可以开发自动化测试脚本来完成整个测试。在这里,我们尽量开发可复用的测试脚本,因为我们是在做现场对比。

  几种方法的比较:

  旧系统数据库表结构变化的测试

  新添加的字段和旧的系统表之间没有关系。对于“新增字段与旧系统表没有关系”的测试,由于新增字段在新表中被赋予了固定的默认值,所以只需要根据开发提供的填充规则检查该字段的所有值是否符合填充规则即可。

  测试工具:Navicat

  测试流程:以上表3为例。这里,需要检查代理库中表hxuser的状态字段的值是否都为“1”

  事实上,完成所有测试只需要4个步骤。

  1.范围和规则的确定

  开发部门统计所有新增的字段填充规则,交给测试部门。

  2.计算新字段的所有行

  计算hxuser表status字段对应的所有行,可以在Navicat中运行SQL语句:

  从hxuser选择计数(状态)

  3.计算新字段中满足规则的行数。

  计算状态字段中值为1的所有行,并且可以在Navicat中运行SQL语句:

  从hxuser中选择计数(状态),其中状态=1

  4.比较两次行数。

  比较上面两步计算的行数是否相同。如果相同,则表示测试通过。如果不相同,则表示新添加的字段中存在不符合取值规则的行。

  其他SQL语句可用于定位不符合取值规则的行。

  新添加的字段由旧系统的特定字段转换而来。方法一测试工具:代码脚本(任何语言都可以,Python和Java优先)

  测试流程:以上表3为例。

  1.范围和规则的确定:

  开发部门把所有的转换字段和转换规则统计给测试部门。

  2.测试脚本开发

  根据“范围和规则”,编写相应的测试脚本,验证新旧字段的值是否都满足规定的转换规则。

  3.实施测试

  运行测试脚本来检查测试是否通过。如果不是,可以进行进一步的异常数据定位。

  方法如果没有条件使用测试脚本进行自动测试,可以使用手工切片抽样测试。

  测试工具:Navicat

  测试流程:1。数据切片采样

  Navicat用于筛选出待验证的新旧数据,假设有N行待验证数据,然后对这N行进行分段采样。

  影响片段密度的因素有很多,分割后每个片段提取的量。综合考虑后,应确定一个最优值,主要可参考以下两个因素:

  1)n的大小,如果n在100以内,我们甚至可以提取n行的总数。如果n的值很大,我们可以把n平均分成几段,然后在每段随机抽取相同数量的行。

  2)实际工作中可以使用的工时和人力资源,如果充足,可以相对高密度的分段提取,分段数量较多;

  如果非常紧密,那么我们只能提取少量密度相对较低的片段。

  2.数据验证

  根据上一步采样的数据,手动检查是否符合转换规则。

  几种方法的比较

  业务测试“基础数据迁移测试”和“数据库表结构变化测试”完成后,需要使用旧系统迁移的数据在业务系统中进行流程测试,功能测试确保迁移的数据可用。

  进行功能测试时,请注意以下两点:

  1.需要和开发部门确认新系统会用到哪些业务的cxdwg数据,但是每张表都会涉及很多业务,所以很难100%覆盖所有业务。有限的资源只能统计相对全面的业务范围,这些业务点构成了数据迁移的功能测试范围。

  2.如上所述,“新系统将使用cxdwg数据业务”的测试肯定是不全面的,所以最后一定要做一轮全系统的功能回归测试。

  注意第一点。帐户权限。Navicat在操作数据库时,需要提前申请一个具有在线数据库操作权限的账号,进行在线数据迁移。

  2.以上测试方法的采用一定要结合实际资源情况,不要盲目追求全自动测试。我们的最终目的是达到测试效果。

  3.业务逻辑测试不要追求100%的覆盖率,在现有资源下尽量提高覆盖率就行了。

  作者:酷酱

  链接:http://www.jianshu.com/p/9f6253e6fcc3

  来源:简书

  版权归作者所有。商业转载请联系作者授权,非商业转载请注明出处。

  文章来自:http://www.jianshu.com/p/9f6253e6fcc3?来自=时间线

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: