sql语句在navicat中可以查询到所有数据但是在idea程序中不行_数据迁移测试实施方案...

d98fdd467649a38e03afb2634ace9a56.gif

点击关注,我们共同每天进步一点点!

最近经历了一场大型的数据迁移测试,因为以前对数据迁移测试研究甚少,所以对测试实施方案的制定非常的棘手,在网上也查询了很多,发现相关资料很少,并且大部分都是一些理论指导,没有讲到具体的如何去做的方法,整个方案也不够全面,没有实际的实施指导价值。

所以结合了这次自己经历的数据迁移测试实施以及前人的观点,写了这么一篇比较完善的,更具实施指导意义的测试方案,一方面是对这次经历的数据迁移测试的一个总结,另外一方面是想能有更多的朋友参与到这数据迁移测试的讨论中,能为后面可能经历的同学留下更好的参考资料,由于能力有限,文中肯定有很多纰漏,欢迎大家吐槽拍砖,哈哈!希望后面能把这篇文章完善的更好。

下面进入正文


前期准备工作

数据迁移范围确定

在做数据迁移测试前需要和开发部门确认好数据迁移范围,主要包含以下几点:

基本数据迁移

基本数据迁移就是从老库中把一些老表直接复制到新库的新表中,或是:

  1. 拆表:老库的老表拆分到新库的其他几张新表中去

  2. 合表:老库中的几张老表的字段合并到新库的一张新表中去

所以需要提前和开发部门确认好以下问题:

要和和开发一起确认要迁移的是那几张表?

弄清楚老库中的老表对应要迁移到新库中的哪几张表?

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

老表要迁移的数据记录条数是多少?

新老系统数据库表结构变化

1.新增字段和老系统表完全不存在关系

老表迁移到新表中,新表中有些必填字段在老表中没有的,需要和开发确认这些数据的填写规则(给什么默认值)

2.新增字段是由老系统特定字段转换而来

新系统中的一些字段可能是老系统中的一些字段通过一些规则转化而来的,所以需要和开发部门确认这些转换规则

迁移范围统计方法

基本数据迁移

1.直接复制表

13e883d5848eef73df5e16ae1aca9d10.png

2.非直接复制表(拆表&合表)

8f2374ee6cf56ff4f1a8b5ff36c0e533.png

新老系统数据库表结构变化

1.新增字段和老系统表完全不存在关系

c8897121b084b604486258c2c7a07dbe.png

2.新增字段是由老系统特定字段

70e5baad535fea453011eba6bc984083.png

测试方案

32c94a817ebcb1dff27648e1ce0e0dd2.png

测试类型分以上几大块,下文会对每种类型的测试做详细的说明:

基本数据迁移测试

要保证老系统到新系统的无缝切换,必须要保证数据的正确性,而将老系统中数据迁移到新系统,首先就要保证所迁移的数据量是一致的,只有在保证数据量一致的情况下,才能进行其他方面到测试,如果数据量都不一致,说明迁移方法或者脚本就是错误的,需要寻找原因。

方法1:

测试工具

Navicat,文本比较工具(以 Beyond Compare为例)

测试流程:

7bb1b6c09f9736c8076413e3bbdd2adc.png

迁移范围确定:

开发部门统计好本次的数据迁移范围给到测试部门

数据表导出:

1.对于直接复制的表

根据“迁移范围确定”中的库名、表名、条数,通过Navicat工具以txt格式,分别导出对应的迁移前的老表和迁移后的新表,如果不是全表的数据,可以通过SQL语句选择需要的条数。

以上文中的“表1”为例:

导出老库old中的老表hxuser,保存到 hxuser老.txt 中

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

bbfead63a16ce390722fa675b7e1f653.png

2.对于非直接复制的表

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

以上文的“表(2)”为例

1) 先用SQL查询迁移前的老表数据,并导出

2b04959e57aa469e6bcd45b659bc2c36.png

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

c586905ec052272a4079f0ebb8bf8adf.png

3.新旧数据比对

使用Beyond Compare比较老数据和新数据是否一致,一致则说明迁移正确,不一致则说明迁移中存在问题。

继续用上文的“表1”为例,比较上一个步骤导出的 “hxuser老.txt” 和“hxuser新.txt”

如果数据一致,则在Beyond Compare中不会有数据差异

9cb42744c6490638aa9cbb5ffac04196.png

