数据迁移测试总结

一、适用场景

​ 将A系统中的数据迁移到B系统中,对迁移的数据进行完整性、一致性、可用性的验证

二、 测试前需要了解

  • 了解需要迁移的数据范围,比如时间范围、哪些模块要迁移
  • 清楚迁移数据是一次性的全量迁移,还是会涉及到增量迁移
  • 迁移数据的方法,是通过什么方式来进行迁移的

三、根据迁移方案制定测试方案

​ 在迁移方案制定过程要也要参与到其中,一方面是为了验证迁移方案是否合理,另一方面是为了能制定出合理的测试方案和测试计划

以下以某某省旧业务系统迁移到新业务系统为例(从SQLserver数据库迁移到postgre数据库)

1、基础数据对应关系建立

  • 单值对应关系建立:验证单值对应关系,要保证旧系统中有的单值在新系统中都能对应上
  • 部门/人员组织机构关系建立:对于在旧系统存在,而新系统库中不存在的进行抽取,若旧系统和新系统库中均存在则不更新,以新系统库为准(每家监狱都需要进行初始化)
  • 特殊情况处理:词组情况(在旧系统中页面上看着是单值,但存储在数据库中是文本格式的字段,需要整理出这样的字段,并且在业务库中新加一个对应的字段来存储)

2、迁移过程验证分析

​ 使用的**PDI(Pentaho Data Integration)**这款工具(没有深入了解过,但知道怎么操作,能看懂SQL和转换关系就能完成测试工作了),数据过程如图所示

说明:旧系统是每个地方各部署一套,然后定期进行数据集中汇总,迁移到的新系统是集中部署的,所以需要将各地方部署的数据库一个个的都迁移到新业务系统的数据库中

迁移过程

3、测试验证过程,确保数据的完整性、一致性、可用性:

  • 迁移每类数据前,先了解PDI程序中对应的作业,明白整个作业中需要做什么事(需要了解原数据表是哪些,目标表对应的是哪些,并且对应关系是怎样的)
  • 查看PDI中从原数据库查询SQL的数据范围正确性
  • 验证PDI中的转换程序对应关系的正确性
  • 迁移完后 比对各业务表中数据量
  • 查看ETL库中错误信息表(t_etl_error_log),了解哪些表抽数失败,并分析原因;在t_etl_nor_log存放已抽取过来的数据,c_flag字段会标志此数据是新增还是更新过来的
  • 由于在迁移的过程中可能存在用户使用老系统的情况,需要考虑增量抽取的情况,并且在造数据时注意以下内容的覆盖和验证:
    • 增量抽取情况(需要根据抽取频率、数据量,考虑抽取数据的效率)
    • 迁移所涉及到的业务需要都进行录入数据,并且最好每类都能覆盖到
    • 可为空字段都为空
    • 允许输入的字段输入允许的最大值
    • 对于可以输入亦可以选择,两种情况都需要覆盖(即上面说的词组情况)
    • 修改数据后,验证是否是修改后的内容
    • 可以删除的数据被删除后,数据是否同步
  • 在业务系统中操作迁移过来的数据,查看是否能正确处理,需要特别注意
    • 必填项是空值的情况
    • 在系统中无对应代码值的情况
    • 对于文本类,两边设置的长度是否一样
    • 日期字段显示是否符合规范
    • 重点模块的业务
    • 由于数据迁移导致新业务系统新加字段,并且需要在页面上显示,重点测试
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会记录下使用MNIST数据集进行迁移学习实现手写数字分类的实训过程,并总结经验体会。 1. 数据集准备 首先,我们需要下载MNIST数据集并进行预处理。MNIST数据集包含60,000张训练图像和10,000张测试图像,每张图像的大小为28x28像素。我们可以使用Python中的tensorflow库来下载和导入MNIST数据集,代码如下: ```python import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 下载并导入MNIST数据集 mnist = input_data.read_data_sets("MNIST_data", one_hot=True) ``` 在导入数据集之后,我们需要对图像进行预处理,将像素值缩放到0到1之间,以便于模型训练。 2. 迁移学习模型的选择 我们可以选择使用预训练模型作为迁移学习的模型。在本例中,我们选择了VGG16模型作为预训练模型,因为VGG16模型在图像识别任务上表现良好。 在使用VGG16模型之前,我们需要对它进行一些修改。由于我们的任务是手写数字分类,而VGG16模型是在ImageNet数据集上进行训练的,因此我们需要修改VGG16模型的输出层,将它变成一个输出10个类别的全连接层。代码如下: ```python from tensorflow.keras.applications import VGG16 from tensorflow.keras.layers import Dense, Flatten from tensorflow.keras.models import Model # 加载VGG16模型,去掉顶层 vgg = VGG16(weights='imagenet', include_top=False, input_shape=(28, 28, 3)) # 添加自定义的顶层 x = vgg.output x = Flatten()(x) predictions = Dense(10, activation='softmax')(x) # 构造新模型 model = Model(inputs=vgg.input, outputs=predictions) # 冻结VGG16模型的所有层 for layer in vgg.layers: layer.trainable = False ``` 在上面的代码中,我们首先加载了VGG16模型,并去掉了顶层。然后,我们添加了一个Flatten层和一个输出10个类别的全连接层,并将它们作为新模型的输出层。最后,我们冻结了VGG16模型的所有层,以便于在训练过程中不会影响它们的权重。 3. 模型训练 在模型训练之前,我们需要定义一些超参数,如学习率、批大小和训练轮数。在本例中,我们选择了学习率为0.001,批大小为32,训练轮数为10。 ```python # 定义超参数 learning_rate = 0.001 batch_size = 32 num_epochs = 10 # 编译模型 model.compile(optimizer=tf.keras.optimizers.Adam(lr=learning_rate), loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(mnist.train.images.reshape(-1, 28, 28, 1), mnist.train.labels, batch_size=batch_size, epochs=num_epochs, verbose=1, validation_data=(mnist.test.images.reshape(-1, 28, 28, 1), mnist.test.labels)) ``` 在上面的代码中,我们首先定义了超参数。然后,我们使用tf.keras.optimizers.Adam优化器和交叉熵损失函数编译了模型,并在训练过程中使用了验证集来评估模型的性能。 4. 模型评估 在模型训练完成之后,我们可以使用测试集来评估模型的性能。代码如下: ```python # 评估模型 score = model.evaluate(mnist.test.images.reshape(-1, 28, 28, 1), mnist.test.labels, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1]) ``` 在上面的代码中,我们使用了模型的evaluate方法来计算测试集上的损失和准确率。 5. 总结经验体会 通过上面的实训过程,我们可以得出以下几点经验体会: - 迁移学习可以帮助我们在小型数据集上构建高性能的模型。 - 在选择预训练模型时,需要考虑它在目标任务上的性能和适应性。 - 在使用预训练模型时,需要修改它的顶层,并冻结所有层以防止它们在训练过程中被更新。 - 在训练过程中,需要使用小批量数据和合适的学习率来避免过拟合和欠拟合。 - 在评估模型性能时,需要使用测试集来评估模型的泛化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值