单元测试数据?
我们的软件管理来自各种来源的大量数据馈送:实时复制的数据库,自动FTP传输的文件,数据库存储过程的计划运行以缓存来自链接服务器的数据快照以及许多其他数据获取方法。
我们需要验证和验证这些数据:
- 甚至发生过进口
- 数据是否合理(空值,行数等)
- 数据是否与其他值一致(也许我们有多个相似数据源)
- 是否没有数据,并且导入需要手动提示
在许多方面,这就像单元测试:有多种检查类型,只需将新检查添加到列表中,然后针对特定事件重新运行每个测试类。已经有不错的GUI可以运行测试,甚至可以安排它们的时间。
这是一个好方法吗?是否有更好的,类似的通用化数据验证模式?
我们是.NET商店,Windows Workflow(WF)会是更好,更灵活的解决方案吗?
解决方案
测试此数据的有效性似乎是合理的。我们可以选择也可以不将其称为"单元测试"。我不会使用最适合该工作的工具,我不知道WF(WebForms)是什么意思。
通过自动测试,我们将获得最大的收益。无论哪种自动方法都可以为我们服务,这是件好事。
单元测试与我们需要执行的操作并不相似。它更像是集成测试或者验收测试。但这是没有意义的。
系统对验证进入系统的数据有很高的要求。数据通过各种方式进入系统,我认为需要以不同的方式对其进行验证。
工作流非常适合设计和控制易于更改或者需要人工干预的业务流程(逻辑)。当涉及验证主题时,它是不可知的。但是,将验证过程作为工作流托管可能是一个好主意,因为工作流被设计为灵活,寿命长并且能够人工干预。将验证过程托管在工作流状态机框架中将使我们可以为运行时不同类型的数据导入定义验证策略。
我们需要设计一个验证框架,该框架在逻辑上严重依赖于组合而不是继承。分解可将数据导入系统并验证为原子步骤的所有不同方式。按职责对这些步骤进行分组,并创建具有实现对象执行每个操作所需的最起码,最少的属性和方法的接口。创建由这些不同接口组成的基类。在此框架中,我们可以混合和匹配适合特定导入或者验证步骤的实现。
最后一件事。工作流被序列化为xaml以进行长期存储。类也应该是xaml可序列化的,以使从活动到存储库的转换尽可能平滑和简单。