ETL(大数据)测试实战篇(二)

今天继续和你们一同分享在项目实践中针对大数据测试方面的一些有效流程和方法,但愿与君共勉~python


今日分享的文章内容,主题是:通用case的经常使用测试方法git


0一、目标表每一个字段判断逻辑验证sql

(1)、code diff代码逻辑---这个过程的参与者是开发与QA,由开发主讲代码逻辑,QA提出疑议并与之讨论,在diff前须要QA先行查看即将提测的代码,以便在code diff时提出问题;shell

code diff工具推荐使用:下载IDE后安装git插件,我常常写python,因此使用的是Pycharm,再安装git插件做为经常使用的code diff工具。微信


(2)、目标表中依据需求设置case场景覆盖需求点进行每条case的执行和验证;app



0二、串列编辑器


(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的长度的数据集合,则为串列数据】


0三、业务数据逻辑验证


(1)、操做类时间:须要依据具体的业务需求进行分析,例如:预订类的明细表中的insert_date必须是小于等于update_date或cancelled_date,

夜审的缘由会致使dt分区里的数据会收取一部分dt+1的业务数据,若是insert_date>=dt+2有数据存在,则不符合业务逻辑;


(2)、基于pm需求:case when的判断逻辑(包含:正常数据逻辑与异常数据逻辑);表之间join的方式及使用的where条件和on条件;

(3)、全量数据验证,使用的复杂查询sql须要写tmp临时表,可解决重复查询时资源浪费的问题;


0四、数据总量验证


(1)、依赖的源表中为主表的join的数据总和与目标表同等条件下的数据总量进行数据总量的对比;

0五、数据主键不重复

(1)、依据表设计说明,在目标表中使用group by column_name

例如:

select count(1from 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,则说明有数据主键重复的数据,须要对应项目的开发排查解决;


0六、task计划

(1)、与开发code diff关于配置task计划的代码【包含:依赖的表分区不对齐,断更等异常处理】;

(2)、beta环境执行etl程序时,直接使用task计划里的脚本执行初始化和增量,查看执行结果;

(3)、task.yaml文件中所依赖的分区表是否所有列举至file栏,如如下task.yaml文件所示:

task_name: tmp_test_room_fac_dftransform: - 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


0七、手工文件解析验证

(1)、code diff时查看目标手工文件的列数与行数是否与PM给的手工文件表保持一致(注意问题:特殊字符与列分隔符不能重复);


(2)、目标结果手工文件表与PM给的手工文件表再次diff差别,通常是没有差别说明手工文件入库正确(注意问题:串列,特殊字符,文件总条数);



0八、调度任务配置验证

调度任务通常使用较多的是:时间依赖事件依赖

时间依赖是指:配置定时任务,在某段时间内执行,或某个时间点执行;

事件依赖是指:目标表任务的执行须要依赖一些前置条件,如源表数据与中间表数据ready后,才能执行目标表的任务;

通常调度任务只对增量数据作配置,由于初始化的数据正常状况下只须要在上线时手动执行一次,若是后期项目无频繁迭代,可不用配置初始化的调度任务,而增量数据须要天天都执行,因此须要配置调度任务天天去自动执行,正常状况下不须要人工干预,为便于尽早发现调度任务执行问题,会在线上配置完调度后,再对应的配置上监控,假如调度任务持续执行失败,就须要人工干预解决。下图为事件依赖的调度配置页面详细信息:


浅谈ETL测试(二)


Python大数据正态分布之箱型图上下限值计算


Face_recognition人脸识别之考勤统计


AirTest-selenium基于Web实现UI自动化测试


Anemometer将Mysql慢查询日志可视化


Python+Telnet命令实现dubbo接口自动化测试


浅谈pycrypto加密模块

本文分享自微信公众号 - 无量测试之道(gh_858a1aa25a6d)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索