【问题标题】:Framework for automatically planning execution order of automated regression-tests?自动规划自动回归测试执行顺序的框架?
【发布时间】:2011-04-15 12:25:13
【问题描述】:

我目前正在为一个相对复杂的应用程序实施测试套件。该应用程序是基于 Java 和 Spring 的,带有 Web 前端。前端测试也可以用 Java 编写(使用 Silk4J 及其自动化客户端)。实际上编写测试不是问题,这是容易的部分。开始变得棘手的地方是各个测试的执行顺序。

目前我们正在使用 JUnit 编写测试。由于 JUnit 是一种单元测试工具,因此执行测试的顺序并不固定。如果我们只是为应用程序的每个模块创建测试,我们很快就会遇到麻烦。一些测试必须依赖其他部分才能正常工作,并且来自其他模块的某些数据是可用的。我可以以将应用程序状态初始化为预定义状态然后执行其测试的方式为每个模块编写测试,但是必须清理和准备状态将是一项相当大的工作。更复杂的测试需要跨多个模块的大量准备和测试场景。

我正在寻找的是一个测试框架,其中每个测试都可以以某种方式定义其要求以及它测试/提供的服务(对 create-user-feature 的测试实际上可以创建用户......至少它应该)。现在我不想硬编码使用哪些数据以及以何种顺序运行哪个测试,因为确定顺序非常复杂,并且对应用程序的更改将需要完全重构测试。

例如,我的“create-user-test”创建用户作为实际检查用户是否正确创建的副作用。对我来说,是否使用 userA、userB 或 userC 测试此功能并不重要,只要它经过测试即可。如果我现在有另一个测试“create-account-test”需要一个只有 userC 满足的用户,那么测试系统应该知道“哦 ... create-account-test 需要 userC,尚未创建但通过userC 到我的“create-user-test”,这将创建它。因此,在最终执行中,它在“create-account-test”之前使用 userC 运行“create-user-test”,并因此使用“create”的副作用-user-test”创建“create-account-test”所需的状态。

通过检查我的测试的要求和服务。这样的系统应该能够创建一个包含每个测试至少一次的非循环图(从而测试整个功能),但不必为每个测试准备/拆除应用程序状态,或者如果无法做到则触发错误创建这样的图表。至少这样我可以创建仍然可以维护的巨大测试场景。

我知道这有点复杂。如果有人已经在这样的框架上工作,我搜索了一段时间。不幸的是,我找不到类似的东西。

现在我希望这里有人指导我使用工具或告诉我为什么这是一个完全坏主意。 “嘿......好主意......还没有人创造这样的东西”......肯定会大大缩短我下班后的空闲时间,因为在那种情况下我可能会开始开发这样的工具;-)

克里斯

【问题讨论】:

  • 似乎有人实际上已经在研究我正在寻找的东西,不幸的是,这项工作似乎相对理论化。 docstoc.com/docs/73022961/…

标签: testing automated-tests integration-testing functional-testing


【解决方案1】:

像 jUint 这样的工具通常不支持对测试的运行进行排序,因为它通常被认为是单元测试的坏习惯。在单元测试中,您要确保每个测试完全独立于其他测试,并且没有外部依赖。

但是您没有进行单元测试,因此尝试使用 jUnit 会导致您尝试实现的目标与工具实现者设计 jUnit 的目标之间发生冲突...

不过,您似乎正在尝试做很多事情。您希望能够运行测试并拥有一个测试工具来找出并创建您需要的数据。这是一个非常艰巨的要求......我不知道有什么工具可以满足您的所有要求,但是有很多工具可以提供您想要的大部分内容,并且需要付出一些努力。

像 Robotframework 这样的测试框架允许您指定测试运行的顺序。它可能更适合您想要实现的目标。

但是为了在测试之前设置您的环境,总会有一些工作要做。我通常将需要特定配置或数据集的测试一起收集。然后我在运行那组测试之前运行这些步骤。它减少了在每次测试之前进行配置和数据设置的需要。但它也降低了复杂性,因此易于管理。

【讨论】:

  • 对不起,回复晚了......我想知道为什么我从来没有收到通知电子邮件:-(我决定创建我的测试,在其中我手动描述先决条件,并且在之前的方法中,这种状态是然后通过创建丢失的对象来创建。我知道这种引入了环依赖,但我现在只是忍受它;-) ...无论如何谢谢。
【解决方案2】:

我们使用TestNG 和 Silk4J 来创建顺序回归测试(有些测试短至 10 分钟,有些则超过 12 小时)。所有测试都按特定顺序执行 - 一些测试会在发生超级严重错误时触发“跳过所有剩余测试”。

【讨论】:

  • 嗯,这与我们使用的设置相同。但我要问的是,当系统开始变得越来越大时,可以优化测试序列,我一直在寻找能够自动进行这种优化的工具。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 2017-10-22
  • 2022-12-20
  • 2016-07-09
相关资源
最近更新 更多