自動化測試之 seleniumIDE,Selenium1,selenium2和testNG入門

因爲前期三個月公司的項目一直在改需求階段,一直是手動測試,如今項目雛形以及基本頁面功能都肯定下來,爲了避免讓本身陷入每天測同一功能的無限循環中,故開始自動化測試的學習之路,也爲本身之後的發展鋪鋪路。php

一.自動化測試介紹css

自動化測試使用狀況:html

  • 軟件需求變更不頻繁
  • 項目週期足夠長
  • 自動化測試腳本可重複使用
  • 須要大量時間和人力(性能測試,配置測試,大數據量輸入測試)

 目的:主要用於迴歸測試:檢驗修復bug後確保好的功能沒有被破壞,並非爲了找新bug。前端

下面從四個方面來講明:測試類型/流程/框架/工具
1.自動化測試類型:java

 API testing:webservice測試,接口測試,輸入參數,看服務端數據是否正確python

UNIT testing:單元測試,測試代碼測試方法輸入的參數與return返回值
GUI testing:自動化方式驅動瀏覽器實現手動模擬的方式,以下面的selenium自動化,用腳本驅動瀏覽器android

performance  testing:性能測試,產生大的併發,負載,多線程方式產生併發,節省成本。web

2.自動化測試流程:chrome

設計測試用例-設計測試腳本-運行測試腳本-獲取測試結果-分析測試報告
分析case的可能性,計劃評估,作測試用例,測試環境搭建(測試數據準備),自動化腳本書寫,執行腳本,查看測試的腳本。數據庫

3,測試代碼結構

配置:測試對象,測試環境,輸入參數
src:類庫,測試用例,測試腳本,
test Suites:用例分類
測試數據:如何更新!!
測試日誌:對錯誤的記錄,緣由,現象,記錄錯誤場景
測試結果:記錄全部結果,錯誤和正確的都有

4.測試工具

 

傳統的自動化測試更關注的產品UI層的自動化測試,而分層的自動化測試倡導產品的不一樣階段(層次)都須要自動化測試,表示不一樣階段所投入自動化測試的比例。

咱們須要規範的來作單元測試一樣須要相應的單元測試框架,如java的Junit、testNG,C#的NUnit ,python 的unittest、pytest 等,幾乎全部的主流語言,都會有其對應的單元測試框架。

單元測試關注代碼的實現邏輯,例如一個if 分支或一個for循環的實現;那麼集成、接口測試關注的一是個函數、類(方法)所提供的接口是否可靠。例如,我定義一個add()函數用於計算兩個參數的結果並返回,那麼我須要調用add()並傳參,並比較返回值是否兩個參數相加。

固然,接口測試也能夠是url的形式進行傳遞。例如,咱們經過get方式向服務器發送請求,那麼咱們發送的內容作爲URL的一部分傳遞到服務器端。但好比 Web service 技術對外提供的一個公共接口,須要經過soapUI 等工具對其進行測試。

UI層的自動化測試工具很是多,比較主流的是QTP,Robot Framework、watir、selenium 等。

首先要先確認你所測試的產品是桌面程序(C/S)仍是web應用(B/S)。

  桌面程序的工具備:QTP、 AutoRunner

  web應用的工具備:QTP、AutoRunner、Robot Framework、watir、selenium

被測試有產品是C/S架構的,那麼推薦QTP ,QTP在UI自動化測試領域佔到了一半的試用率。因此,足以說明QTP在自動化領域強大,易用性等。學習主流的工具也可使你得到更多的機會。市面上關於QTP的書籍也很是豐富。固然,要想學好QTP ,你必需要掌握VBS腳本語言。

被測產品是B/S 結構,那麼推薦selenium ,爲何不是QTP 或其它工具?由於selenium 對B/S應用支持很好,更重要的一點,它支持多語言的開發,真正的試用selenium ,你所要掌握的不只僅是一個工具而已,你還須要學習一門語言。

假如你決定試用selenium 了以後,你又面臨了一個新的問題,選擇一門語言。selenium 是支持java、python、ruby、php、C#、JavaScript 。

  從語言易學性來說,首選ruby ,python

  從語言應用廣度來說,首選java、C#、php、

  從語言相關測試技術成度(及 資料)來說:ruby ,python ,java

二.selenium入門

首選你在開始selenium以前,須要花一到兩個月時間去學一門語言,這裏是根據沒有語言基礎的同窗而定的。我推薦ruby ,python ,java 任意一門語言來進行學習。

