乐趣区

关于自动化测试:数据传输-mysqldiffmysqldbcompare-实现-DTLE-自动化测试

作者:张静文
爱可生上海研发核心成员,测试工程师,负责 DMP 以及 DTLE 自动化测试。
本文起源:原创投稿
* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。


工作:

测试开源产品 dtle(https://github.com/actiontech…),对 mysql 字符类型,表构造的支持性。

测试需要如下:

1. 测试 dtle 对 mysql 所有的字符类型支持性
2. 测试 dtle 对表构造的支持性
3. 等 …….

测试步骤大抵为:

  1. 设计表构造,数据类型。
  2. 应用 dtle 迁徙表 / 数据。
  3. 比照应用 dtle 迁徙的源数据库和指标数据库的数据、表构造是否有差别。

起初,我开启了 2 个窗口一条条的比照,然而当我比对到第 100 条数据的时候,我发现眼花了,仿佛有些数据“如同不一样”。我还有好几万条数据要这么比照呢,而且每次发新版本,我都要这么来一次 …… 这不是人能实现的艰巨工作!

所以我寻找是不是有什么工具能帮我做这部分工作,搜寻后发现一部分私人写的小工具(具体的就不列举了),然而通过应用后,发现很多工具本身就带有一部分 BUG,如果我用这些工具做数据比照必定会脱漏 BUG。

通过几天的搜寻试用,发现 mysql 官网提供了一个十分不错工具 mysqldiff/mysqldbcompare,所以想着分享给大家。

以下就间接说说应用办法:

 (零碎:Ubuntu 18.04)

1. 软件下载,地址如下:

https://cdn.mysql.com/archive…

2. 解压到当前目录 mysql-utilities-1.6.5 下:

tar -zxvf mysql-utilities-1.6.5.tar.gz

3. cd 到 mysql-utilities-1.6.5,执行装置:

apt install mysql-utilities

如下图:

4. 演示 mysql-utilities 中的 mysqldiff 应用和成果:

首先咱们能够通 过 mysqldiff –help 命令查看用法:

接下来我要测试通过 DTLE 数据迁徙的 2 个数据库,而后验证:

1. 是否有表构造扭转

2. DTLE 是否将源数据库的所有数据全副迁徙到指标数据库

别离应用如下 2 条命令:

mysqldiff--server1=test:test@10.20.30.3:3306--server2=test1:test1@10.20.30.4:3307 testdb:testdb

执行成果如下:

论断:通过比对,发现源数据库中有 2 张表并不在指标数据库中,而且很具体的列出了迁徙失败的表名。

mysqldiff--server1=test:test@10.20.30.3:3306--server2=test1:test1@10.20.30.4:3307 testdb.char_columns:testdb.char_columns

执行成果如下:

论断:通过比对,发现有源数据库中 char_columns 表的建表语句有差别。

5. 演示 mysql-utilities 中的 mysqldbcompare 应用和成果:

同上咱们能够通过 mysqldbcompare –help 命令查看用法:

应用如下命令能够查看源库和指标库中的表数据是否有差别:

mysqldbcompare--server1=test:test@10.20.30.3:3306--server2=test1:test1@10.20.30.4:3307 testdb:testdb

执行成果如下:

论断:通过比对,发现源库和指标库中的数据统一。

本次分享几条简略的命令到此结束。

重点在于:

  1. 作为测试,咱们能够通过以上 2 个小工具缩小咱们重复性的工作,进步测试后果的准确性。
  2. 如果咱们有肯定代码根底,能够集成以上小工具,实现一套 DTLE 的自动化测试脚本,不便当前每次版本公布的回归测试。
退出移动版