2014-09-29 55 views
0

我正在为一个应用程序编写一个自动化测试,目前有大约150个测试用例。一切运行良好,但随着测试的不断发展,我不断遇到如何组织测试用例的问题。组织自动化测试的最佳做法?

有些测试会依赖于之前的测试(例如我无法登录,直到我已经打开了应用程序,直到我登录,我不能瓶坯的动作)。在运行时,我目前有一个用户界面,允许用户选择要运行的测试用例,并且在我拥有这个列表后,尝试对它们进行排序会非常棘手。

我觉得这不会是值得我的时间来对测试用例预定义的顺序,因为不是所有将运行每次,我也有我每添加一个新的测试时间更新此名单。

有谁与一般的自动化测试,或测试经验,有什么建议?

注意:我试图给每个测试添加一个整型标志,然后以这种方式对它们进行排序,但是这导致了很多问题,并且任何时候我添加了一个中间发生的新测试,一些测试必须被移位(这对于150多个测试用例来说是一种痛苦)。

编辑

我只是想澄清,可能互相依赖,而不仅仅是登录或打开应用程序测试的另一个例子。对于该软件,用户可以在应用程序中上传数据。然后他们可以去下载这些数据的报告。很明显,如果用户只选择“下载”测试,那我就没有办法。但是,如果用户选择“上传”和“下载”,我需要一种方法来确保首先执行上传。

+2

测试不应该依赖以前的测试来运行。如果只想运行“登录”测试而不运行“打开应用”测试,该怎么办?每个测试应该有自己的设置,它将设置所有测试自行运行的设置。 – artm 2014-09-29 12:55:18

+0

这是一个非常好的观点,我应该(并且会)防范诸如登录和打开应用程序之类的事情,但是我编辑了这个问题以阐明测试可能相互依赖的另一个示例。 – AdamMc331 2014-09-29 13:00:09

+0

再次,在您编辑之后,测试应该是独立的。如果你想测试上传,你测试你的应用程序成功上传文件到服务器。如果要测试下载,首先在测试设置中将文件上传到服务器,然后测试服务器中上传的文件是否可以下载。 – artm 2014-09-29 13:07:00

回答

3

测试不应该依赖于之前的测试运行。如果只想运行“登录”测试而不运行“打开应用”测试,该怎么办?每个测试应该有自己的设置,它将设置所有测试自行运行的设置。如果你想测试上传,你测试你的应用程序成功上传文件到服务器。如果要测试下载,首先在测试设置中将文件上传到服务器,然后测试服务器中上传的文件是否可以下载。

测试不应该关心/依靠他们面前发生的事情,否则,因为你的代码不工作,你的测试可能会失败,而是因为你的测试不工作。那么当试图找出代码失败的原因时,你将会浪费时间,而实际上这是测试失败的原因。看看testsetup和testclear,每个测试都会设置它需要运行的任何东西,然后一旦它完成,它就会自行清理完毕,所以每个测试都没有其他测试。

+0

绝对会重构这整个事情。这现在是一个痛苦,但它肯定会有助于前进。我也可以重构很多,例如:一些测试将具有共享设置并且清晰,所以有很多可用性。再次感谢。 – AdamMc331 2014-09-29 13:22:29

+0

@ McAdam331另请参阅TestFixtureSetup/TearDown和TestSetup/TearDown。一个人为每个测试设置一个环境,在其中为每个测试用例设置环境。所以在你的TestFixtureSetup中你可以创建一个临时文件夹。每个测试都会在该临时文件夹中创建一个文件,并在TearDown中删除该文件。最后在你的TestFixture拆除,你删除临时文件夹。所以你不需要在每个测试中创建临时文件夹。请记住,当你重构你的测试。 – artm 2014-09-29 13:34:43

+0

还有一件事可以帮助您组织,在大量测试的测试设置过程中,您可能会注意到您有共同的步骤。如果发生这种情况,我建议创建一个单独的项目,在你的测试之外为你做这些事情,你的测试只会调用这些项目。例如,关于测试下载功能的artm说,我会在单独的项目中创建一个上传文件的方法,因为这是测试的先决条件,其他测试肯定会重用。 – andreadi 2014-09-30 07:16:01