2013-10-11 41 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

相關問題