在硒自动化中处理批处理作业的最佳方法

时间:2017-02-04 23:47:10

标签: selenium selenium-webdriver cucumber automated-tests cucumber-jvm

我正在实施基于Cucumber-JVM的Selenium自动化框架。

我测试的webapps中的一个工作流程需要漫长的等待,以便每3分钟经常安排的批处理作业运行,并创建用户可以使用的登录ID,以继续工作流程。

我目前正在处理它,我首先执行初始部分测试用例并继续其他测试用例,以便框架有足够的时间等待创建用户ID。

在运行所有其他测试用例之后,运行测试用例的第二部分。但是,在运行测试用例的第二部分之前,我查询数据库并验证是否创建了id。如果创建了id,则执行继续,否则表示未创建用户标识失败。

虽然现在可以使用,但我确信有更好的方法来处理这种情况。有没有人遇到过这种情况?你是怎么处理的?

2 个答案:

答案 0 :(得分:0)

我想我理解你的问题。你实际上想要这样的执行序列:

Test 1
Test 2
Test 3

但是如果你正确地实现Test 1,它将花费很长时间,因为它必须等待被测系统做几个长时间的运行,对吗?

因此,您将Test 1拆分为部分并运行如下测试:

Test 1 (Part A)
Test 2
Test 3
Test 1 (Part B)

这样您的受测系统就有时间完成Test 1 (Part A)触发的任务。

正如您之前所承认的,这被认为是不好的测试设计,因为您的测试用例不再相互独立。 (一般来说,测试用例不应该依赖于另一个测试用例预先产生的副作用。)

我对这种情况的建议是保留Test 1原子,即避免将它分成两部分,但仍然并行运行其余的测试。当然,这是否可行取决于您的环境以及您如何触发测试,但这将使您拥有更好的测试结构以及快速执行的好处。所以你最终会得到这个:

Test 1 starts    Test 2 starts
Test 1 waits     Test 2 finishes
Test 1 waits     Test 3 starts
Test 1 runs      Test 3 finishes
Test 1 finishes  

答案 1 :(得分:0)

我不确定start-> wait-> wait-> run方法。它可能适用于少数测试,并且可能不适用于数百个测试,因为等待时间会更长。即使我们以并行模式运行它也会花费一些时间。如果我们等待更多这样的时间在同一流程中获取组件怎么办?我想,更多的组件等待时间。如果等待更长时间,您可能还需要考虑系统超时...

我觉得第一种方法应该没问题。无需为测试用例创建多个文件。您可以以运行第一部分并结束它的方式在同一文件中构建它。并且,在确保批处理之后,您可以从测试用例的第二部分(文件)开始。第一部分可以并行运行,等待时间后第2部分也可以并行执行。