您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 >
使用XML維護(hù)Selenium自動(dòng)化測(cè)試腳本
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/6/7 10:46:27 ] 推薦標(biāo)簽:

  ● Selenium IDE:Selenium-IDE 是快速開發(fā) Selenium 測(cè)試用例的 Firefox 插件工具?梢岳盟浿朴脩舻幕静僮,生成測(cè)試用例腳本,還可以將這些測(cè)試用例轉(zhuǎn)化為其他編程語(yǔ)言的自動(dòng)化測(cè)試腳本。通過(guò)點(diǎn)擊回放按鈕,可以回放錄制的測(cè)試用例腳本。該工具還包含一個(gè)上下文菜單,測(cè)試工程師可以使用它從瀏覽器的當(dāng)前顯示頁(yè)面選擇頁(yè)面元素,然后可以選擇適配已選取元素的帶預(yù)定義參數(shù)的 Selenium 命令來(lái)快速完成腳本編寫。這一特性為自動(dòng)化測(cè)試人員節(jié)省了花費(fèi)在腳本編寫上的時(shí)間、也提供了學(xué)習(xí) Selenium 命令的快捷方法。

  ● Selenium Grid:Selenium Grid用于在不同的機(jī)器系統(tǒng)上、不同的瀏覽器上并行運(yùn)行自動(dòng)化測(cè)試。利用 Selenium Grid,可以輕松創(chuàng)建分布式自動(dòng)化測(cè)試環(huán)境

  下面,我們將會(huì)使用 JUnit4 和 Selenium Server 演示如何對(duì)前文提到的測(cè)試用例編寫自動(dòng)化測(cè)試腳本。準(zhǔn)備項(xiàng)目依賴的 Jar 文件,如 Selenium、dom4j 等 Jar 包,啟動(dòng) Eclipse 集成開發(fā)環(huán)境,創(chuàng)建項(xiàng)目名稱為 SeleniumDemo 的 Java 項(xiàng)目,并創(chuàng)建一個(gè) JUnit 4 單元測(cè)試類:dw.junit. DWloginJUnit.java,依次編寫 @BeforeClass、@Test 、@AfterClass 方法。本文提供源代碼下載,您可自行下載,導(dǎo)入到自己的 Eclipse 開發(fā)工作區(qū)。首先,創(chuàng)建 Selenium 實(shí)例,啟動(dòng)瀏覽器,使瀏覽器窗口大化,打開要訪問的谷歌網(wǎng)站。代碼如下:

  清單 1. 創(chuàng)建初始化 Selenium 實(shí)例

private static Selenium selenium;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
    selenium = new DefaultSelenium("localhost", 4444, "*iexplore",
               http://www.google.com/);
    System.out.println("正在啟動(dòng) Selenium。。。");
    selenium.start();
    selenium.windowMaximize();
    selenium.open("/");
}

  然后在測(cè)試方法中實(shí)現(xiàn)演示用例,即在谷歌站點(diǎn)搜索輸入框輸入“ibm developerworks cn”,然后點(diǎn)擊搜索按鈕,后截圖。Pause 和 captureScreenshot()方法在本文附帶的源代碼文件中可查。執(zhí)行用例部分的代碼清單如下:

  清單 2. 執(zhí)行用例的程序代碼

@Test
 public void test() {
 // 在 Google 查詢輸入框,輸入 ibm developerworks cn
 String queryString="ibm developerworks cn";
 selenium.type("//input[@name='q']", queryString);
   pause(1000);
 // 單擊查詢按鈕,執(zhí)行查詢
 selenium.click("//input[@name='btnK']");
   pause(1000);
 System.out.println("獲取的頁(yè)面標(biāo)題:"+selenium.getTitle());
   pause(2000);
 SeleneseTestBase.assertTrue(selenium.getTitle().contains(
 queryString));
 // 測(cè)試截圖函數(shù)
 captureScreenshot("截圖測(cè)試 JUnit");
  }

  后,執(zhí)行用例完畢后調(diào)用 tearDownAfterClass() 方法銷毀 Selenium 實(shí)例。

  清單 3. 銷毀 Selenium 實(shí)例

