ETL(大数据)测试实战篇(二)
今天继续和大家一同分享在项目实践中针对大数据测试方面的一些有效流程和方法,希望与君共勉~
今日分享的文章内容,主题是:通用case的常用测试方法
01、目标表每个字段判断逻辑验证
(1)、code diff代码逻辑---这个过程的参与者是开发与QA,由开发主讲代码逻辑,QA提出疑议并与之讨论,在diff前需要QA先行查看即将提测的代码,以便在code diff时提出问题;
code diff工具推荐使用:下载IDE后安装git插件,我经常写python,所以使用的是Pycharm,再安装git插件作为常用的code diff工具。
(2)、目标表中依据需求设置case场景覆盖需求点进行每条case的执行和验证;
02、串列
(1)、正则regexp表达式,使用方法为:
select column_name from table_name where column_name regexp '[a-zA-Z]';
【含义为:查询目标字段值包含英文字母,不区分大小写的所有字段集合】
(2)、length()函数,使用方法为:
select column_name from table_name where length(column_name)>10;
【含义为:查询目标字段长度大于10的所有字段集合,如时间字段一般保留至年月日,所以正常长度应该是10,如果查出大于或小于10的长度的数据集合,则为串列数据】
03、业务数据逻辑验证
(1)、操作类时间:需要依据具体的业务需求进行分析,例如:预订类的明细表中的insert_date必须是小于等于update_date或cancelled_date,
夜审的原因会导致dt分区里的数据会收取一部分dt+1的业务数据,如果insert_date>=dt+2有数据存在,则不符合业务逻辑;
(2)、基于pm需求:case when的判断逻辑(包含:正常数据逻辑与异常数据逻辑);表之间join的方式及使用的where条件和on条件;
(3)、全量数据验证时,使用的复杂查询sql需要写tmp临时表,可解决重复查询时资源浪费的问题;
04、数据总量验证
(1)、依赖的源表中为主表的join的数据总和与目标表同等条件下的数据总量进行数据总量的对比;
05、数据主键不重复
(1)、依据表设计说明,在目标表中使用group by column_name
例如:
select count(1) from dws.dws_test_stat_daily_df where dt='2020-03-29'
group by column_test001,resv_date having(count(1))>1;
group by后的字段:column_test001和resv_date是表dws_test_stat_daily_df的主键
如果上述条件查询出的结果大于0,则说明有数据主键重复的数据,需要对应项目的开发排查解决;
06、task计划
(1)、与开发code diff关于配置task计划的代码【包含:依赖的表分区不对齐,断更等异常处理】;
(2)、beta环境执行etl程序时,直接使用task计划里的脚本执行初始化和增量,查看执行结果;
(3)、task.yaml文件中所依赖的分区表是否全部列举至file栏,如以下task.yaml文件所示:
task_name: tmp_test_room_fac_df
transform:
- step: declare.shell
var: exc
file: $TASK_HOME/scripts/common/run_test.sh "dws.test_table_001 dws.test_table_002"
tem.tmp_test_room_fac_df sql/tmp_test_room_fac_df.sql 1
07、手工文件解析验证
(1)、code diff时查看目标手工文件的列数与行数是否与PM给的手工文件表保持一致(注意问题:特殊字符与列分隔符不能重复);
(2)、目标结果手工文件表与PM给的手工文件表再次diff差异,一般是没有差异说明手工文件入库正确(注意问题:串列,特殊字符,文件总条数);
08、调度任务配置验证
调度任务一般使用较多的是:时间依赖和事件依赖。
时间依赖是指:配置定时任务,在某段时间内执行,或某个时间点执行;
事件依赖是指:目标表任务的执行需要依赖一些前置条件,如源表数据与中间表数据ready后,才能执行目标表的任务;
一般调度任务只对增量数据做配置,因为初始化的数据正常情况下只需要在上线时手动执行一次,如果后期项目无频繁迭代,可不用配置初始化的调度任务,而增量数据需要每天都执行,所以需要配置调度任务每天去自动执行,正常情况下不需要人工干预,为便于尽早发现调度任务执行问题,会在线上配置完调度后,再对应的配置上监控,假如调度任务持续执行失败,就需要人工干预解决。下图为事件依赖的调度配置页面详细信息:
备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,一起共同成长吧。
上一篇: jmeter查询非关系型数据库Hbase
下一篇: Linux下图形用户界面自动化操作工具
推荐阅读
-
上海13所原二本大学,2020录取数据简析(应技大、二工大、立信、政法等)
-
上海13所原二本大学,2020录取数据简析(应技大、二工大、立信、政法等)
-
1+1>2! 西部数据(西数)SSD+HDD二合一硬盘详尽测试图文讲解
-
互联网八大技术岗位解析:前端+后端+移动+测试+大数据+管理等
-
互联网八大技术岗位解析:前端+后端+移动+测试+大数据+管理等
-
三大常用关系型数据库事务详解之二:基本事务命令
-
大数据测试之ETL
-
1+1>2! 西部数据(西数)SSD+HDD二合一硬盘详尽测试图文讲解
-
Android 五大数据存储 (最实用的开发详解) 二 SharedPreferences存储的使用
-
nginx-大并发压力测试数据,求大神指导