亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
使用分層的Selenium框架進行復雜 Web 應用的自動測試
作者:網絡轉載 發布時間:[ 2014/12/8 16:34:22 ] 推薦標簽:Selenium 開源測試工具

  繼續上文谷歌搜索的場景,通過實例來了解TestNG的用法與功能。
  清單5.TestNG應用示例
  @Parameters({"url","query-string","btn-id","txt-id","verify-String"})
  @Test
  public void testGoogle(String url,String queryString,String btnID,
  String txtID,String verifyString){
  selenium=new DefaultSelenium("localhost",4444,"*firefox",url);
  selenium.start();
  selenium.open("/");
  selenium.type(txtID,queryString);
  selenium.click(btnID);
  selenium.waitForPageToLoad("30000");
  verifyTrue(selenium.isTextPresent(verifyString));
  selenium.stop();
  }
  上面的代碼清單中,注釋Parameters指定的參數在TestNG測試框架的配置文件testng.xml里有具體定義,如下所示:
  清單6.testng.xml示例
  不難想到,只要修改testng.xml中的參數值,能由輸入參數驅動不同的測試用例。然而,僅僅在testng.xml中指定參數有很大的局限性,顯然過多的參數會難以維護,無法井井有條地組織分屬不同Test Cases的輸入。在下文中,我們來解決這個問題。
  回頁首
  基于Selenium的分層測試框架
  作者在工作中,測試基于OSGi平臺的多個插件。每個插件實現特有的功能,有多條測試路徑需要覆蓋,同時,各個插件之間又有共通之處,可以抽取某些部分進行復用。對此,我們假設這樣的場景:分別在谷歌、百度和必應中搜索各種關鍵字,并在返回的結果頁面中驗證是否存在目標字符串。每個搜索引擎都可以視為一個待測的組件,分別為它們撰寫Test Cases,并組織成一個Test Suite,用于執行測試。事實上,3個搜索引擎的測試由于同質性,還能夠合并為一種測試,用不同的輸入參數來指定所要測試的那個搜索引擎。這里視為三個組件,只是為了說明如何在Selenium+TestNG環境中組織多個測試模塊。
  自上而下地考慮,上段描述的測試場景能夠進行分解。Test Suite包含三類Test Cases(谷歌、百度與必應),每類Test Cases的一個Test Case由若干可復用的Test Tasks組成,通過傳入不同的參數,Test Task完成同質的不同行為。在Test Task之下,定義相關文件,包含待測試的Web頁面元素的定位信息。因此,分層Selenium框架有三個層次:
  appObjects——Web頁面元素定位信息,如按鈕與文本框等;
  tasks——測試步驟中可復用的行為;
  test cases——由tasks組成的測試用例。
  Web元素locators定義與收集
  Selenium根據XPath來定位Web元素,XPath的相關知識不屬于本文的內容。前面例子中,在TestNG的配置文件testng.xml里定義文本框與按鈕的locators,對于復雜的測試場景而言,這不是好的實踐。因此,我們在appObjects層建立文件,將Web頁面元素locators歸入,便于維護使用。Selenium-IDE的Find功能適于完成這一步驟。文件googlePages.properties的內容如下:
  清單7.locators文件示例
  #define the keys and corresponding XPaht locators of google page.
  googleSearchTxtField=//input[@name='q']
  googleSearchBtn=//input[@name='btnG']
  這時,在testng.xml中,刪去locators相關的parameters,只需要解析.properties文件,生成locators的properties備用。在所附的源碼中可以看到.properties文件的解析器PropUtils的簡單實現。
  測試任務分解與實現
  為說明任務分解,以簡單的搜索過程為例,可以分為輸入搜索關鍵字、點擊搜索按鈕、以及驗證結果頁面。實際代碼如下所示,不難發現,由參數決定行為方式的測試任務,都接受一個paraMap數據結構,并根據其內容在方法內采取適當的行為。通過這種方式,test cases能夠以參數配置文件來驅動測試任務實施其想要的行為。
  清單8.Test Task代碼示例
  public void openSite(){
  selenium.open("/");
  }
  public void typeSearchTxtField(HashMap paraMap){
  utils.waitForElement((String)elemMap
  .get(TestGoogleConstants.GOOGLE_SEARCH_TXT_FIELD),30);
  selenium.type((String)paraMap
  .get(TestGoogleConstants.GOOGLE_SEARCH_TXT_FIELD),
  (String)elemMap
  .get(TestGoogleConstants.GOOGLE_SEARCH_TXT_FIELD));
上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美日韩一二三区 | 欧美日韩专区国产精品 | 黄色大片在线播放 | 甜性涩爱在线观看e8 | 福利网在线 | 久久精品最新免费国产成人 | 欧美人成一本免费观看视频 | 国产成人深夜福利短视频99 | 日韩高清第一页 | 亚洲日本久久一区二区va | 免费人成在线观看网站品爱网 | www.激情网.com| 免费亚洲网站 | 免费一级国产生活片 | 欧美成人免费sss | 国产1024在线永久免费观看 | 成人久久18免费游戏网站 | 亚洲国产日韩欧美mv | 欧美日韩视频一区三区二区 | 欧美成人一级视频 | 五月丁香六月综合缴清无码 | 最近中文字幕完整视频大全版 | 香蕉视频污污在线观看 | 日本精品中文字幕在线播放 | 小xav导航福利网址 小处雏一区二区三区精 | 亚洲人人干 | 成年美女黄网站色大免费观看软件 | free性欧美极度另类性性欧美 | 久久在现| 国产自在线拍 | 欧美3p在线观看一区二区三区 | 欧美人视频 | 日日碰狠狠添天天爽五月婷 | 手机在线 | 成人a视频片在线观看免费 成人a视频高清在线观看 | 国产成人啪精品视频免费软件 | 91精品国产高清久久久久久 | 一级做α爱过程免费视频 | 久久综合丁香激情久久 | 国产欧美亚洲精品第二区首页 | 日本不卡一区二区三区在线观看 |