前段时间测试了一个数据报表类系统-VOC系统
VOC:Voice Of Customer, 根据每天的电话求助量,机器人咨询量、人工咨询量、云客服咨询量等数据出发,关联到具体问题、产品、部门等信息上分析并展现出会员最大痛点。
VOC 的数据报表的最终展现分为两个过程
1、获取源数据并整合数据为最终表
2、数据关联到问题、产品、部门后进行分析展现
针对这两个过程,测试方法也分别两个步骤
一、 获取源数据并整合数据为最终表-ETL过程
实现方式:云梯、hive脚本、datax
开发跟进业务需求了解原始表结构,编写hive脚本,“在云端”平台上运行,获取最终表,使用dataX工具将数据导入到线上数据库
平台:在云端(内部系统)
Datax:离线同步工具
对应的测试方法
1、最终表的正确性
常见的测试方式:测试中间表的正确性、抽样或全量数据比对、hive脚本review
因为voc对应的最终表的获取逻辑相对简单,所以选择的测试方式是hive脚本review,前提条件是要先了解各个源数据表的含义及结构,对原始数据表非常了解就很容易发现问题,尤其是一些特殊值的处理
举个例子
create table if not exists r_yunong_rest ( #新建一个中间表 report_date string, prd_code string, question_code string, date_type string, value_type string, base_value string, gmt_create string, gmt_modified string ) partitioned by (pt string) row format delimited fields terminated by '\"' lines terminated by '\n' STORED AS TEXTFILE; insert overwrite table r_yunong_test #表数据插入 PARTITION (pt='$env.lastPartition') select report_date, prd_code, question_code, 'D' as date_type, '01'as value_type count(case when sid is not null then sid when caseid is not null then caseid else null end) as base_value, #特殊字段的处理,验证重点 '$env.date' as gmt_create, '$env.date' as gmt_modified from r_test #从另一个已创建的中间表r_voc_fact_question获取数据 where pt='$env.lastPartition' and question_code <>'unknown' group by report_date,prd_code,question_code; |
这个过程中需要关注的问题
1、 数据不完整
2、 数据不准确
3、 某些数据需要特殊处理,比如为null、为0的情况
4、 发现原始表数据质量不理想,需要进行处理