【问题标题】:Alternatives to the Pipes and Filters pattern管道和过滤器模式的替代方案
【发布时间】:2019-01-24 16:21:40
【问题描述】:

修改和绑定以测试 11 个过滤器链中的第 7 个过滤器被证明是很难测试的。我必须进行从 Filter#1 到 Filter #11 的集成测试,以确保 Filter#7 正常工作。

每个过滤器都传递相同的对象引用并对其进行处理。 所以对我来说,我不知道当我在我正在修改的第 7 个过滤器中收到这个对象时,它会处于什么样的状态。

没有太多的文档。所以我真的不知道我会得到什么状态。

还有其他方法可以替代一般的管道和过滤器模式吗? 我正在寻找适合单元测试的好方法。

https://docs.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters

我正在处理的这个程序的排列方式似乎每个过滤器都依赖于前一个过滤器的输出。过滤器按特定顺序添加。过滤器不能以不同的顺序重新排列。

【问题讨论】:

  • 也许可以从修改请求开始,你为什么要这样做?也许应用程序存在不当行为,因此您更改了第 7 个过滤器来处理此问题。然后最好使用 http 客户端或导致这种不当行为的东西来模仿用户操作。如果可以模仿这样的用户操作,II 将关闭过滤器#7 以使测试失败,之后打开第 7 个过滤器并且测试用例应该通过。研究您正在修改的应用程序,也许已经有集成测试用例,以同样的方式进行新测试可能会很好。

标签: design-patterns pipes-filters


【解决方案1】:

我必须进行从过滤器#1 到过滤器#11 的集成测试,以确保过滤器#7 正常工作。

即使 1-11 的测试通过,您最终还是在测试 11 的输出,而不是 7 的输出。

开发人员测试分为三个基本级别:系统、集成、单元。对所有 11 个过滤器的测试将是系统测试,也称为端到端测试。一起测试过滤器子集将是集成测试。单独测试过滤器 7 就是单元测试。

要执行单元测试,您必须模拟过滤器 7 的输入。此模拟输入与过滤器 1-6 无关,与过滤器 7 的规范(要求)有关。

如果您不知道过滤器 7 的要求,则无法对过滤器 7 进行单元测试。替换管道和过滤器模式无助于测试未知要求。

【讨论】:

    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多