大数据测试技术栈个人分享

本人原先是做了一年数据平台开发,后到一家大数据公司转做数据测试工作,目前数据测试1年经验。工作沟通最多的就是数据分析师、开发和产品,数据测试在测试过程中也经常会用到一些分析方法。

一、挖掘师进阶之路-对数据测试有用的技术

在半年前,一次数据分析师的会议分享中,他提到了数据挖掘师的进阶之路,很实用。结合我自己的工作体会也和大家分享一下,一个数据测试可能需要掌握的一些数据分析技能。
大数据测试技术栈个人分享

1.excel

excel平时用到的很多,熟练使用数据视图、清楚绝对引用相对引用的概念、vlookup等函数、还有一些工具栏的基本操作(排序筛选、条件)即可,强烈推荐《谁说菜鸟不会数据分析》的excel篇,全篇读完日常excel工作就没什么难度了。

2.业务

业务对于数据测试是第一位的,测试用例要和业务强相关,最后还要给出产品相应的业务指标,以衡量数据质量。

举例解释下熟悉业务对于数据测试的必要性:分析师给出表A。表A有字段id、name、age、city等。如果只从数据出发(数据生成逻辑正常、id唯一、格式等),表A完全没有问题,但业务目标是找出表中所有在上海的人的情况,对于用户而言,只关心在上海的人,如果表中的city没有"上海“,或者数量很少,那这张表对于业务就是毫无意义的,需要分析师新增数据源或者直接废弃掉这个需求。

3.sql

sql是数据测试的主要手段。平时进行数据测试都用presto查询数据,速度快,但数据量大的时候就跑不起来了。测试也会根据需要用hive sql建表,要熟练掌握shell脚本。

3.统计学理论

对于数据测试而言,step3提到的这些统计学理论工作上用不着,但是也值得学习,毕竟分析师聊天的时候至少你能知道那是什么

4.机器学习

因为日常工作中经常会测试机器学习模型,所以对一些机器学习理论还算有所了解。模型有训练集、验证集、测试集。我们测试需要找产品提供、或者自己一些寻找非训练集的数据作为测试集,来验证模型,这也要求测试要有取数、etl的能力。

5.取数、etl

对于测试而言很重要,不仅机器学习要用到,计算很多数据指标的时候也会用到,因为一个指标有时需要用多张表的信息才能得到。数据测试应当是整个业务线最了解业务用表和业务源表的人,因为不同的开发、分析师做的东西都会提测。测试要让所有人对这些的表的认知信息对等。

6.可视化

superset是不错的选择,功能比较强大。

7.编程语言

目前我只熟悉java和scala,python工作中接触的更多一点,正在努力学习。java主要是用来写一些udf进行数据测试,scala用来跑一些spark任务。

二.自动化测试

说一下对数据测试非常重要的内容-自动化测试

1.pandas-profiling-自动生成数据报告

由于业务和数据逻辑复杂,目前对于新数据的第一次测试,自动化很少,主要靠人工。但可以使用pandas-profiling规避掉繁琐的数据基础测试过程。它可以自动生成数据的详细报告,一眼看出数据的明显问题。

2.数据每日监控

当数据上线后,数据监控是必要措施。目前的主要数据监控方式是:

(1)利用公司自己的qc系统+superset进行数据监控,我们的qc系统大家自己也可以做个轻量级的自己用用看,主要思想是:设计各种数据指标,数据发生变动时执行任务,将指标计算结果存入表中,然后用superset监控表中的指标情况。

(2)定时任务
jenkins定时任务进行数据监控
crontab定时任务