大小数据测试仪:趋势,理论,我的故事

大家好,我叫Alexander,我是一位数据质量工程师,负责检查数据的质量。本文将讨论我是如何做到这一点的,以及为什么在2020年这个测试方向竟然正处于潮流的顶峰。



世界潮流


当今世界正在经历另一场技术革命,其中一个方面是各个公司使用各种数据来促进自己的销售飞轮,利润和公关。看来,好(质量)数据的存在以及熟练的大脑可以从中获利(正确处理,可视化,建立机器学习模型等),已成为当今许多人成功的关键。如果15到20年前,大型公司从事繁琐的工作,积累数据并进行货币化,那么今天,几乎所有理智的人都是如此。

在这方面,几年前,全世界所有的求职门户都开始充斥着数据科学家的职位空缺,因为每个人都确信,通过聘请这样的专业人员,您可以构建机器学习超模型,预测未来并做出“量子”飞跃公司。随着时间的流逝,人们意识到这种方法几乎是行不通的,因为远离此类专家的所有数据都适合于训练模型。

数据科学家的要求开始了:“让我们从这些数据中购买更多数据。。。”,“我们没有足够的数据...”,“我们需要更多的数据,最好是高质量的数据……”。根据这些请求,拥有特定数据集的公司之间的众多互动开始出现。自然,这需要此过程的技术组织-连接到数据源,下载它们,验证它们是否已完全加载等。此类过程的数量开始增长,今天,我们已经迫切需要另一种专家-数据质量工程师-那些将监视系统(数据管道)中的数据流,输入和输出处的数据质量的工程师,将得出有关其充分性,完整性和其他特征的结论。

数据质量工程师的趋势来自美国,在资本主义风云变幻的时代,没有人愿意输掉数据之战。下面我从美国两个最流行的求职网站提供的截图:www.monster.comwww.dice.com -显示数据在2020年3月17日收到的职位空缺发布,通过关键字的数量:数据质量和数据科学家。

www.monster.com
数据科学家-21,416个工作数据质量-41,104个职位

www.dice.com
数据科学家-404个职位数据质量-2020个职位

显然,这些专业绝不会相互竞争。通过截屏,我只是想通过对数据质量工程师的需求来说明劳动力市场的当前状况,他们现在比数据科学家需要的更多。

2019年6月,EPAM为响应现代IT市场的需求,着重强调了数据质量作为一项单独的实践。在日常工作中,数据质量工程师负责管理数据,检查其在新条件和新系统中的行为,并控制数据的相关性,适当性和相关性。考虑到所有这些,从实际的数据质量的角度来看,工程师确实花了一些时间进行经典的功能测试,但是这在很大程度上取决于项目(我将在下面给出一个示例)。

数据质量工程师的职责不仅限于例行的手动/自动检查数据库表中的“空,计数和总和”,还需要对客户的业务需求有深刻的了解,并因此需要将现有数据转换为有用的业务信息的能力。

数据质量理论




为了最充分地想象这样一个工程师的作用,让我们弄清楚什么是数据质量理论上的。

数据质量是数据管理的阶段之一(整个世界,我们将让您独立研究),并负责根据以下标准分析数据:


我认为没有必要解读每个点(理论上它们被称为“数据维度”),它们在图片中已经很好地描述了。但是测试过程本身并不意味着将这些标志严格复制到测试用例及其验证中。在数据质量中,就像在其他任何类型的测试中一样,首先必须从与项目参与者做出业务决策达成的数据质量要求中进行。



根据数据质量项目,工程师可以执行各种功能:从对数据质量进行表面评估的普通自动化测试仪,到根据上述标准进行深度分析的人员。



在标题为“ DAMA-DMBOK:数据管理知识体系:第二版”的书中很好地描述了数据管理,数据质量和相关过程我强烈推荐这本书作为对此主题的介绍(您将在本文末尾找到其链接)。

我的故事


在IT行业中,我从初级产品测试员变成了EPAM的首席数据质量工程师。在担任测试人员大约两年后,我坚信自己可以进行所有类型的测试:回归,功能,压力,稳定性,安全性,UI等-并尝试了许多测试工具,同时使用三种编程语言:Java,Scala,Python。



回顾过去,我理解为什么我的专业技能是如此之多-我参加了与处理大小数据相关的项目。这就是引导我走向世界的众多工具和增长机会的原因。



要欣赏获得新知识和技能的各种工具和机会,请看下面的图片,该图片显示了在“数据和AI”世界中最受欢迎的工具。


这种插图是由一位著名的风险投资家Matt Turck(软件开发人员)每年编写的。这是他作为合伙人的博客和风险投资公司链接 当我是项目的唯一测试员时,或者至少在项目开始时,我的专业发展尤其迅速。此时此刻,您必须对整个测试过程负责,并且您没有机会退后,只能前进。最初是稻草人,但现在对我而言,这种测试的所有优势显而易见:



  • 您开始比以往任何时候都更需要与整个团队进行沟通,因为没有沟通的代理:测试经理和测试人员都没有。
  • , , .
  • « , », , , .
  • — , , .

随着项目的100%的增长,我成为了测试人员的指导者,他们再次来到他身边,对他们进行了培训,并传递了我所学到的知识。同时,根据项目的不同,我并不总是从管理层那里得到最高水平的自动测试专家,因此有必要对他们进行自动化培训(针对那些有需要的人),或者需要创建在日常活动中使用它们的工具(数据生成工具并将其加载到系统中) ,用于进行负载测试/“快速”稳定性测试的工具等)。

具体项目实例


不幸的是,由于保密义务,我无法详细介绍我从事的项目,但是我将举例说明其中一个项目的典型数据质量工程师任务。

该项目的实质是实现一个平台,用于为基于它们的机器学习模型训练数据准备数据。客户是一家来自美国的大型制药公司。从技术上讲,它是一个Kubernetes集群该集群上升到AWS EC2实例,具有几个微服务,并且EPAM- Legion项目是Open Source的基础,适应了特定客户的需求(现在该项目被重新命名odahu)。 ETL流程是使用Apache Airflow进行组织的,并从AWS S3存储桶中的SalesForce客户系统接下来,在平台上部署了机器学习模型的docker镜像,该镜像接受了最新数据的培训,并基于REST API接口产生了对业务感兴趣并解决特定问题的预测。

在视觉上,一切看起来都像这样:


这个项目上有很多功能测试,并且鉴于开发功能的速度以及保持发布周期(两周的冲刺)的速度的需要,有必要立即考虑对最关键的系统节点进行自动化测试。带有Kubernetes的大多数平台本身都已在Robot Framework上实施了自测+ Python,但它们也需要维护和扩展。此外,为了方便客户,创建了一个GUI来管理嵌入集群中的机器学习模型,以及指定在何处和何处传输数据以进行模型训练的功能。这一广泛的扩展要求扩展了自动功能检查,这主要是通过REST API调用和少量的端到端2 UI测试完成的。在这一切运动的赤道附近,我们由一名手动测试员加入,他在接受产品版本测试以及与客户交流接受下一个版本方面做得非常出色。此外,由于新专家的出现,我们能够记录我们的工作并添加一些非常重要的手动检查,很难立即实现自动化。

最后,在我们从该平台及其上的GUI插件获得稳定性之后,我们开始使用Apache Airflow DAG构建ETL管道。自动化的数据质量控制是通过编写特殊的Airflow DAG进行的,这些DAG根据ETL过程的结果检查数据。作为该项目的一部分,我们很幸运,客户让我们可以访问经过匿名测试的数据集。我们逐行检查数据是否符合类型,是否存在损坏的数据,前后的记录总数,比较ETL流程执行的转换以进行聚合,更改列名等。此外,这些检查被扩展到不同的数据源,例如,除了SalesForce之外,还基于MySQL。

最终数据质量的检查已经在S3级别上进行了,在那里将它们存储并准备用于学习机器学习模型。为了从S3存储桶上的最终CSV文件中获取数据并进行验证,使用boto3客户端编写了代码

另外,对于客户而言,要求将部分数据存储在一个S3存储桶中,而另一部分存储在其中。为此,还需要编写其他检查以验证这种类型的可靠性。

