互聯網產品的迭代速度遠高於傳統軟件,尤爲是移動APP不但更新頻繁,還須要在不一樣硬件、系統版本的環境下進行大量兼容測試,這就給傳統測試方法和測試工具帶來了巨大挑戰。爲知足產品敏捷開發、快速迭代的需求,自動化測試逐漸流行起來。自動化測試是把以人爲驅動的測試行爲轉化爲機器執行的一種過程。
自動化測試的優勢不少,簡單羅列幾條:避免重複工做、提升測試效率、保證每次測試地一致性和可重複性、更好的利用資源(周未/晚上的資源空閒時段)、節省人力資源、增長軟件信任度、縮短軟件開發測試周期讓產品更快投放市場、提升軟件測試的準確度和精確度,添加軟件信任度。
並非任何應用產品都適合作自動化測試,選擇自動化測試以前必須確認你的項目符合如下要求:軟件需求變更不頻繁、產品更新維護週期長、比較頻繁的迴歸測試、自動化測試腳本可重複使用,不然光是準備大量的測試腳本就足以讓測試人員崩潰。
自動化測試的主要類型
一、基於代碼的自動化測試,在方法上能夠分爲白盒測試和灰盒測試
白盒測試的特色:
1)白盒測試深刻被測代碼的邏輯細節
2)白盒測試關注代碼覆蓋率和運行路徑
3)白盒測試經過測試樁(Stub,Mock)實現代碼隔離
4)白盒測試經過測試驅動(Test Fixture)執行測試用例
灰盒測試的特色:
1)灰盒測試關注接口與參數,不關注代碼實現
2)灰盒測試適用白盒測試用例設計方法
二、基於界面的自動化測試
1)利用代碼或工具模擬鼠標和鍵盤的操做
2)界面級自動化測試的核心是對象識別和操做
3)工具比較多,如:Selenium/QTP等
三、協議級自動化測試
1)代碼級自動化測試更多的用於服務端
2)界面級自動化測試更多的用於客戶端
3)協議自動化測試用於測試客戶端和服務端之間的通訊,彌補代碼級和界面級的不足
4)協議級自動化測試更適合於可靠性、安全性、性能等測試
本文將爲您介紹基於界面的自動化測試。
一、web UI自動化過程css
二、工具的選擇
B/S:
WebDriver 優勢:使用最廣範的開源框架 缺點:須要寫代碼,入門門檻相對較高
QTP 優勢:能夠錄製腳本支持C/S架構 缺點:商業工具,VBS過期語言
C/S:
QTP
按鍵精靈
AutoIT 等等
APP:
一、Android:
UIAutomator 谷歌官方提供,只能作原生APP的自動化測試,語言java
Monkey 理論上不算UI自動測試框架,更大做用測試app的穩定性
MonkeyRunner 可錄製,可是腳本根據座標軸定位,兼容性差
Robotium 使用的人較多,文檔也比較齊全,也支持webview,不支持跨進程, 語言java
Appium 支持Hybrid app,也支持跨進程,能夠用衆多語言編寫腳本java,ruby,python,c#……目前不支持安卓toast的獲取
Calabash 語言Java ,底層Robotium 一樣不支持跨進程
二、IOS
UIAutomation 蘋果自家的
Appium 同時支持android, 提供的api也基本一致,代碼複用率高
Calabash 同時支持android, 提供的api也基本一致,代碼複用率高
我選擇的是哪一個工具呢?答案是:Webdriver +Python,緣由以下:
1)Webdriver (Selenium2)是一種用於Web應用程序的自動測試工具,它提供了一套友好的API,主要實現:模擬人使用web應用,自動的打開瀏覽器、打開應用、進入應用進行各類模擬業務操做等等,且免費,小巧,支持多語言的開發,支持多平臺。與Selenium 1(Selenium-RC)相比,Selenium 2的API更容易理解和使用,其可讀性和可維護性也大大提升。Webdriver徹底就是一套類庫,不依賴於任何測試框架,除了必要的瀏覽器驅動,不須要啓動其餘進程或安裝其餘程序,也沒必要像Selenium 1那樣須要先啓動服務。
另外,兩者所採用的技術方案也不一樣。Selenium 1是在瀏覽器中運行 JavaScript來進行測試,而Selenium 2則是經過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器。
Selenium 2針對各個瀏覽器而開發的,它取代了嵌入到被測Web應用中的 JavaScript。與瀏覽器的緊密集成,支持建立更高級的測試,避免了JavaScript安全模型的限制。除了來自瀏覽器廠商的支持,Selenium 2 還利用操做系統級的調用模擬用戶輸入。WebDriver 支持Firefox (FirefoxDriver)、IE(InternetExplorerDriver)、Opera(OperaDriver)、Chrome (ChromeDriver)以及safari(SafariDriver)。
它還支持Android(Selendroid)和iPhone(Appium)的移動應用測試。此外,Selenium 2還包括基於HtmlUnit的無界面實現,稱爲HtmlUnitDriver,和基於webkit的無界面瀏覽器phantomjs。Selenium 2 API能夠經過 Java、C#、PHP、Python、Perl、Ruby等編程語言訪問,支持開發人員使用他們經常使用的編程語言來建立測試。
2)Python語言易學
三、Webdriver學習路線
搭建測試環境
熟悉webdriver API
學習元素的定位,selenium 提供了id、name、class name、 tag name、link text、partial link text、 xpath、css、等定位方法。
學習各類元素有操做,輸入框,下拉框,按鈕點擊,文件上傳、下載,分頁,對話框,警告框等等
學習編程技術
學習並使用單元測試框架,單元測試框架自己就解決了用例的組織與運行
生成本身的測試框架
下面咱們從搭建環境開始練習一個實例!
一、環境準備
編輯器: Eclipse + pydev插件html
Eclipse是寫JAVA的IDE, 這樣就能夠通用了,學習代價小。 學會了Eclipse, 之後寫Python或者JAVA 均可以。java
Eclipse, 功能強大。python
Eclipse跨平臺, 能夠在Mac上和Windows運行安裝Pythonandroid
下載地址:http://www.python.org/
Python 有 Python 2 和 Python 3 兩個版本,語法有些區別,我安裝的是Python 2.7 http://python.org/getit/
配置環境變量
設置Python的環境變量:修改個人電腦->屬性->高級->環境變量->系統變量中的PATH爲PATH:「C:Python27;」
上述環境變量設置成功以後,就能夠在命令行直接使用python命令。或執行"python *.py"運行python腳本了。
此時,仍是隻能經過"python.py"運行python腳本,若但願直接運行.py,只需再修改另外一個環境變量PATHEXT爲:PATHEXT=PATHEXT;.PY;.PYM
下載setuptools
個人電腦環境是Win7 32位系統,下載的是setuptools-0.6c11.win32-py2.7。setuptools是一個安裝python包的第三方工具,下載好後直接安裝便可(pip依賴於setuptools的安裝)
軟件下載和安裝說明參見頁面:https://pypi.python.org/pypi/...
安裝pip工具
cmd開啓控制檯,cd命令進入到C:Python27Scripts> ,執行 easy_install pip, 等待完成便可
附:easy_install使用說明
安裝套件:
easy_install PackageName
更新套件:
easy_install -U PackageName
移除套件:easy_install -m PackageName
顯示說明:
easy_install –showhelp
備註:若是網絡被牆或者沒連網,則上述方法安裝失敗,這種狀況下,必須手動安裝。
下載獲得pip tar.gz文件,這裏我用的是pip-1.5.4.tar,解壓,而後到windows的cmd中,進入解壓目錄運行setup.py install
安裝selenium client Drivers
輸入pip install selenium 或者 pip install –U selenium後回車,等待下載並安裝,若是無錯誤 即安裝成功。
說明:若是網絡被牆或者非連網狀態,那麼上述安裝無效,必須手動安裝,步驟以下:
下載selenium包
下載地址:https://pypi.python.org/pypi/...
我下載的是selenium-2.40.0.tar.gz
手動下載selenium的安裝包後,右鍵解壓縮,保險起見,解壓後把整個目錄放到C:Python27Libsite-packages下
打開CMD窗口,進入解壓後的目錄,運行命令 Python setup.py installweb
安裝JAVA JDK
下載地址:http://www.oracle.com/technet...
Eclipse 須要這個安裝好JAVA JDK後才能運行
安裝Eclipse
下載地址:http://www.eclipse.org/downlo...
下載完後,解壓就能夠直接使用, Eclipse不須要安裝。
pydev插件
pydev插件的官方網站: http://www.pydev.org/(不須要下載)
在Eclipse中安裝pydev插件
啓動Eclipse, 點擊Help->Install New Software... 在彈出的對話框中,點Add 按鈕。 Name中填:Pydev, Location中填http://pydev.org/updates
而後一步一步裝下去。 若是裝的過程當中,報錯了。 就從新裝。編程
偶爾直接在線下載有時候會有這樣的提示。
解決方法:
在網上直接找低版本的,我用的是pydev3.4下載地址:http://sourceforge.net/projec...
解壓文件。將文件夾放到eclipse的安裝錄入裏面的features和plugins文件中。
二、動手寫一個實例(這個程序的主要功能就是:打開一個火狐瀏覽器,完成監控寶登陸功能的自動化測試。)
1)在eclipse中建立一個python項目。
進入 Pydev 透視圖,在 Eclipse 菜單欄中,選擇 File > New > Project > Pydev > Pydev Project,新建項目:PyCase,單擊 Next。c#
新建 pyDev Package,Python 包就建立好了,此時,自動生成__init__.py 文件,該文件不包含任何內容。windows
建立完 Pydev Package 後,右鍵單擊建立的包Py27,選擇 New->Pydev Module,輸入模塊名稱test.py,點Finish。這樣,Python 模塊就建成了。
修改test.py文件的內容以下:api
'''
Created on 2016年7月5日
@author: vivi
'''
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
print "開始"
print "......"
profiledir = webdriver.FirefoxProfile(r"/Users/sunying/Library/Application Support/Firefox/Profiles/sr6smerq.default")
driver = webdriver.Firefox(profiledir)
driver.get("http://www.jiankongbao.com")
driver.find_element_by_id("dropdown-signin").click()
driver.find_element_by_id("email").clear()
driver.find_element_by_id("email").send_keys("**@yunzhihui.com")
driver.find_element_by_id("pwd").clear()
driver.find_element_by_id("pwd").send_keys("* ")
driver.find_element_by_id("sigin_btn").click()
time.sleep(3)
driver.close()
driver.quit()
print "結束"
2)執行腳本看效果,見下圖
右擊PythonCase1.py,Run As->Python Run
好了,大功告成, 若是你看到火狐瀏覽器自動打開了,併成功登陸了監控寶,那麼,你已經邁出了UI自動化的第一步了,恭喜!
雲智慧是業務運維解決方案服務商,旗下產品監控寶(www.jiankongbao.com)、透視寶(www.toushibao.com)、壓測寶(www.yacebao.com),已累計爲電商、移動互聯網、廣告傳媒、在線遊戲、教育醫療、金融證券、政企等行業的幾十萬用戶提供了一站式的應用性能監控、管理及測試服務。