大家好,我叫 Alexander,是一名数据质量工程师,负责检查数据的质量。 这篇文章将讨论我是如何想到这一点的,以及为什么在 2020 年这个测试领域正处于浪潮的顶峰。
全球趋势
当今世界正在经历另一场技术革命,其中一个方面就是各类公司利用积累的数据来推动自己的销售、利润和公关飞轮。 似乎良好(质量)数据的存在,以及可以从中赚钱的熟练大脑(正确处理、可视化、构建机器学习模型等),已成为当今许多人成功的关键。 如果说 15-20 年前,大公司主要从事数据积累和货币化的密集工作,那么今天几乎所有理智的人都面临着这种情况。
在这方面,几年前,世界各地所有致力于求职的门户网站都开始填补数据科学家的职位空缺,因为每个人都相信,雇用了这样的专家,他们可以建立机器学习的超级模型,预测未来为公司实现“质的飞跃”。 随着时间的推移,人们意识到这种方法几乎在任何地方都行不通,因为并非所有落入此类专家手中的数据都适合训练模型。
来自数据科学家的请求开始:“让我们从这些和那些中购买更多数据......”,“我们没有足够的数据......”,“我们需要更多的数据,最好是高质量的......” 。 基于这些请求,拥有一组或另一组数据的公司之间开始建立大量的交互。 当然,这需要这个过程的技术组织——连接到数据源、下载数据、检查数据是否已完全加载等等。此类过程的数量开始增长,今天我们非常需要另一种专家 - 数据质量工程师 - 监视系统中的数据流(数据管道)、输入和输出的数据质量,并就其充分性、完整性和其他特征得出结论的人员。
数据质量工程师的趋势来自美国,在资本主义的汹涌时代,没有人准备在数据之战中失败。 下面我提供了美国两个最受欢迎的求职网站的屏幕截图:
数据科学家 – 21416 个职位空缺
数据质量 – 41104 个职位空缺
数据科学家 – 404 个职位空缺
数据质量 – 2020 年职位空缺
显然,这些职业之间绝不存在竞争。 我只是想用截图来说明劳动力市场对数据质量工程师的需求现状,现在对数据质量工程师的需求比数据科学家要多得多。
2019 年 XNUMX 月,EPAM 响应现代 IT 市场的需求,将数据质量分离为单独的实践。 数据质量工程师在日常工作过程中管理数据,检查其在新条件和系统中的行为,监控数据的相关性、充分性和相关性。 尽管如此,从实际意义上讲,数据质量工程师实际上很少花时间进行经典功能测试, 但 这很大程度上取决于项目(我将在下面举一个例子)。
数据质量工程师的职责不仅限于对数据库表中的“空值、计数和总和”进行例行手动/自动检查,还需要深入了解客户的业务需求,并相应地将可用数据转换为有用的商业信息。
数据质量理论
为了更全面地想象这样一个工程师的角色,让我们弄清楚理论上的数据质量是什么。
数据质量 — 数据管理的阶段之一(我们将留给您自己研究的整个世界),负责根据以下标准分析数据:
我认为没有必要破译每一个点(理论上它们被称为“数据维度”),它们在图中描述得很好。 但测试过程本身并不意味着严格地将这些功能复制到测试用例中并检查它们。 在数据质量中,与任何其他类型的测试一样,首先有必要建立在与做出业务决策的项目参与者商定的数据质量要求的基础上。
根据数据质量项目的不同,工程师可以执行不同的职能:从对数据质量进行肤浅评估的普通自动化测试人员,到根据上述标准对数据进行深入剖析的人员。
关于数据管理、数据质量和相关流程的非常详细的描述在名为 “DAMA-DMBOK:数据管理知识体系:第二版”。 我强烈推荐这本书作为该主题的介绍(您将在文章末尾找到该主题的链接)。
我的故事
在 IT 行业,我从产品公司的初级测试员一路晋升为 EPAM 的首席数据质量工程师。 经过大约两年的测试员工作后,我坚信我已经完成了绝对所有类型的测试:回归、功能、压力、稳定性、安全性、UI 等 - 并尝试了大量的测试工具,同时使用三种编程语言:Java、Scala、Python。
回顾过去,我明白为什么我的技能如此多样化——我参与了大大小小的数据驱动项目。 这让我进入了一个充满许多工具和成长机会的世界。
要了解获得新知识和技能的各种工具和机会,只需查看下图,其中显示了“数据与人工智能”世界中最流行的工具和机会。
此类插图每年由著名风险投资家之一马特·图尔克(Matt Turck)编写,他出身于软件开发行业。 这里
当我是项目中唯一的测试人员时,或者至少在项目开始时,我的专业成长尤其快。 就是在这样的时刻,你要对整个测试过程负责,你没有退路的机会,只有前进。 起初这很可怕,但现在这种测试的所有优点对我来说都是显而易见的:
- 您开始以前所未有的方式与整个团队进行沟通,因为没有沟通代理:既没有测试经理也没有其他测试人员。
- 对项目的沉浸感变得异常深入,并且您可以获得有关所有组件的一般信息和详细信息。
- 开发人员不会将你视为“那个不知道自己在做什么的测试人员”,而是将你视为一个平等的人,通过他的自动化测试和对出现在特定组件中的错误的预期,为团队带来了令人难以置信的好处。产品。
- 因此,您会变得更加高效、更加合格并且更受欢迎。
随着项目的发展,在 100% 的情况下,我成为了新测试人员的导师,教导他们并传授我自己学到的知识。 同时,根据项目的不同,我并不总是从管理层那里获得最高水平的自动测试专家,并且需要对他们进行自动化培训(对于那些感兴趣的人)或创建在日常活动中使用的工具(工具)用于生成数据并将其加载到系统中的工具,“快速”执行负载测试/稳定性测试的工具等)。
具体项目示例
不幸的是,由于保密义务,我无法详细谈论我所从事的项目,但我将举例说明数据质量工程师在其中一个项目中的典型任务。
该项目的本质是实现一个为基于它的训练机器学习模型准备数据的平台。 客户是一家来自美国的大型制药公司。 从技术上讲,它是一个集群
从视觉上看,一切看起来都是这样的:
该项目进行了大量的功能测试,考虑到功能开发的速度以及保持发布周期节奏(两周冲刺)的需要,有必要立即考虑对最关键的组件进行自动化测试系统。 大多数基于 Kubernetes 的平台本身都包含在以下实现的自动测试中:
最后,在我们实现平台和 GUI 插件的稳定性后,我们开始使用 Apache Airflow DAG 构建 ETL 管道。 通过编写特殊的 Airflow DAG 来执行自动数据质量检查,该 DAG 根据 ETL 过程的结果检查数据。 作为该项目的一部分,我们很幸运,客户允许我们访问我们测试的匿名数据集。 我们逐行检查数据是否符合类型、是否存在损坏的数据、前后的记录总数、聚合 ETL 过程进行的转换的比较、更改列名称等。 此外,这些检查还扩展到不同的数据源,例如,除了 SalesForce 之外,还扩展到 MySQL。
最终数据质量检查已在 S3 级别进行,数据存储在其中并可随时用于训练机器学习模型。 为了从 S3 存储桶上的最终 CSV 文件获取数据并验证它,使用以下代码编写了代码
客户还要求将部分数据存储在一个 S3 存储桶中,并将部分数据存储在另一个 SXNUMX 存储桶中。 这还需要编写额外的检查来检查此类排序的可靠性。
其他项目的一般经验
数据质量工程师最常见的活动列表示例:
- 通过自动化工具准备测试数据(有效无效大小)。
- 将准备好的数据集上传到原始源并检查是否可以使用。
- 启动 ETL 进程,使用一组特定设置(如果可能,为 ETL 任务设置可配置参数)处理从源存储到最终或中间存储的一组数据。
- 验证 ETL 流程处理的数据的质量以及是否符合业务要求。
同时,检查的主要重点不应仅仅在于系统中的数据流原则上已工作并完成(这是功能测试的一部分),而应主要检查和验证数据符合预期要求、识别异常等。
工具
这种数据控制的技术之一可以是在数据处理的每个阶段组织链式检查,即文献中所谓的“数据链”——对数据从源头到最终使用点的控制。 这些类型的检查通常通过编写检查 SQL 查询来实现。 显然,此类查询应尽可能轻量级,并检查各个数据质量(表元数据、空行、NULL、语法错误 - 检查所需的其他属性)。
在回归测试中,使用现成的(不可更改的、稍微可更改的)数据集,自动测试代码可以存储现成的模板,用于检查数据是否符合质量(预期表元数据的描述;可以是的行样本对象)。测试期间随机选择等)。
另外,在测试过程中,你必须使用Apache Airflow等框架编写ETL测试流程,
除了现成的解决方案之外,没有人禁止您实施自己的技术和工具。 这不仅有利于项目,也有利于数据质量工程师本人,从而提高他的技术视野和编码技能。
它如何在实际项目中发挥作用
以下来自一个真实项目的过程很好地说明了最后几段有关“数据链”、ETL 和无处不在的检查的情况:
在这里,各种数据(自然是我们准备的)进入我们系统的输入“漏斗”:有效、无效、混合等,然后它们被过滤并最终进入中间存储,然后它们再次经历一系列转换并放置在最终存储中,依次进行分析、构建数据集市和搜索业务洞察。 在这样的系统中,我们无需对 ETL 流程的操作进行功能检查,而是专注于转换前后的数据质量以及分析的输出。
综上所述,无论我在哪里工作,我所参与的数据项目都具有以下特征:
- 只有通过自动化,你才能测试一些案例并达到业务可以接受的发布周期。
- 此类项目的测试人员是团队中最受尊敬的成员之一,因为它为每个参与者带来了巨大的好处(加速测试、数据科学家提供的良好数据、早期阶段的缺陷识别)。
- 无论您是在自己的硬件上还是在云中工作,所有资源都被抽象到一个集群中,例如 Hortonworks、Cloudera、Mesos、Kubernetes 等。
- 项目基于微服务方法构建,分布式和并行计算占主导地位。
我想指出的是,在数据质量领域进行测试时,测试专家将其专业重点转移到产品的代码和所使用的工具上。
数据质量测试的显着特征
此外,就我自己而言,我已经确定了以下(我将立即保留它们非常笼统且完全主观)在数据(大数据)项目(系统)和其他领域测试的显着特征:
有用的链接
- 理论:
DAMA-DMBOK:数据管理知识体系:第二版 . 培训中心 EPAM- 为初级数据质量工程师推荐的材料:
- Stepik 上的免费课程:
数据库简介 . - LinkedIn 学习课程:
数据科学基础:数据工程 . - 文章:
- 视频:
- Stepik 上的免费课程:
结论
数据质量 这是一个非常年轻、有前途的方向,成为其中的一部分就意味着成为初创公司的一部分。 一旦进入数据质量,您将沉浸在大量现代、急需的技术中,但最重要的是,将为您提供产生和实施您的想法的巨大机会。 您不仅可以在项目上使用持续改进方法,还可以为自己使用持续改进方法,不断发展为专家。
来源: habr.com