其他项目的一般经验


工程师的数据质量活动的最概括列表:

  • 通过自动化工具准备测试数据(有效/无效/大/小)。
  • 将准备好的数据集下载到原始源中,并检查其是否准备就绪。
  • 启动ETL流程,以使用一组特定的设置(如果可能,为ETL任务设置可配置的参数)来处理从源存储到最终或中间的数据集。
  • 验证ETL流程处理的数据的质量和是否符合业务要求。

同时,检查的主要重点不仅应在于系统中的数据流已经算出并到达终点的事实(这是功能测试的一部分),而且还应主要针对数据的验证和确认是否符合预期要求,识别异常和其他事情。

工具类


这种数据控制的技术之一可以是在数据处理的每个阶段组织链式检查,在文献中称为“数据链”-从源头到最终使用点的数据控制。此类检查通常是通过编写验证SQL查询来实现的。显然,此类请求应尽可能轻巧,并检查各个数据质量(表元数据,空行,NULL,语法错误-其他必需的属性检查)。

在使用现成的(不变的/稍有变化的)数据集进行回归测试的情况下,用于根据质量检查数据的现成的模板(预期表元数据的描述;可以在测试过程中随机选择的小写选择性对象可以存储在自动测试代码中)等等)。

同样在测试期间,您必须使用诸如Apache Airflow,Apache Spark之类的框架甚至是黑盒云工具(如GCP DataprepGCP Dataflow)编写测试ETL流程等等。这种情况使测试工程师沉迷于上述工具的原理,甚至更有效地进行功能测试(例如,项目中现有的ETL流程)并使用它们来验证数据。特别是,Apache Airflow拥有现成的运算符,可用于处理流行的分析数据库,例如GCP BigQuery这里已经概述了其用法的最基本示例,因此我不再赘述。

除了现成的解决方案外,没有人禁止您出售技术和工具。这不仅对项目有利,而且对数据质量工程师本身也有好处,从而提高了技术视野和编码技能。

在实际项目中如何运作


关于“数据链”,ETL和无处不在的检查的最后几段的一个很好的说明是来自一个实际项目的以下过程:



在这里,不同的数据(由我们自然准备)落入我们系统的输入“渠道”:有效,无效,混合等。 n。,然后将它们过滤并最终存储在中间存储中,然后再次等待一系列转换并将其放置在最终存储中,从中依次进行分析,数据映射和搜索业务洞察力。在这样的系统中,我们没有在功能上检查ETL流程的运行,而是专注于转换前后的数据质量以及进行分析。

综上所述,无论我在哪里工作,我到处都参与了结合以下功能的数据项目:

  • 只有通过自动化,您才能验证某些情况并实现业务友好的发布周期。
  • 这个项目的测试人员是最受尊敬的团队成员之一,因为它为每个参与者带来了巨大的好处(加快测试速度,从数据科学家那里获得良好数据,在早期阶段发现缺陷)。
  • 不管您是在硬件上还是在云端工作,所有资源都被抽象到一个集群中,例如Hortonworks,Cloudera,Mesos,Kubernetes等。
  • 项目基于微服务方法,因此以分布式和并行计算为准。

我注意到,在数据质量领域进行测试时,测试专家将其专业重点转移到所使用的产品代码和工具上。

数据质量测试的特色


此外,对于我自己,我着重强调了以下内容(我将立即做出非常普遍和主观的保留)在数据(大数据)项目(系统)和其他领域中的区别测试功能:


有用的链接


  1. 理论:DAMA-DMBOK:数据管理知识体系:第2版
  2.  EPAM  培训中心
  3. 推荐给新手数据质量工程师的材料:

    1. Stepik免费课程:  数据库入门。 
    2. LinkedIn学习课程:  数据科学基础:数据工程
    3. 文章:

    4. 视频:


结论


数据质量是一个非常有前途的领域,要成为其中的一部分就意味着要成为一家初创公司。一旦进入数据质量,您将投入大量需求的现代技术,但最重要的是-您将有巨大的机会来产生和实施您的想法。您不仅可以在项目上使用持续改进的方法,还可以使用自己作为专家的不断发展的方法。

All Articles