首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据清洗、验证和测试驱动开发

数据清洗、验证和测试驱动开发
EN

Stack Overflow用户
提问于 2014-01-23 21:17:41
回答 1查看 196关注 0票数 0

我正在使用一个连接到外部供应商的应用程序。数据异步到达,应用程序的许多“组件”使用数据。数据在进入系统之前已经通过了语法验证,但是每个“组件”都根据自己的规则对数据是否可用有不同的定义。

当考虑每个组件的测试驱动开发时,关于数据清理和验证的设计“最佳实践”是什么?在这里假设COMPONENT1_VALIADTION和COMPONENT_1将有单独的测试用例。如果数据像上面那样首先通过COMPONENT1_VALIADTION,那么测试用例和component_1,2,3的实现是否可以假定已清理的数据?那么,系统测试可能会确保在调用component_x之前清理数据吗?

代码语言:javascript
复制
EXTERNAL_DATA_SOURCE -> [ASYNC_CALLBACK -> COMPONENT1_VALIADTION -> COMPONENT_1]
EXTERNAL_DATA_SOURCE -> [ASYNC_CALLBACK -> COMPONENT2_VALIADTION -> COMPONENT_2]
EXTERNAL_DATA_SOURCE -> [ASYNC_CALLBACK -> COMPONENT3_VALIADTION -> COMPONENT_3]

从理论上讲,它也可以看起来像:

代码语言:javascript
复制
EXTERNAL_DATA_SOURCE -> [ASYNC_CALLBACK -> [ COMPONENT1_VALIADTION -> COMPONENT_1] ]
EXTERNAL_DATA_SOURCE -> [ASYNC_CALLBACK -> [ COMPONENT2_VALIADTION -> COMPONENT_2] ]
EXTERNAL_DATA_SOURCE -> [ASYNC_CALLBACK -> [ COMPONENT3_VALIADTION -> COMPONENT_3] ]

测试的组件是COMPONENT1_VALIADTION -> COMPONENT_X,因此每个组件都包含验证本身。但是,如果我希望多个组件使用相同的验证规则,或者希望实际分别测试验证组件,这会使事情变得复杂。

我试图避免应用程序的每一层都需要数据验证。

提前谢谢你,

curious1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-24 15:09:01

如果我正确地理解了您的问题,这似乎更像是一个设计问题,然后是一个单元测试问题。根据数据验证的复杂程度,将数据验证组件从应用程序的实际组件中分离出来可能是一个非常好的主意。这样,开发人员查看组件就不必费力地遍历所有的验证代码。另外,如果您可以在几个不同的组件中重用相同的验证组件,这可能是一个很好的设计决策。

您需要做的是为您的每个组件开发一个“契约”。这很可能只是以类和方法文档的形式来解释这个组件对输入的期望以及它将作为输出返回什么。然后,您将编写单元测试,以确保您的代码遵守该协议。如果component1不是为处理无效数据而设计的,则不需要为其编写单元测试,因为它不是合同的一部分。您也会对验证组件执行同样的操作。

现在,您的开发人员应该确保他们以您所描述的方式构建应用程序,以便在常规组件之前调用验证组件。在这里,您将执行一些集成测试,以确保所有组件都正确地连接在一起。

我被这个问题弄糊涂了,所以我希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21319509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档