python selenium自動化測試之路(1)--分層測試概念、selenium工具介紹

  一、分層自動化測試概念php

  傳統的自動化市場更關注產品UI層的自動化測試,而分層的自動化測試倡導產品開發的不一樣階段都須要自動化測試html

  大多公司與研發團隊實際上是忽略了單元測試與集成測試階段的自動化測試工做,因此,在分層的自動化測試中,咱們有必要對這些定義從新理解和定義。java

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

  集成、接口測試:單元測試關注代碼的實現邏輯,例如一個if分支或一個for循環的實現,那麼集成、接口測試關注的是一個函數、類(方法)所提供的接口是否可靠。例如咱們定義一個add()函數用於計算兩個參數的結果並返回,那麼我須要調用add()並傳參,並比較返回值是不是兩割參數相加。固然,接口測試也能夠是url形式進行傳遞。例如,咱們經過get方法想服務器發送請求,那麼咱們發送的內容做爲URL的一部分傳遞到服務器端。但好比Web service技術對外提供的一個公共接口,須要經過soapUI等工具對其進行測試。web

  UI層的自動化測試:大部分測試人員的大部分工做都是對UI層的功能進行測試。例如,咱們不斷重複的對一個表單提交,結果查詢等功能進行測試,咱們能夠經過相應的自動化測試工具來模擬這些操做,從而解放重複的勞動。UI層的自動化測試工具很是多,好比QTP、Robot Framework、waiter、Selenium等。chrome

  爲何分層自動化是一個金字塔形,而不是長方形或三角形?這是爲了表示不一樣階段所投入自動化測試的比例。若是一個產品歷來沒有作單元測試與接口測試,只作UI層的自動化測試是不科學的,很難從本質上保證產品的質量。若是妄圖實現全面的UI層的自動化測試,那更是一個勞民傷財的舉動,投入了大量的人力時間,最終得到的收益可能會遠遠低於所支付的成本。由於越往上層,其維護成本越高。尤爲是Ui層的元素會時常的發生改變。因此,咱們應該把更多的自動化測試放在單元測試與接口測試階段進行。編程

 

  二、什麼樣的項目適合作自動化測試api

  並非全部項目都適合實施自動化測試的,關於什麼樣的項目適合作自動化測試,在這裏,主要整理如下幾點瀏覽器

  1)任務測試明確,不會頻繁變更安全

  2)每日構建後的測試驗證

  3)比較頻繁的迴歸測試

  4)軟件系統界面穩定,變更少

  5)須要在多平臺上運行的相同測試用例、組合遍歷型的測試、大量的重複任務

  6)軟件維護週期長

  7)項目進度壓力不太大

  8)被測軟件系統開發比較規範,可以保證系統的可測試性

  9)具有大量的自動化測試平臺

  10)測試人員具有較強的編程能力

  注意,並不是以上10條都具有的狀況下才能開展自動化測試,在業界大牛廣泛的自動化測試經驗中,一半知足如下三個條件就能夠對項目開展自動化測試:

  軟件需求變更不頻繁

  項目週期較長

  自動化測試腳本可重複使用

 

  三、Selenium工具介紹

  要作selenium自動化測試,首先要要了解什麼是Selenium。

  Selenium自動化測試工具,主要是用於web應用程序的自動化測試,但並不僅侷限於此,

它還支持全部給予web的管理任務自動化。

  Selenium的特色:

  ·開源,免費

  ·支持多瀏覽器:FireFox、Chrome、IE、Opera

  ·支持多平臺:Linux、Windows、MAC

  ·支持多語言:java、Python、Ruby、php、C#、JavaScript

  ·對web頁面有良好的支持

  ·簡單、靈活(API簡單,開發語言驅動靈活)

  ·支持分佈式測試用例執行

  Selenium經歷了三個版本,Selenium1.0和Selenium2.0,跟3.0,Selenium也不是簡單一個工具,而是有幾個工具組成,每一個工具都有其特色和應用場景。

 

Selenium 1.0

  用簡單的公式:

  Selenium 1.0 = Selenium IDE + Selenium Grid + Selenium RC

 

  Selenium IDE

  Selenium IDE是嵌入到FireFox瀏覽器中的一個插件,實現簡單的瀏覽器操做的錄製與回放功能。

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

 

  Selenium Grid

  Selenium Grid是一種自動化的測試輔助工具,容許同時並行地、在不一樣的環境上運行多個測試任務,極大地加快Web應用的功能測試。其特色:

  ·並行執行
  ·經過一個主機統一控制用例在不一樣環境、不一樣瀏覽器下運行。
  ·靈活添加變更測試機

 

  Selenium RC

  Selenium RC(Remote Control)是Selenium家族的核心部分。Selenium RC支持多種不一樣語言編寫的自動化測試腳本,經過Selenium RC的服務器做爲代理服務器去訪問應用,從而達到測試的目的。

  Selenium RC分爲Client Libraries和Selenium Server。Client Libraries庫主要用於編寫測試腳本,用來控制Selenium Server的庫。Selenium Server負責控制瀏覽器行爲。

   簡單的理解:

  Selenium RC(API) <-> Selenium Server <-> 瀏覽器(FireFox、Chrome...)

 

  在2006年的時候,Google的工程師Simon Stewart發起了WebDriver的項目;由於長期以來Google一直是Selenium的重度用戶,但卻被限制在有限的操做範圍內。

  Selenium RC 是在瀏覽器中運行JavaScript應用,使用瀏覽器內置的JavaScript翻譯器來翻譯和執行selenese命令(selenese是Selenium命令集合)。

  WebDriver是經過原生瀏覽器支持或者瀏覽器擴展來直接控制瀏覽器。WebDriver針對各個瀏覽器而開發,取代了嵌入到被測Web應用中的JavaScript,與瀏覽器緊密集成,所以支持建立更高級的測試,避免了JavaScript安全模型致使的限制。除了來自瀏覽器廠商的支持以外,WebDriver還利用操做系統級的調用,模擬用戶輸入。

  Selenium與WebDriver原是屬於兩個不一樣的項目,WebDriver的建立者Simon Stewart早在2009年8月的一份郵件中解釋了項目合併的緣由。

  Selenium與WebDriver合併緣由:爲什麼把兩個項目合併?部分緣由是WebDriver解決了Selenium存在的缺點(例如可以繞過JavaScript沙箱,咱們有出色的API),部分緣由是Selenium解決了WebDriver存在的問題(例如支持普遍的瀏覽器),部分緣由是由於Selenium的主要貢獻者和我都以爲合併項目是爲用戶提供最優秀框架的最佳途徑。

 

Selenium2.0

  由於Selenium和Webdriver的合併,因此,Selenium 2.0由此誕生。簡單用公式表示爲:

   Selenium 2.0 = Selenium 1.0 + WebDriver

  須要強調的是,在Selenium 2.0中主推的是WebDriver,能夠將其看做是Selenium RC的替代品。由於Selenium爲了保持向下的兼容性,因此在Selenium 2.0中並無完全地拋棄Selenium RC。

  Selenium 2.0的核心WebDriver工做原理:

  webdriver api(java/python/ruby) <-> chromedriver.exe  <-> chrome瀏覽器

 

  大概是在2013年,Selenium官方博客發佈Selenium團隊將會在聖誕節發佈Selenium3.0。然鵝,這一等就等到2016年7月,Selenium3.0悄悄發佈第一個beta版,官方解釋爲:

「在seleniumconf 2013,咱們宣佈,Selenium的一個新的主要版本將在‘聖誕節’發佈。幸運的是,咱們歷來沒有說過哪一個聖誕節,由於咱們已經花了一段時間來作咱們想作的全部改變!咱們很興奮地宣佈第一個bate版--Selenium 3.0 - beta1的發佈。」

  

Selenium 3.0  

  Selenium 3.0作了一些不大不小的更新:

  1)終於去掉了RC

  2)規範了全部瀏覽器廠商,設計本身的瀏覽器驅動  (WebDriver規範,全部瀏覽器廠商協商一致)

  3)Selenium3.0只支持Java8版本以上

  4)Selenium3.0中的Firefox瀏覽器驅動獨立了,之前裝完selenium2就能夠驅動Firefox瀏覽器了,如今和Chrome同樣,必須下載和設置瀏覽器驅動

  5)MAC OS 集成Safari的瀏覽器驅動。默認在/usr/bin/safaridriver 目錄下

  6)只支持IE 9.0版本以上

  Selenium 3.0  <->  geckodriver.exe <-> FireFox瀏覽器

 

 

注:本篇內容大部分轉自蟲師博客http://www.cnblogs.com/fnng/p/7426928.html,僅供學習使用

相關文章
相關標籤/搜索