如果数据不一致,则在Beyond Compare中能比较出差异数据,并且能直接能定位到差异数据所在,可以统计到新旧数据所有的差异点

a469a341021322f31ae23987f4eea86d.png

方法2:

测试工具

Navicat,文件MD5生成工具(以Hash为例)

测试流程:

测试流程基本和方法1一致,只有在进行第三步“新旧数据比对”有区别,这里是使用Hash工具。

使用Hash,为新老数据文本生成 MD5 值,并比较2个MD5值是否一致,一致则说明迁移正确,不一致则说明迁移中存在问题。

(MD5可以为任何文件(不管其大小、格式、数量)产生一个独一无二的md5“数字指纹”,如果任何人对文件做了任何改动,其MD5也就是对应的“数字指纹”都会发生变化,MD5只会对文件内容进行运算,并不对创建时间,文件名等进行比对)

继续用上文的“表1”为例,分别用Hash为 “hxuser老.txt” 和“hxuser新.txt”生成MD5值

1a2fdd761f238da3de7945536d0d7510.png

可以看到如果数据一致的时候,MD5值是一致的

f902daf5b441c0a92b7f88278be39cbf.png

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

方法3

测试工具

代码脚本(任何一种语言都可以,Python和Java优选)

测试流程:

这里可以开发自动化测试脚本,来完成整个测试,这里因为都是在做字段的比对动作,所以尽量开发可以复用的测试脚本

几种方法比较:

862e4436002ce7d7f714c9fd6573fc77.png

新老系统数据库表结构变化测试

新增字段和老系统表完全不存在关系

对于这种“新增字段和老系统表完全不存在关系”的测试,因为都是在新表中给新增字段一个固定的默认值,所以只需要根据开发提供的填写规则,检查该字段的所有值是否满足填写规则。

测试工具:

Navicat

测试流程:

c998a796fbdce57fa9783f6e0c9a1451.png

以上文“表3”为例,这里需要检查agent库中表hxuser的status字段的所有值是否都为“1”,其实只需要4步就能完成所有的测试:

1.范围及规则确定

开发部门统计好所有新加字段填写规则给到测试部门

2.计算新字段所有行数

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

SELECT COUNT(status) FROM hxuser

6b2956718fc85f95d264d9a5df837205.png

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

计算status字段中值为1的所有行数,可在Navicat运行SQL语句:

SELECT COUNT(status) FROM hxuser WHERE status=1

25f447f44e327804c036e829665f5f64.png

4.比较两次的行数

比较以上2步计算的行数是否相同,如果相同则表示测试通过,如果不相同则表示新增字段中有不满足取值规则的行,可以通过其他的SQL语句来定位不满足取值规则的行。

新增字段是由老系统特定字段转换而来

方法1

测试工具:

代码脚本(任何一种语言都可以,Python和Java优选)

测试流程:

0886d812854dd18f96f0cb6a95ab75bc.png

以上文“表3”为例

1.范围及规则确定:

开发部门统计好所有转化字段以及转化规则给到测试部门

2.测试脚本开发

根据“范围及规则”,编写对应的测试脚本,以达到校验新老字段的所有值是否满足规定的转化规则

3.实施测试

运行测试脚本,检查是否测试通过,若未测试通过,可以做进一步的异常数据定位

方法2

如果没有条件使用测试脚本自动化测试时,可以使用人工的切片抽样测试

测试工具:

Navicat

测试流程:

17419ec965004d0aadedaa2c1dd13480.png

1.数据切片抽样

用Navicat筛选到需要校验的新老数据,假设需要校验的数据有n行,然后对n行进行分段切片抽样,影响分段的密度,分段后每一段抽取的数量的因素很多,需要综合考虑之后,确定一个最优值,可以主要参考以下2点因素:

1) n的大小,如果n在100以内,我们甚至可以对n行全量抽取,如果n的值很大,则可以把n均分为若干段,然后在每段中随机抽取相同的数量的行数

2) 实际工作中可以使用到的工时及人力资源,如果很充足的话,我们可以相对高密度的分段,每段大数量的抽取;

如果很紧张的话,那我们只能相对低密度的分段,每段少数量的抽取。

2.数据校验

针对上一步抽样得到的数据,人工检验其是否满足转换规则

几种方法比较

cacc6525ee75fce1298000d4e2a2f557.png