固然,已經若是有很好的語言基礎略過這個環節,或者你的豐富的java編程能力,那麼學習python 可能只須要幾天時間或更短。

學習selenium以前你必需要理解html、xml和xpath(用於定位測試的元素路徑)基本概念。

 

1.seleniumIDE(錄製並導出腳本,時ff的一個插件,因此只能在ff瀏覽器上運行)

 

selenium IDE

 

  selenium IDE 是嵌入到Firefox瀏覽器中的一個插件,實現簡單的瀏覽器操做的錄製與回放功能。那麼什麼狀況下用到它呢?

 

  快速的建立bug重現腳本,在測試人員的測試過程當中,發現了bug以後能夠經過IDE將重現的步驟錄製下來,以幫助開發人員更容易的重現bug。

 

  IDE錄製的腳本能夠能夠轉換成多種語言,從而幫助咱們快速的開發腳本。

 

安裝準備:

(1)須要先安裝firbug和firePath(主菜單/附加組件/搜索後直接安裝便可):用於方便查找和定位元素

(2)安裝selenium IDE(用ff搜索直接安裝便可)

錄製測試用例(關鍵字驅動):

主要爲三項:

  1. command:分爲三種類型:action(操做)/accessor(存儲,檢查)/assertion(斷言,驗證)
  2. target:定位元素。用id,name,xpath,連接文字,dom定位,css定位,隱式定位。
  3. value:字符串

