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

大家好,我叫 Alexander,是一名数据质量工程师,负责检查数据的质量。 这篇文章将讨论我是如何想到这一点的,以及为什么在 2020 年这个测试领域正处于浪潮的顶峰。

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

全球趋势

当今世界正在经历另一场技术革命,其中一个方面就是各类公司利用积累的数据来推动自己的销售、利润和公关飞轮。 似乎良好(质量)数据的存在,以及可以从中赚钱的熟练大脑(正确处理、可视化、构建机器学习模型等),已成为当今许多人成功的关键。 如果说 15-20 年前,大公司主要从事数据积累和货币化的密集工作,那么今天几乎所有理智的人都面临着这种情况。

在这方面,几年前,世界各地所有致力于求职的门户网站都开始填补数据科学家的职位空缺,因为每个人都相信,雇用了这样的专家,他们可以建立机器学习的超级模型,预测未来为公司实现“质的飞跃”。 随着时间的推移,人们意识到这种方法几乎在任何地方都行不通,因为并非所有落入此类专家手中的数据都适合训练模型。

来自数据科学家的请求开始:“让我们从这些和那些中购买更多数据......”,“我们没有足够的数据......”,“我们需要更多的数据,最好是高质量的......” 。 基于这些请求,拥有一组或另一组数据的公司之间开始建立大量的交互。 当然,这需要这个过程的技术组织——连接到数据源、下载数据、检查数据是否已完全加载等等。此类过程的数量开始增长,今天我们非常需要另一种专家 - 数据质量工程师 - 监视系统中的数据流(数据管道)、输入和输出的数据质量,并就其充分性、完整性和其他特征得出结论的人员。

数据质量工程师的趋势来自美国,在资本主义的汹涌时代,没有人准备在数据之战中失败。 下面我提供了美国两个最受欢迎的求职网站的屏幕截图: www.monster.com и www.dice.com — 显示截至 17 年 2020 月 XNUMX 日使用以下关键字收到的已发布职位空缺数量的数据:数据质量和数据科学家。

www.monster.com

数据科学家 – 21416 个职位空缺
数据质量 – 41104 个职位空缺

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

www.dice.com

数据科学家 – 404 个职位空缺
数据质量 – 2020 年职位空缺

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

显然,这些职业之间绝不存在竞争。 我只是想用截图来说明劳动力市场对数据质量工程师的需求现状,现在对数据质量工程师的需求比数据科学家要多得多。

2019 年 XNUMX 月,EPAM 响应现代 IT 市场的需求,将数据质量分离为单独的实践。 数据质量工程师在日常工作过程中管理数据,检查其在新条件和系统中的行为,监控数据的相关性、充分性和相关性。 尽管如此,从实际意义上讲,数据质量工程师实际上很少花时间进行经典功能测试, 这很大程度上取决于项目(我将在下面举一个例子)。

数据质量工程师的职责不仅限于对数据库表中的“空值、计数和总和”进行例行手动/自动检查,还需要深入了解客户的业务需求,并相应地将可用数据转换为有用的商业信息。

数据质量理论

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

为了更全面地想象这样一个工程师的角色,让我们弄清楚理论上的数据质量是什么。

数据质量 — 数据管理的阶段之一(我们将留给您自己研究的整个世界),负责根据以下标准分析数据:

大数据和小数据测试仪:趋势、理论、我的故事
我认为没有必要破译每一个点(理论上它们被称为“数据维度”),它们在图中描述得很好。 但测试过程本身并不意味着严格地将这些功能复制到测试用例中并检查它们。 在数据质量中,与任何其他类型的测试一样,首先有必要建立在与做出业务决策的项目参与者商定的数据质量要求的基础上。

根据数据质量项目的不同,工程师可以执行不同的职能:从对数据质量进行肤浅评估的普通自动化测试人员,到根据上述标准对数据进行深入剖析的人员。

关于数据管理、数据质量和相关流程的非常详细的描述在名为 “DAMA-DMBOK:数据管理知识体系:第二版”。 我强烈推荐这本书作为该主题的介绍(您将在文章末尾找到该主题的链接)。

我的故事

在 IT 行业,我从产品公司的初级测试员一路晋升为 EPAM 的首席数据质量工程师。 经过大约两年的测试员工作后,我坚信我已经完成了绝对所有类型的测试:回归、功能、压力、稳定性、安全性、UI 等 - 并尝试了大量的测试工具,同时使用三种编程语言:Java、Scala、Python。

回顾过去,我明白为什么我的技能如此多样化——我参与了大大小小的数据驱动项目。 这让我进入了一个充满许多工具和成长机会的世界。

要了解获得新知识和技能的各种工具和机会,只需查看下图,其中显示了“数据与人工智能”世界中最流行的工具和机会。

大数据和小数据测试仪:趋势、理论、我的故事
此类插图每年由著名风险投资家之一马特·图尔克(Matt Turck)编写,他出身于软件开发行业。 这里 链接 到他的博客和 风险投资公司,他在那里担任合伙人。

当我是项目中唯一的测试人员时,或者至少在项目开始时,我的专业成长尤其快。 就是在这样的时刻,你要对整个测试过程负责,你没有退路的机会,只有前进。 起初这很可怕,但现在这种测试的所有优点对我来说都是显而易见的:

  • 您开始以前所未有的方式与整个团队进行沟通,因为没有沟通代理:既没有测试经理也没有其他测试人员。
  • 对项目的沉浸感变得异常深入,并且您可以获得有关所有组件的一般信息和详细信息。
  • 开发人员不会将你视为“那个不知道自己在做什么的测试人员”,而是将你视为一个平等的人,通过他的自动化测试和对出现在特定组件中的错误的预期,为团队带来了令人难以置信的好处。产品。
  • 因此,您会变得更加高效、更加合格并且更受欢迎。

