测试的工作原理如下:
- 解析器接收静态装置作为输入。
- 解析器处理装置并返回输出。
- 测试检查输出是否与 电话号码库 预期输出相同。这不是一个简单的 JSON 比较,因为某些字段预计会发生变化(例如上次更新日期),但它仍然是一个简单的过程。
我们在合并请求的 CI/CD 管道中运行此测试,以检查我们对解析器所做的更改是否有效以及解析器是否按预期工作。如果测试失败,我们就知道我们弄坏了某些东西,需要修复它。
静态装置测试无论从过程复杂性还是实现角度来说都是最基本的测试,因为它们只需要使用静态装置运行解析器,并使用相当简单的 Python 脚本将输出与预期输出进行比较。
尽管如此,它们仍然非常重要,因为它们是抵御重大变化的第一道防线。
但是,静态装置测试无法检查抓取是否按预期进行,也无法检查页面布局是否保持不变。这就是动态测试类别的用武之地。
动态装置测试
动态装置测试与静态装置测试基 保持竞争力 本相同,但我们不使用静态装置作为输入,而是实时抓取数据。这样,我们不仅检查解析器,还检查抓取器和布局。
动态装置测试比静态装置测试更复杂,因为它们需要实时抓取数据,然后使用抓取的数据运行解析器。这意味着我们需要在测试运行中启动抓取器和解析器,并管理它们之间的数据流。这就是 Dagster 的作用所在。
Dagster 是一个协调器,可以帮助我们管理抓取工具和解析器之间的数据流。
动态夹具测试的步骤
该过程主要有四个步骤:
- 将我们要抓取的 URL 加入队列
- 刮
- 解析
- 根据保存的装置检查已解析的文档
最后一步与静态夹具测试相同,唯一的区别是我们不使用静态夹具,而是在测试运行期间抓取数据。
动态装置测试在我们的数据质量保证过程中发挥着非常重要的作用,因为它们会同时检查抓取工具和解析器。此外,它们还能帮助我们了解页面布局是否发生了变化,而静态装置测试则无法做到这一点。这就是为什么我们按计划运行动态装置测试,而不是在 CI/CD 管道中的每个合并请求上运行它们。
然而,动态装置测试确实有一个相当大的限制。它们只能检查我们能控制的配置文件的数据质量。例如,如果我们不控制测试中使用的配置文件,我们就无法知道预期的数据,因为它随时可能发生变化。这意味着动态装置测试只能检查我们拥有配置文件的网站的数据质量。为了克服这个限制,我们有动态覆盖测试。
动态覆盖测试
动态覆盖测试也属于动态数 我的电话号码 据类别,但它们在检查内容方面与动态装置测试不同。动态装置测试检查我们可控制的配置文件的数据质量,这非常有限,因为不可能在所有目标中都做到这一点,而动态覆盖测试可以检查数据质量而无需控制配置文件。这是可能的,因为动态覆盖测试不检查确切的值,但它们根据我们定义的一组规则检查这些值。这就是 Great Expectations 的用武之地。
动态覆盖测试是我们数据质量保证流程中最复杂的测试。Dagster 也将它们编排为动态装置测试。不过,我们在这里使用 Great Expectations 而不是简单的 Python 脚本来执行测试。
首先,我们需要选择要测试的配置文件。通常,我们从数据库中选择具有高字段覆盖率的配置文件。我们这样做是因为我们想确保测试覆盖尽可能多的字段。然后,我们使用 Great Expectations 使用选定的配置文件生成规则。这些规则基本上是我们想要根据数据检查的约束。以下是一些示例:
- 所有个人资料都必须有一个名称。
- 至少 50% 的个人资料必须有姓氏。
- 教育计数值不能低于0。