2013-10-11 35 views
1

我是一名开发人员,暂时负责使用JUnit 4和Selenium WebDriver帮助QA团队进行测试自动化。我是测试和测试自动化的新手。查看各种WebDriver示例,常见模式是在@Before方法中实例化WebDriver(如FirefoxWebDriver)的实现,使用@Test方法中的实例与浏览器进行交互,并使用driver.quit()in @后。为什么要为每个@Test方法实例化WebDriver?

所以如果有5个@Test方法,浏览器将被打开,测试应用程序初始化并且浏览器关闭5次。

我的问题是为什么每个测试用例都需要打开,初始化和关闭?我的猜测是防止一个测试案例失败,对其他测试产生负面影响。它是否正确?还有其他原因吗?

+1

我认为你是几乎没有。测试的主要目的是定位错误。如果所有的测试都会一次运行并且失败,那么您无法确定哪个部件导致了故障。 – Prateek

+0

此外 - 多线程。如果你有一个完整的回归套件,如果可能的话,你需要并行运行这1000个测试 – sircapsalot

回答

2

非常好的问题!

从另一个侧面来了,我一个QA自动化测试工程师,与开发团队自动化工作...

由于@Prateek和我本人都指出,有几个原因。

最明显的两个:

  1. 测试的主要目的是本地化错误。如果所有测试都会一次运行并且失败,那么您将无法分辨失败的位置。 〜Prateek

  2. 多线程也是一个原因。想象您的公司有数千个需要运行的回归测试。每个测试都是独立的,因此它们完全独立于其他测试,使您能够同时运行所有测试(假设您的应用可以处理该测试),其中说每个测试需要1分钟运行,1x1000=1000分钟按顺序运行每个测试,而不是在1分钟内完成所有测试!

所以你在这里assumtion是正确的 -

我的猜测是为了防止一个测试失败的情况下从具有其他测试产生负面副作用。它是否正确?

但是当然,还有更多的原因。

1

还有一个原因,每次webdriver的实例化时,一个新的配置文件创建了清除浏览器cache..Currently有没有其他的方法来清除浏览器缓存..

+0

这是正确的。不仅缓存,还有饼干。 – Slavik

相关问题