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

Testing 自动规划自动回归测试执行顺序的框架?,testing,automated-tests,integration-testing,functional-testing,Testing,Automated Tests,Integration Testing,Functional Testing,我目前正在为一个相对复杂的应用程序实现一个testsuite。该应用程序基于Java和Spring,具有web前端。前端测试也可以用Java编写(使用Silk4J及其自动化客户端)。实际上编写测试不是问题,这是容易的部分。开始变得棘手的是单个测试的执行顺序 目前,我们正在使用JUnit编写测试。由于JUnit是一个单元测试工具,测试的执行顺序是不固定的。如果我们只是为应用程序的每个模块创建测试,我们很快就会遇到麻烦。一些测试必须依靠其他部件才能正常工作,并且可以获得来自其他模块的某些数据。我可以

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

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

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

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

通过检查我的测试的需求和服务。这样的系统应该能够创建一个包含每个测试的非循环图,至少一次(在此测试整个功能)但是不必为每次测试准备/拆除应用程序状态,或者在无法创建这样的图时引发错误。至少这样,我可以创建仍然可以维护的大型测试场景

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

现在我希望这里有人能给我一个工具,或者告诉我为什么这是一个糟糕的主意。。。好主意。。。还没有人创造出这样的东西“…肯定会戏剧性地消磨我下班后的空闲时间,因为在这种情况下,我很可能会开始开发这样一个工具;-)


Chris

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

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

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

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


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

我们使用Silk4J创建顺序回归测试(有些测试最短10分钟,有些超过12小时)。所有测试都按特定顺序执行-当出现超临界错误时,有些测试会触发“跳过所有剩余测试”。

似乎有人实际做了一些类似于我正在寻找的东西,不幸的是,这项工作似乎相对理论化。很抱歉响应太晚……我想知道为什么我从未收到通知email:-(我决定创建我的测试,在其中我手动描述先决条件,然后在before方法中,通过创建缺少的对象来创建此状态。我知道这会引入环依赖,但我现在只接受它;-)…无论如何,谢谢。这是我们正在使用的相同设置。但我想问的是,当系统开始变得越来越大时,测试序列可以优化,我正在寻找一种能够自动进行此类优化的工具。