【发布时间】:2019-11-15 23:35:14
【问题描述】:
是否有人使用 BDD 测试大数据 ETL 应用程序? 我可以看到如何使用 BDD 来测试与客户端交互的应用程序,但在大数据 ETL 应用程序的情况下,没有客户端交互,因此很难看出我可能会使用什么“何时”。 例如: 给出 100 个 A 类事件发生 5分钟后发生50个B型事件 那么数据库行应该是: |类型|计数|桶| |A|100|1| |B|50|2|
但这似乎是错误的。 有哪位有见识的吗?
【问题讨论】:
是否有人使用 BDD 测试大数据 ETL 应用程序? 我可以看到如何使用 BDD 来测试与客户端交互的应用程序,但在大数据 ETL 应用程序的情况下,没有客户端交互,因此很难看出我可能会使用什么“何时”。 例如: 给出 100 个 A 类事件发生 5分钟后发生50个B型事件 那么数据库行应该是: |类型|计数|桶| |A|100|1| |B|50|2|
但这似乎是错误的。 有哪位有见识的吗?
【问题讨论】:
您能否举例说明您希望在 ETL 输出中看到什么?
您可以对此给出几个回答。一种可能是您所期望的不同类型的数据库行,其中一些可能会重复,而其他的则不会。这让我觉得很奇怪,但如果您习惯使用星型模式,那么您可能会注意到其他差异。
通常我会引导人们远离谈论数据库,但如果您使用星型模式,我认为提及事实和维度是可以的(我没有经常使用 ETL,但我会请记住通过这些具体示例以及我希望看到的内容进行讨论)。
另一种方法是使用客户端。
我看到你说没有客户;然而,总是有一个客户,即使它可能在未来存在。 ETL 涉及安全性、性能和访问等方面的影响。值得拥有一个客户端,即使它是一个基于字符串或基于 SQL 的玩具,来探索可能会绊倒你的事情。
你为什么要这样做?企业或用户或客户在实施后将能够做的事情有什么新的东西,而他们已经不能做?你能举个例子吗?
“我们将能够了解 X 在 Y 标准下的表现如何。”
太好了。你能给我一个X、Y和一些标准的例子吗?您将如何衡量绩效?您要查找哪些数据?每个人都应该能够看到这些数据吗?你能想到任何人不应该能够访问它的场景吗?
这些示例成为场景的 ETL 等价物;对话保持相同的模式。你最终只是在不同的层次上实现了自动化,因为你的 API 是面向机器的而不是面向人的,而且你的一些对话将是关于监控而不是测试的。您的对话仍应与人们进行。
您的“何时”将是您在运行它的数据、权限和安全上下文中运行的查询或报告。
【讨论】:
BDD 始终适用于大数据空间内的应用程序逻辑。记住测试三角原理。进行单元测试。练习 BDD,并在您的 sprint 中使用 BDD 构建集成和验收测试。不建议在外部维护您的测试数据,因此验证所有移动部件的 E2E 流程需要轻量级。如果允许,练习 TDD 模型。
【讨论】: