【问题标题】:Testing Complex Data Scenarios测试复杂数据场景
【发布时间】:2009-05-25 02:05:27
【问题描述】:

我正在开发一个 Java Web 应用程序,它为用户运行一系列财务计算。运行财务计算时,大约使用 30 个不同的输入来计算最多 18 年的 15 个不同的值(最多 15*18 个预期值)。如您所知,有大量信息需要计算和验证。

我正在寻找的是有关如何准备测试数据(模拟 30 种不同的输入)、将其加载到一系列对象中并通过计算器运行对象以生成输出的建议,然后可以将其与预期进行比较价值观。

我曾尝试存根数据库,但这最终导致永远。嘲笑一切似乎同样乏味。如果可能,我想避免外部数据库依赖。

【问题讨论】:

  • 这个难题的另一个部分是对象图从根对象开始运行了好几层。所有数据场景和输出均由专家预先定义,因此我们目前不会动态生成任何信息

标签: java testing


【解决方案1】:

听起来 FitNesse (http://fitnesse.org/) 可能就是您要找的东西。您将在 FitNesse 中使用您的输入和预期输出设置一个 html 表。当您运行测试时,FitNesse 会通知您实际输出是否与您的预期输出相符。

【讨论】:

  • 如果我今天再解决这个问题,我会先尝试使用这个。
【解决方案2】:

我会为每个输入参数确定数量限制(边界值)周围的值、实际值和零值。然后我会使用 allpairs 算法 (http://www.satisfice.com/tools.shtml) 将它们全部组合起来。

【讨论】:

    【解决方案3】:

    如果您在 Db 中有数据,并且只想从中创建一个测试数据,以便您的测试运行不依赖于外部数据库。您可以查看 DbUnit 框架并可以从 DB 中以 XML 填充示例数据. 这些 XML 可以用于测试目的,这些 XML 可以很容易地通过常用解析器的数量转换为 java 对象。

    【讨论】:

    • 你用过DBUnit吗?能提供一些教程吗?
    • 好吧,我在一个中等规模的项目中使用了 DbUnit。它们是 Net 上可用的几个教程。您还可以查看 John Ferguson Smart 的“Java Power Tools”一书,关于 Dbunit 的章节。如果你发现任何问题,我可以为你写一个示例教程。
    【解决方案4】:

    您最好的选择是使用可以从池中随机选择值并从中组装输入的工厂。您可以根据需要从总体中生成尽可能多的候选人。坚持他们以及预期的结果。如果您不喜欢某个数据库,也许 XML 或纯文本序列化就可以了。

    如果你做 TDD,你可以运行一些,看看预期的结果应该是什么。用手工计算检查一些,以确保它们没问题。然后使用工厂生成您需要的尽可能大的测试集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多