@AfterClass
public static void tearDownAfterClass() throws Exception {
     if(selenium != null){
            System.out.println("停止 Selenium !");
            selenium.stop();
        }
  }

  我們來(lái)演示如何執(zhí)行這個(gè)單元測(cè)試類:先打開一個(gè)命令行窗口,并切換到 Selenium Server Jar 文件所在的目錄,運(yùn)行 java -jar selenium-server-standalone-2.{ 版本號(hào) }.{ 修訂版本號(hào) }.jar 來(lái)啟動(dòng) Selenium Server。在 Eclipse 工作區(qū),右鍵選擇 dw.junit.DWloginJUnit.java,選擇 Run as — JUnit Test 來(lái)運(yùn)行單元測(cè)試類?梢钥吹剑瑸g覽器自動(dòng)啟動(dòng)起來(lái),訪問谷歌查詢引擎主頁(yè),在搜索框自動(dòng)輸入了“ibm developerworks cn”,并點(diǎn)擊查詢按鈕進(jìn)行了查詢。在 Eclipse 的 JUnit 視圖,可以看到顯示代表執(zhí)行成功的綠色圖標(biāo),在 SeleniumDemo 項(xiàng)目的根目錄下生成了一個(gè) png 格式的谷歌查詢結(jié)果頁(yè)面的截圖文件。

  自動(dòng)化測(cè)試框架開發(fā)人員如何做

  我們上文實(shí)現(xiàn)了演示用例的自動(dòng)化回歸測(cè)試,很多公司的測(cè)試工程師也是用這樣的方法執(zhí)行自動(dòng)化測(cè)試的,但這不是好的方法。理由如下:

  1、如果用例發(fā)生變更,比如界面的美化重構(gòu)導(dǎo)致頁(yè)面的某一控件元素信息變化,不得不修改 Java 腳本代碼,重新編譯打包。

  2、擅長(zhǎng)業(yè)務(wù)的測(cè)試人員很大一部分還是不熟悉 Java 編程的,他們期望有一種不需要編程的測(cè)試框架,這樣他們可以根據(jù)對(duì)業(yè)務(wù)的把握,快速編寫自動(dòng)化測(cè)試用例腳本。

  目前市場(chǎng)上還沒有自動(dòng)化測(cè)試工具可以直接識(shí)別傳統(tǒng)的測(cè)試用例,繼而直接執(zhí)行自動(dòng)化測(cè)試。也是說(shuō),現(xiàn)在還沒有工具可以讀取像“用戶名輸入框”這樣的純文字性描述內(nèi)容,然后映射到頁(yè)面上的輸入框控件。那么,如何添加一些額外的信息到傳統(tǒng)的用例里面,從而使自動(dòng)化工具能執(zhí)行業(yè)務(wù)測(cè)試人員寫的這些用例呢?

  先分析一下 Web 應(yīng)用的測(cè)試用例及其測(cè)試步驟,顯而易見,都包含下述幾部分:Web 頁(yè)面控件部分、用戶執(zhí)行動(dòng)作部分、測(cè)試數(shù)據(jù)部分等。比如,演示用例中提到的用戶輸入框、密碼輸入框和登錄按鈕屬于 Web 頁(yè)面控件,動(dòng)詞輸入、點(diǎn)擊等屬于用戶執(zhí)行動(dòng)作,用戶名和密碼數(shù)據(jù)屬于測(cè)試數(shù)據(jù)。我們需要把這幾部分都添加額外信息、轉(zhuǎn)化為測(cè)試工具能識(shí)別的形式。測(cè)試工具都提供定位 Web 頁(yè)面控件的方式,以 Selenium 為例,它可以通過(guò) CSS、JS 和 XPath 定位控件,方式非常豐富。用戶執(zhí)行動(dòng)作對(duì)應(yīng)著測(cè)試工具的應(yīng)用編程接口 API,測(cè)試工具都提供類似單擊 Click、雙擊 DoubleClick、拖拽 DragAndDown、輸入數(shù)據(jù) Type 等動(dòng)作的 API。頁(yè)面控件信息和測(cè)試數(shù)據(jù)對(duì)應(yīng)著 API 的參數(shù)列表。比如,selenium.type(“//input[@id= ’ username ’ ]”,”我的用戶名”)。

上一頁(yè)1234下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd