2015-06-21 143 views
3

我有關於管理硒web項目的一般問題,下面的例子是,我的問題是如何管理這些測試用例?(它只有3個例子,測試用例的實際數量超過1000 )管理硒測試項目

爲子測試創建類是不是很好,就像登錄類一樣,所有與登錄相關的測試都在這個類下?

是否有編寫測試用例和管理它們的約定?

謝謝大家。

I create class with tests like: 
     @Test //Test1 
     public void logInFaildTest() { 
      GridTest gridTest = new GridTest(); 
      WebDriver webDriver = gridTest.getWebDriver(); 
      String url = gridTest.getUrl(); 
      LoginPage logIn = new LoginPage(webDriver, url); 
      String userName = "user"; 
      String pass="pass"; 
      logIn.login(userName, pass); 
      WebElement errorMsg = webDriver.findElement(By.className("dijitToasterContent")); 
      String actual = errorMsg.getAttribute("innerHTML"); 
      String expected="Incorrect user name or password. Please try again."; 
      assertEquals(expected, actual); 
      webDriver.close(); 
     } 

     @Test 
     public void loginSucsecc() 
     { 
      GridTest gridTest = new GridTest(); 
      String url = gridTest.getUrl(); 
      WebDriver webDriver = gridTest.getWebDriver(); 
      LoginPage logIn = new LoginPage(webDriver, url); 
      String userName = "user"; 
      String pass="pass"; 
      logIn.login(userName, pass); 
      String actual = webDriver.getCurrentUrl(); 
      String expected= url+"#lastmile/"; 
    //  webDriver.close(); 
      webDriver.quit(); 
      assertEquals(expected, actual); 
     } 

     @Test 
     public void accountLock() 
     { 
      GridTest gridTest = new GridTest(); 
      String url = gridTest.getUrl(); 
      WebDriver webDriver = gridTest.getWebDriver(); 
      LoginPage logIn = new LoginPage(webDriver, url); 
      String userName = "user"; 
      String pass="wrong"; 
      for(int i=0;i<11;i++){ 
       logIn.login(userName, pass); 
       logIn.clearFileduNamePass(); 
      } 
      WebElement msg = webDriver.findElement(By.id("dijit__TemplatedMixin_0"));  //block message 
      String actual = msg.getAttribute("innerHTML"); 
      int splitIndex= actual.indexOf(".<"); 
      actual = actual.substring(0, splitIndex); 

      String expected= "Your account has been locked"; 
      webDriver.quit(); 
      assertEquals(expected, actual); 
     } 
    } 

回答

2

是你做了什麼是好的only.So所有登錄相關的操作可以進入一類,所以如果有任何改變,我們可以輕鬆管理

對象Maintaenance

你可以用Page Object Model(POM),因爲它是廣泛使用的方法和易於管理的一個。這是用於管理你的對象更像維護一個對象庫

正如你可以注意到,我們所做的一切都是爲這些元素找到元素和填充值。

這是一個小腳本。腳本維護看起來很簡單但隨着時間的推移測試套件將會增長隨着您向代碼添加越來越多的行,事情變得艱難。

腳本維護的主要問題是,如果10個不同的腳本使用相同的頁面元素,並且該元素髮生任何更改,則需要更改所有10個腳本。這是耗時且容易出錯的。

更好的腳本維護方法是創建一個單獨的類文件,它可以查找Web元素,填充它們或驗證它們。這個類可以在所有使用該元素的腳本中重用。將來如果web元素髮生變化,我們需要在1個類文件中進行更改,而不是10個不同的腳本。

該方法被稱爲頁面對象模型(POM)。它有助於使代碼更具可讀性,可維護性和可重用性。

測試數據維護

你已經接下來要考慮的是用來運行測試用例與不同組數據的測試數據測試驅動的方法

POM您可以創建一個工廠類,在需要時爲您提供一組數據,這樣當您想更改/修改數據時,您可以直接進入工廠並進行更改。

如果您想創建一個名爲LoginData的類,其功能類似getValidCredentialsgetRandomCredentials以獲取您的數據。如果應用程序需要在每次運行隨機EMAILID那麼你可以簡單地修改getValidCredentials部分單獨 它會幫助你很多,當你的應用程序主要運行在形式或用戶DATAS

複用構件

的第三件事是你創建的可重用性。你可以重用其他場景的validLogin以及

+0

WooW,謝謝,這真的是很好的答案。我還有一個關於頁面對象模型(POM)的問題,我有我們使用dojotoolkit的動態網站,所以我沒有真正的靜態頁面,只有頁面的內容發生了變化,您是否建議在這種網站中使用POM? –

+0

你仍然可以爲它做,但你必須模塊化你的POM,這樣你可以重複使用它,沒有太多冗餘你可以參考[dojo selenium](http://stackoverflow.com/questions/5884189/testing-a-dojo- web-application-with-selenium)更多 – Madhan

+0

太棒了!謝謝!!! –