代码之家  ›  专栏  ›  技术社区  ›  Thorbjørn Ravn Andersen

使可靠的Web服务不可靠,但以可控的方式?

  •  3
  • Thorbjørn Ravn Andersen  · 技术社区  · 15 年前

    我有一个基于Java 6的Web服务客户机,使用标准的基于Java 6的注释方法(即无轴或其他第三方Web服务库),它工作得非常好。我调用的Web服务也是如此,这很好,但是现在我需要编写错误处理代码,并且我需要能够以一种可控的方式使现有的Web服务不可靠。

    有许多模拟框架,它们可能会有所帮助,但我现在不需要能够用预先记录的答案或任何东西来模拟服务,只需要引入不可靠性,导致Web服务库失败,这样我就可以优雅地处理这种情况。这可能是本地运行的代理服务器。

    我使用Eclipse Java EE 3.6,但NETBeaS、iTeliLJ和JDeDeor也是选项。

    最好的方法是什么?

    4 回复  |  直到 12 年前
        1
  •  4
  •   Kennet    15 年前

    Tcpmon http://ws.apache.org/commons/tcpmon/index.html 可以设置为充当代理,甚至模拟慢速连接。 这将给你一个模拟“对不起,不在这里”和“是的,我们在这里,但我们超时了”的机会。

        2
  •  0
  •   Lazarus    15 年前

    任何引入的不稳定都可能导致不稳定的操作途径被错过。目的是覆盖代码中所有潜在的错误向量,而不是尝试减轻细节。

        3
  •  0
  •   Marcin Cylke    15 年前

    既然您没有公开足够的设置细节,那么在这里抛出异常可能就足够了?

    说真的,对于这样的集成测试,我建议运行一些真正的Web服务容器的子集。

    根据服务的逻辑,它的行为可能不可靠,因为:

    • 它使用的外部系统行为不当-试图模仿外部系统并从中抛出不同类型的故障
    • 数据库访问问题-尝试模拟DAO层并从中引发异常
    • 一般的硬件问题-取决于:)试着根据需要强调代码
        4
  •  0
  •   matt b    15 年前

    我认为,与其向正在运行的Web服务应用程序实例引入不可靠性,不如在单元/集成测试中模拟错误条件,并断言服务的顶层以您希望的方式响应。

    例如:

    1. 如果数据层报告它无法与后端通信,那么服务入口点如何响应请求(如果数据层抛出异常,或者无论如何指示失败)
    2. 如果其他必需的组件抛出“不可用”(如异常),那么服务入口点的行为如何?
    3. 您是否有适当的超时逻辑,即如果处理请求需要x秒以上的时间,服务会返回一个错误?如果是这样,也可以在模拟测试中进行模拟。
    推荐文章