自动规划自动回归测试执行顺序的框架?

时间:2011-04-15 12:25:14

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

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

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

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

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

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

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

现在我希望有人来指导我使用工具或者告诉我为什么这是一个非常糟糕的主意。回答“嘿......好主意......没有人创造出这样的东西”......肯定会大大地扼杀我下班后的休闲时间,因为在那种情况下我会开始开发这样的工具; - )< / p>

克里斯

2 个答案:

答案 0 :(得分:2)

像jUint这样的工具通常不支持命令运行测试,因为它通常被认为是单元测试的不良做法。在单元测试中,您希望确保每个测试完全独立于其他测试,并且没有外部依赖性。

但是你没有进行单元测试,所以试图使用jUnit会导致你想要实现的内容与工具实现者设计的jUnit之间的冲突......

你似乎试图做很多事情。您希望能够运行测试并使用测试工具找出并创建所需的数据。那是一个非常高的订单...我不知道有任何工具能够满足您的要求,但是有很多工具可以提供您想要的大部分功能。

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

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

答案 1 :(得分:0)

我们使用TestNG与Silk4J一起创建有序回归测试(有些测试时间短至10分钟,有些测试长度超过12小时)。所有测试都按特定顺序执行 - 当发生超级严重错误时,某些测试会触发'跳过所有剩余测试'。