Validation 单元测试数据?

Validation 单元测试数据?,validation,unit-testing,test-data,data-scrubbing,Validation,Unit Testing,Test Data,Data Scrubbing,我们的软件管理来自不同来源的大量数据源:实时复制数据库、自动FTPed文件、定时运行数据库存储过程以缓存链接服务器的数据快照,以及许多其他获取数据的方法 我们需要验证这些数据: 有什么重要的事情发生了吗 数据是否合理(空值、行数等) 数据是否与其他值一致(可能我们有多个类似数据源) 是否数据不足,需要手动提示导入 在许多方面,这与单元测试类似:有许多类型的检查需要进行,只需在列表中添加一个新的检查,然后根据特定事件重新运行每个测试类。已经有了很好的GUI来运行测试,甚至可以安排它们 这是一个

我们的软件管理来自不同来源的大量数据源:实时复制数据库、自动FTPed文件、定时运行数据库存储过程以缓存链接服务器的数据快照,以及许多其他获取数据的方法

我们需要验证这些数据:

  • 有什么重要的事情发生了吗
  • 数据是否合理(空值、行数等)
  • 数据是否与其他值一致(可能我们有多个类似数据源)
  • 是否数据不足,需要手动提示导入
在许多方面,这与单元测试类似:有许多类型的检查需要进行,只需在列表中添加一个新的检查,然后根据特定事件重新运行每个测试类。已经有了很好的GUI来运行测试,甚至可以安排它们

这是一个好方法吗?是否有更好的、类似于一般化的数据验证模式


我们是一个.NET商店,Windows工作流(WF)是一个更好更灵活的解决方案吗

测试这些数据的有效性似乎是合理的。您可以称之为单元测试,也可以不称之为单元测试,这是您的选择。我不会的。使用你认为最适合这份工作的工具——我不知道你所说的WF(WebForms?)是什么意思


自动测试这个会给你带来最大的好处。任何自动的、对你有用的东西都是好的。

测试这个数据的有效性似乎是合理的。您可以称之为单元测试,也可以不称之为单元测试,这是您的选择。我不会的。使用你认为最适合这份工作的工具——我不知道你所说的WF(WebForms?)是什么意思


通过自动测试您可以获得最大的好处。任何自动且对您有效的东西都是好的。

单元测试与您需要做的事情并不类似。它更多的是集成测试或验收测试。但这不是重点

您的系统对进入系统的数据进行验证有很高的要求。数据以各种方式进入系统,我认为需要以不同的方式进行验证

工作流有利于设计和控制易于更改或需要人工干预的业务流程(逻辑)。当涉及到验证的主题时,它是不可知论的。但是,将验证过程作为工作流托管可能是一个好主意,因为工作流的设计是灵活的、长期的,并且能够进行人工干预。在工作流状态机框架中托管验证过程将允许您在运行时为不同类型的数据导入定义验证策略

您需要设计一个验证框架,其逻辑在很大程度上依赖于组合而不是继承。将数据导入系统并验证为原子步骤的所有不同方式分开。按职责对这些步骤进行分组,并使用实现对象执行每个步骤所需的最基本、最基本的属性和方法创建接口。创建由这些不同接口组成的基类。从这个框架中,您可以混合和匹配适合特定导入或验证步骤的实现


最后一件事。工作流被序列化为xaml以进行长期存储。您的类也应该是xaml可序列化的,以便尽可能平稳、简单地从活动转换到存储库再转换回来。

单元测试与您需要做的工作不同。它更多的是集成测试或验收测试。但这不是重点

您的系统对进入系统的数据进行验证有很高的要求。数据以各种方式进入系统,我认为需要以不同的方式进行验证

工作流有利于设计和控制易于更改或需要人工干预的业务流程(逻辑)。当涉及到验证的主题时,它是不可知论的。但是,将验证过程作为工作流托管可能是一个好主意,因为工作流的设计是灵活的、长期的,并且能够进行人工干预。在工作流状态机框架中托管验证过程将允许您在运行时为不同类型的数据导入定义验证策略

您需要设计一个验证框架,其逻辑在很大程度上依赖于组合而不是继承。将数据导入系统并验证为原子步骤的所有不同方式分开。按职责对这些步骤进行分组,并使用实现对象执行每个步骤所需的最基本、最基本的属性和方法创建接口。创建由这些不同接口组成的基类。从这个框架中,您可以混合和匹配适合特定导入或验证步骤的实现

最后一件事。工作流被序列化为xaml以进行长期存储。您的类也应该是xaml可序列化的,以便尽可能平滑和简单地从活动到存储库再到存储库的转换