业务逻辑测试

“基本数据迁移测试”和“数据库表结构变化测试”做完以后,需要使用从老系统中迁移过来的数据,在业务系统中进行流程测试,功能测试确保迁移后到数据可用。

在做功能测试时要注意以下2点:

1.需要和开发部门确认新系统会用到老表数据的业务都有哪些,但是每一张表涉及的业务会非常的多,所以想百分百的覆盖所有业务是非常困难的,只能在有限的资源下统计相对全面的的业务范围,这些业务点也就组成了针对数据迁移的功能测试范围。

2.上面这点也说到了,测试的“新系统会用到老表数据的业务”肯定是不全面的,所以最后一定要做一轮全系统的功能回归测试。

注意点

1.账号权限,在Navicat操作数据库时,对于线上数据实施迁移,一定需要提前申请到有线上数据库操作权限的账号

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

3.业务逻辑测试中不要去追求百分百的覆盖率,只需要在现有的资源下,尽可能的提高覆盖率

原文地址:

https://www.jianshu.com/p/9f6253e6fcc3

cf222cbab9dd7807384dff0b967fde66.png4362a186c7fb3549b6fe9a02b77ac994.gif

喜欢请关注,有用请转发~

升职、加薪、无漏测-点“在看”

96be644e1b69a7a7fccdefa54ea8c9fb.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报告:69% 的企业表示云技术有助于他们的疫情恢复

根据 DigitalOcean 最近的报告,在疫情高峰期间云使用增加的企业中,86%的企业表示云使用量在 2021 年继续增加,这表明数字加速和云采用没有放缓迹象。随着 2022 年的临近,对于各种规模的企业来说,这场疫情仍是头等大事&…

PyFlink 教程(三):PyFlink DataStream API - state timer

简介: 介绍如何在 Python DataStream API 中使用 state & timer 功能。 一、背景 Flink 1.13 已于近期正式发布,超过 200 名贡献者参与了 Flink 1.13 的开发,提交了超过 1000 个 commits,完成了若干重要功能。其中&#xff…

长跑 11 年,腾讯开源的变与不变

作者 | 贾凯强出品 | CSDN云计算(ID:CSDNcloud)在中国,开源产业的发展就像是一个美丽的童话故事。90年代,开源如一无所有的灰姑娘,仰望着海外梦幻般的舞会,自己却很难融入其中;而世纪…

.net 批量更新_Revit二次开发——读取CAD文字实现更新模型的思路

更新模型与内地BIM项目中 设计院终版图纸一波流翻模的模式不同香港BIM项目的模式是:设计出图—BIM出碰撞报告—设计再改图—BIM再碰撞报告......反反复复....模型频繁更新 是BIM项目服务过程中不可避免的应对方法:1.晚上加班2.周末加班本文中 模型更新的…

php使用七牛直播,七牛上传文件,PHP版本

自从知道七牛以来,就一直在用七牛做图片外链,但是每次需要到七牛官网登录,然后再上传图片。感觉很麻烦,最近想做一个自己的上传到七牛的平台,开始的想法是用C#写一个windows客户端,在用swift写一个mac客户端…

汽车之家:基于 Flink + Iceberg 的湖仓一体架构实践

简介: 由汽车之家实时计算平台负责人邸星星在 4 月 17 日上海站 Meetup 分享的,基于 Flink Iceberg 的湖仓一体架构实践。 内容简要: 一、数据仓库架构升级的背景 二、基于 Iceberg 的湖仓一体架构实践 三、总结与收益 四、后续规划 一、数据…

基于 Scheduled SQL 对 VPC FlowLog 实现细粒度时间窗口分析

简介: 针对VPC FlowLog的五元组和捕获窗口信息,在分析时使用不同时间窗口精度,可能得到不一样的流量特征,本文介绍一种方法将原始采集日志的时间窗口做拆分,之后重新聚合为新的日志做分析,达到更细粒度的分…

实力登场!移动云技术内核2.0 四大全新升级!

“中国数字经济占GDP比重持续增长,5G网络建设已进入规模化部署阶段。随着5G网络的发展,企业的数字化改造需求越来越旺盛。企业日益增长的数字化改造需求对云基础设施提出了新的挑战:需要支持多种类型网络接入、支持公有云、混合云、专属云等多…

obsidian使用分享