随着项目的发展,在 100% 的情况下,我成为了新测试人员的导师,教导他们并传授我自己学到的知识。 同时,根据项目的不同,我并不总是从管理层那里获得最高水平的自动测试专家,并且需要对他们进行自动化培训(对于那些感兴趣的人)或创建在日常活动中使用的工具(工具)用于生成数据并将其加载到系统中的工具,“快速”执行负载测试/稳定性测试的工具等)。

具体项目示例

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

该项目的本质是实现一个为基于它的训练机器学习模型准备数据的平台。 客户是一家来自美国的大型制药公司。 从技术上讲,它是一个集群 Kubernetes,上升到 AWS EC2 实例,具有多个微服务和 EPAM 的底层开源项目 - 军团,适应特定客户的需求(现在该项目已重生为 奥达胡)。 ETL 流程是使用以下方式组织的 阿帕奇气流 并将数据从 销售队伍 客户系统在 AWS S3 水桶。 接下来,将机器学习模型的 Docker 映像部署到平台上,该模型接受新数据的训练,并使用 REST API 接口生成业务感兴趣的预测并解决特定问题。

从视觉上看,一切看起来都是这样的:

大数据和小数据测试仪:趋势、理论、我的故事
该项目进行了大量的功能测试,考虑到功能开发的速度以及保持发布周期节奏(两周冲刺)的需要,有必要立即考虑对最关键的组件进行自动化测试系统。 大多数基于 Kubernetes 的平台本身都包含在以下实现的自动测试中: 机器人框架 + Python,但也有必要支持和扩展它们。 此外,为了方便客户,还创建了一个 GUI 来管理部署到集群的机器学习模型,以及指定需要传输数据以训练模型的位置和位置的能力。 这种广泛的添加需要扩展自动化功能测试,这主要是通过 REST API 调用和少量端到端 UI 测试完成的。 在所有这些运动的赤道周围,我们加入了一位手动测试员,他在产品版本的验收测试以及与客户就下一个版本的验收进行沟通方面做得非常出色。 此外,由于新专家的到来,我们能够记录我们的工作并添加一些非常重要的手动检查,这些检查很难立即自动化。

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

最终数据质量检查已在 S3 级别进行,数据存储在其中并可随时用于训练机器学习模型。 为了从 S3 存储桶上的最终 CSV 文件获取数据并验证它,使用以下代码编写了代码 boto3 客户端.

客户还要求将部分数据存储在一个 S3 存储桶中,并将部分数据存储在另一个 SXNUMX 存储桶中。 这还需要编写额外的检查来检查此类排序的可靠性。

其他项目的一般经验

数据质量工程师最常见的活动列表示例:

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

同时,检查的主要重点不应仅仅在于系统中的数据流原则上已工作并完成(这是功能测试的一部分),而应主要检查和验证数据符合预期要求、识别异常等。

工具

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

在回归测试中,使用现成的(不可更改的、稍微可更改的)数据集,自动测试代码可以存储现成的模板,用于检查数据是否符合质量(预期表元数据的描述;可以是的行样本对象)。测试期间随机选择等)。

另外,在测试过程中,你必须使用Apache Airflow等框架编写ETL测试流程, Apache Spark 甚至是黑盒云类型的工具 GCP 数据准备, GCP 数据流 等等。 这种情况迫使测试工程师必须沉浸在上述工具的操作原理中,甚至更有效地进行功能测试(例如项目上现有的ETL流程)并使用它们来检查数据。 特别是,Apache Airflow 拥有现成的运算符,可用于处理流行的分析数据库,例如 GCP 大查询。 其最基本的使用示例已经概述 这里,所以我就不再重复了。

除了现成的解决方案之外,没有人禁止您实施自己的技术和工具。 这不仅有利于项目,也有利于数据质量工程师本人,从而提高他的技术视野和编码技能。

它如何在实际项目中发挥作用

以下来自一个真实项目的过程很好地说明了最后几段有关“数据链”、ETL 和无处不在的检查的情况:

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

在这里,各种数据(自然是我们准备的)进入我们系统的输入“漏斗”:有效、无效、混合等,然后它们被过滤并最终进入中间存储,然后它们再次经历一系列转换并放置在最终存储中,依次进行分析、构建数据集市和搜索业务洞察。 在这样的系统中,我们无需对 ETL 流程的操作进行功能检查,而是专注于转换前后的数据质量以及分析的输出。

综上所述,无论我在哪里工作,我所参与的数据项目都具有以下特征:

  • 只有通过自动化,你才能测试一些案例并达到业务可以接受的发布周期。
  • 此类项目的测试人员是团队中最受尊敬的成员之一,因为它为每个参与者带来了巨大的好处(加速测试、数据科学家提供的良好数据、早期阶段的缺陷识别)。
  • 无论您是在自己的硬件上还是在云中工作,所有资源都被抽象到一个集群中,例如 Hortonworks、Cloudera、Mesos、Kubernetes 等。
  • 项目基于微服务方法构建,分布式和并行计算占主导地位。

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

数据质量测试的显着特征

此外,就我自己而言,我已经确定了以下(我将立即保留它们非常笼统且完全主观)在数据(大数据)项目(系统)和其他领域测试的显着特征:

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

有用的链接

  1. 理论: DAMA-DMBOK:数据管理知识体系:第二版.
  2. 培训中心 EPAM 
  3. 为初级数据质量工程师推荐的材料:
    1. Stepik 上的免费课程: 数据库简介
    2. LinkedIn 学习课程: 数据科学基础:数据工程.
    3. 文章:
    4. 视频:

结论

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

来源: habr.com

添加评论