導出:選中文件/export test case suite as  (不支持C#和Python2)

 

2.selenium1 (selenium -RC):幾乎支持全部瀏覽器,可是受js安全模型致使的限制,面向過程。

selenium服務器:對應 selenium-server-standalone-2.44.0.jar,捆綁了selenium core (js程序,一系列js函數,用於調用瀏覽器內置的js解釋器,解釋和執行selenese命令),並自動將其注入瀏覽器,

selenium客戶端:對應selenium-java-2.44.0.jar(使用客戶端庫文件的api函數,執行api函數)

安裝準備及使用:

1.安裝eclipse,配置環境jdk
2.新建java項目和包,導入 selenium-java-2.44.0.jar(客戶端包,junit包配置) 和 selenium-server-standalone-2.44.0.jar(服務器),(後續會有selenium-java-2.44.0-srcs.jar 即不用啓動服務器,二代,selenium源碼,js文件)

3.導入Selenium IDE的測試腳本(只能爲java),特別注意:
selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://dhw.lxhbysn.com/pages/E02/index.jsp");

(使用的瀏覽器爲IE的能夠打開,其餘瀏覽器須要配置路徑,如:"C:\\Users\\DELL\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe,路徑爲雙反斜線)

4.啓動selenium服務器,啓動bat(本身手動生成bat文件:java -jar jar包路徑)
5.運行測試腳本,即運行junit腳本,測試經過,出現 selenium Remote Control ,腳本開始自動執行。

也能夠本身建立selenium腳本進行測試:

(1)建立測試實例(用哪一個瀏覽器,起始的打開頁面)

DefaultSelenium selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://dhw.lxhbysn.com/pages/E02/index.jsp");

selenium.start();

瀏覽器導航操做總結:open、goback、refresh、windowsFocus、windowMaxinize、close

對頁面元素的操做總結:type、typeKeys、click、clickAt、doubleClick、doubleClickAt、select、check、focus

獲取頁面元素:getTitle、getLocation、getValue、getText、isChecked、getSelectedIndex、getSelectedLabel、getSelectedValue、getSelectedOptions、getTable、getAttribute、isTextPresent、isElementPresent、isVisible、getXpathCount、

設置等待:waitForPageToLoad(timeout),setTimeout(只針對open),setSpeed(執行速度)

測試控制和調試類:captureEntirePageScreenShot(),highlight(抓取圖片時只能用火狐,谷歌和IE代理瀏覽器)

js彈出框處理:isAlertPresent(是否彈出),getAlert(獲取文本內容),chooseOkOnNextConfirmation,AnswerOnNextPrompt

selenium1採用的是js注入進行測試,沒法處理js對話框(alert,confirmation,prompt),由於預處理,因此看不到,可是已經處理

瀏覽器多窗口處理:getAllwindowIds/names/titles(),waitForPopUp(windowID,timeout)/代替thread.sleep()等待窗口完成後,selectPopUp(windowId)/選擇子窗口,selectWindow(windowID)/選擇任意窗口,openWindow(url,windowID)/在彈出窗口打開新的url

結束測試:close 關瀏覽器,stop中止服務器會話,關控制界面,shutDownSeleniumServer關服務器。

 

3.selenium2(WebDriver):一套類庫,不依賴任何測試框架(junit),無需啓動服務器,經過原生瀏覽器支持或瀏覽器擴展直接支持瀏覽器,基於對象的測試

selenium2:繞過js限制,API更易用,只支持:ff,chrome,ie,opera,android,iphone

selenium1:支持更多的瀏覽器

安裝準備和使用:

1.導入selenium-java-2.44.0-srcs.jar,之後運行腳本不用啓動服務器
2.對火狐瀏覽器自帶瀏覽器驅動,其餘的瀏覽器須要下載並配置以下
System.setProperty("webdriver.chrome.driver", "C:\\Users\\DELL\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe");

WebDriver driver = new ChromeDriver();   
Navigation navigation = driver.navigate();   //設置導航實例
navigation.to("http://dhw.lxhbysn.com/pages/E02/login.jsp");

導航操做:to、back/forward、refresh

查找元素:WebElment  a=driver.findElment.(By.id/name/linkText/ClassName/TagName/Xpath

對頁面元素的操做:click(勾選操做也用這個),sendKeys,clear,submit

獲取頁面元素及其內容:getTitle,getCurrentUrl,getText,selected(勾選狀態),getTagName,Enabled,Displayed,getAttribute,

彈出對話框的處理:點擊後,driver.switchTo().alert().dismiss()/accept()都是點擊後關閉,driver.switchTo().alert().sendKeys()填寫內容,driver.switchTo().alert().getText()爲獲得對話框內容,

瀏覽器多窗口處理:windowHandles,window(轉到某個窗口)

設置管理:cookie,超時時間和瀏覽器窗口

 

4.testNG(用於測試管理,生產測試報告)

下載插件(可到微盤上搜)解壓後: 將features.rar解壓後的文件件放入eclipse安裝路徑下的features中 org.testng...rar解壓後的文件夾放入eclipse安裝路徑下的plugins文件夾中 重啓eclipse便可,文件名太長,將壓縮文件拷過去而後用7zip解壓便可。

 

TestNG是一個測試框架,其靈感來自JUnit和NUnit的,但引入了一些新的功能,使其功能更強大,使用更方便。

TestNG是一個開源自動化測試框架;TestNG表示下一代。 TestNG是相似於JUnit(特別是JUnit 4),但它不是一個JUnit擴展。它的靈感來源於JUnit。它的目的是優於JUnit的,尤爲是當測試集成的類。 TestNG的創造者是Cedric Beust(塞德里克·博伊斯特)

TestNG消除了大部分的舊框架的限制,使開發人員可以編寫更加靈活和強大的測試。 由於它在很大程度上借鑑了Java註解(JDK5.0引入的)來定義的測試,它也能夠告訴你如何使用這個新功能在真實的Java語言生產環境中。

TestNG的特色

  • 註解

  • TestNG使用Java和麪向對象的功能

  • 支持綜合類測試(例如,默認狀況下,沒有必要建立一個新的測試每一個測試方法的類的實例)

  • 獨立的編譯時間測試代碼運行時配置/數據信息

  • 靈活的運行時配置

  • 主要介紹「測試組」。當編譯測試,只要問TestNG運行全部的「前端」的測試,或「快」,「慢」,「數據庫」等

  • 支持依賴測試方法,並行測試,負載測試,局部故障

  • 靈活的插件API

  • 支持多線程測試

測試TestNG的設置

建立一個Java類文件名TestNGSimpleTest  C: > TestNG_WORKSPACE

   
import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; public class TestNGSimpleTest { @Test public void testAdd() { String str = "TestNG is working fine"; assertEquals("TestNG is working fine", str); } }

TestNG的幾種不一樣的方法能夠被調用:

  •  testng.xml 文件

  • ant

  • 命令行

讓咱們調用使用testng.xml文件。建立一個XML文件名稱testng.xml C: > TestNG_WORKSPACE 執行測試用例(s)

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"> <test name="test1"> <classes> <class name="TestNGSimpleTest"/> </classes> </test> </suite>

檢查結果

類編譯使用javac編譯以下:

===============================================
Suite1
Total tests run: 1, Failures: 0, Skips: 0
===============================================
相關文章
相關標籤/搜索