ob对比其他软件 上文提到obsidian,这里对obsidian做一个简要的总结 优点:对比notion,语雀这些软件,内容存储在应用商的服务器上。它是存在本地的。 对比思源笔记。说一下思源笔记的不足。思源是块来控制的,回车就是一…

苹果xr如何截屏_苹果手机自带的三种截屏技巧,你知道几个?现在知道还不迟...

今年苹果手机发布的新机自发布以来就受到了热烈的追捧,销量一直都处于只增不减的趋势。苹果手机为何如此之火?除了本身自带的IOS系统之外,手机自带很多小技巧,你知道不?今天就来为大家介绍苹果手机中的三种截屏小技巧&…

Scheduled SQL: SLS 大规模日志上的全局分析与调度

简介: 本文总结了大规模日志全局分析的需求,讨论SLS上现有的典型分析方案,并延伸到 SLS 原生数据处理方案,介绍 Schedueld SQL 功能与最佳实践。 大规模日志全局分析的需求 数据大规模与时效性 基于时间的数据(日志…

matlab制作以太网数据接收上位机_3D激光扫描仪设计及数据处理

本文内容转载自《电子技术应用》2019年第10期,版权归《电子技术应用》编辑部所有。段清明,王凡,徐琳琳,全文俊吉林大学仪器科学与电气工程学院摘要:利用2D激光雷达配合云台装置,设计了一种3D激光扫描仪作为…

跨平台(windows+linux)的线程辅助程序,跨平台(Windows+Linux)的Socket通讯程序(二)—结构...

上一篇"跨平台(WindowsLinux)的Socket通讯程序"给出了Socket通讯底层的一些函数的包装方法/类,同时屏蔽了操作系统(Windows/Linux)的不同。上一篇只是对通讯底层方法的封装,并没用涉及应用,这一篇将基于上一篇,并结合&q…

数据的“敏捷制造”,DataWorks一站式数据开发治理范式演进

简介: 企业大数据技术发展至今,历经了两次蜕变。第一次蜕变从最初的“小作坊”解决大数据问题,到后来企业用各类大数据技术搭建起属于自己的“大平台”,通过平台化的能力完成数据生产力的升级。 第二次蜕变让大数据从“大平台”向…

全新的 Fragment 通信方式

作者 | tech-bus.丹卿来源 | 程序员巴士前言就在前段时间,Google 推出了 Fragment Result API 和 Activity Results API,用来取代之前的 Activity 和 Fragment 之间通信方式的不足,大家可以前往看看都有哪些更新:https://medium.c…

数据传输完整性_电缆监测数据传输系统分析与设计

电缆线路是重要的输电方式,对电缆线路进行监测是保证电缆线路正常工作的重要的条件,研究人员利用嵌入式系统设计了电缆监测数据传输系统。该系统以CAN通信和嵌入式以太网络技术为核心,实现了对电缆及其沟道的实时监测、状态显示及预报警功能&…

大型企业多账号管理“安全心法”

简介: 云上多账号环境下的网络统一管理,是大型分支型企业网络安全防护的必经之路。无论是外企入华、国内企业出海,还是本土集团型企业规模化成长,云上统一网络安全管控与整体安全态势感知,都可以拉齐企业账号间安全水位…

苹果将于 2025 年推出的 Apple Car 长什么样?

整理 | 孙胜出品 | CSDN(ID:CSDNnews)据国外媒体报道,苹果公司预计将于2025年推出一款全新的自动驾驶汽车,旨在实现真正意义上的无人驾驶。报道称,基于自动驾驶的理念,苹果理想的汽车没有方向盘…

阿里云中间件首席架构师李小平:云原生实践助力企业高效创新

简介: 通过云原生技术,真正为企业带来更多的业务价值,助力企业整体的业务创新。 作者:李小平 前天我参加了信通院的云原生产业大会,在会场上非常感慨,参加会议的企业非常多,并且来自于各行各业…

cv曲线面积的意义_几何直觉的魅力:sinx曲线下的面积原理是如此的美妙

用“曲线下的面积”来描述积分,就像用一串单词来描述一本书。正弦函数的积分是其曲线下的面积。几何直觉就是:“正弦的积分是沿圆周路径的水平距离。”这句话第一次听说感觉比较抽象,当你理解了就会觉得它非常的美妙一般的思维模式求正弦函数的积分就是&…