時(shí)間:2022-07-18 13:39:01 | 來(lái)源:建站知識(shí)
時(shí)間:2022-07-18 13:39:01 來(lái)源:建站知識(shí)
互聯(lián)網(wǎng)產(chǎn)品的迭代速度遠(yuǎn)高于傳統(tǒng)軟件,尤其是移動(dòng)APP不但更新頻繁,還需要在不同硬件、系統(tǒng)版本的環(huán)境下進(jìn)行大量兼容測(cè)試,這就給傳統(tǒng)測(cè)試方法和測(cè)試工具帶來(lái)了巨大挑戰(zhàn)。為滿足產(chǎn)品敏捷開發(fā)、快速迭代的需求,自動(dòng)化測(cè)試逐漸流行起來(lái)。自動(dòng)化測(cè)試是把以人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過(guò)程。
自動(dòng)化測(cè)試的優(yōu)點(diǎn)很多,簡(jiǎn)單羅列幾條:避免重復(fù)工作、提高測(cè)試效率、保證每次測(cè)試地一致性和可重復(fù)性、更好的利用資源(周未/晚上的資源空閑時(shí)段)、節(jié)省人力資源、增加軟件信任度、縮短軟件開發(fā)測(cè)試周期讓產(chǎn)品更快投放市場(chǎng)、提高軟件測(cè)試的準(zhǔn)確度和精確度,添加軟件信任度。
并不是任何應(yīng)用產(chǎn)品都適合做自動(dòng)化測(cè)試,選擇自動(dòng)化測(cè)試之前必須確認(rèn)你的項(xiàng)目符合以下要求:軟件需求變動(dòng)不頻繁、產(chǎn)品更新維護(hù)周期長(zhǎng)、比較頻繁的回歸測(cè)試、自動(dòng)化測(cè)試腳本可重復(fù)使用,否則光是準(zhǔn)備大量的測(cè)試腳本就足以讓測(cè)試人員崩潰。
自動(dòng)化測(cè)試的主要類型
1、基于代碼的自動(dòng)化測(cè)試,在方法上可以分為白盒測(cè)試和灰盒測(cè)試
白盒測(cè)試的特點(diǎn):
1)白盒測(cè)試深入被測(cè)代碼的邏輯細(xì)節(jié)
2)白盒測(cè)試關(guān)注代碼覆蓋率和運(yùn)行路徑
3)白盒測(cè)試通過(guò)測(cè)試樁(Stub,Mock)實(shí)現(xiàn)代碼隔離
4)白盒測(cè)試通過(guò)測(cè)試驅(qū)動(dòng)(Test Fixture)執(zhí)行測(cè)試用例
灰盒測(cè)試的特點(diǎn):
1)灰盒測(cè)試關(guān)注接口與參數(shù),不關(guān)注代碼實(shí)現(xiàn)
2)灰盒測(cè)試適用白盒測(cè)試用例設(shè)計(jì)方法
2、基于界面的自動(dòng)化測(cè)試
1)利用代碼或工具模擬鼠標(biāo)和鍵盤的操作
2)界面級(jí)自動(dòng)化測(cè)試的核心是對(duì)象識(shí)別和操作
3)工具比較多,如:Selenium/QTP等
3、協(xié)議級(jí)自動(dòng)化測(cè)試
1)代碼級(jí)自動(dòng)化測(cè)試更多的用于服務(wù)端
2)界面級(jí)自動(dòng)化測(cè)試更多的用于客戶端
3)協(xié)議自動(dòng)化測(cè)試用于測(cè)試客戶端和服務(wù)端之間的通信,彌補(bǔ)代碼級(jí)和界面級(jí)的不足
4)協(xié)議級(jí)自動(dòng)化測(cè)試更適合于可靠性、安全性、性能等測(cè)試
本文將為您介紹基于界面的自動(dòng)化測(cè)試。
1、web UI自動(dòng)化過(guò)程
2、工具的選擇
B/S:
WebDriver 優(yōu)點(diǎn):使用最廣范的開源框架 缺點(diǎn):需要寫代碼,入門門檻相對(duì)較高
QTP 優(yōu)點(diǎn):可以錄制腳本支持C/S架構(gòu) 缺點(diǎn):商業(yè)工具,VBS過(guò)時(shí)語(yǔ)言
C/S:
QTP
按鍵精靈
AutoIT 等等
APP:
1、Android:
UIAutomator 谷歌官方提供,只能做原生APP的自動(dòng)化測(cè)試,語(yǔ)言java
Monkey 理論上不算UI自動(dòng)測(cè)試框架,更大作用測(cè)試app的穩(wěn)定性
MonkeyRunner 可錄制,但是腳本根據(jù)坐標(biāo)軸定位,兼容性差
Robotium 使用的人較多,文檔也比較齊全,也支持webview,不支持跨進(jìn)程, 語(yǔ)言java
Appium 支持Hybrid app,也支持跨進(jìn)程,可以用眾多語(yǔ)言編寫腳本java,ruby,python,c#……目前不支持安卓toast的獲取
Calabash 語(yǔ)言Java ,底層Robotium 同樣不支持跨進(jìn)程
2、IOS
UIAutomation 蘋果自家的
Appium 同時(shí)支持android, 提供的api也基本一致,代碼復(fù)用率高
Calabash 同時(shí)支持android, 提供的api也基本一致,代碼復(fù)用率高
我選擇的是哪個(gè)工具呢?答案是:Webdriver +Python,原因如下:
1)Webdriver (Selenium2)是一種用于Web應(yīng)用程序的自動(dòng)測(cè)試工具,它提供了一套友好的API,主要實(shí)現(xiàn):模擬人使用web應(yīng)用,自動(dòng)的打開瀏覽器、打開應(yīng)用、進(jìn)入應(yīng)用進(jìn)行各種模擬業(yè)務(wù)操作等等,且免費(fèi),小巧,支持多語(yǔ)言的開發(fā),支持多平臺(tái)。與Selenium 1(Selenium-RC)相比,Selenium 2的API更容易理解和使用,其可讀性和可維護(hù)性也大大提高。Webdriver完全就是一套類庫(kù),不依賴于任何測(cè)試框架,除了必要的瀏覽器驅(qū)動(dòng),不需要啟動(dòng)其他進(jìn)程或安裝其他程序,也不必像Selenium 1那樣需要先啟動(dòng)服務(wù)。
另外,二者所采用的技術(shù)方案也不同。Selenium 1是在瀏覽器中運(yùn)行 JavaScript來(lái)進(jìn)行測(cè)試,而Selenium 2則是通過(guò)原生瀏覽器支持或者瀏覽器擴(kuò)展直接控制瀏覽器。
Selenium 2針對(duì)各個(gè)瀏覽器而開發(fā)的,它取代了嵌入到被測(cè)Web應(yīng)用中的 JavaScript。與瀏覽器的緊密集成,支持創(chuàng)建更高級(jí)的測(cè)試,避免了JavaScript安全模型的限制。除了來(lái)自瀏覽器廠商的支持,Selenium 2 還利用操作系統(tǒng)級(jí)的調(diào)用模擬用戶輸入。WebDriver 支持Firefox (FirefoxDriver)、IE(InternetExplorerDriver)、Opera(OperaDriver)、Chrome (ChromeDriver)以及safari(SafariDriver)。
它還支持Android(Selendroid)和iPhone(Appium)的移動(dòng)應(yīng)用測(cè)試。此外,Selenium 2還包括基于HtmlUnit的無(wú)界面實(shí)現(xiàn),稱為HtmlUnitDriver,和基于webkit的無(wú)界面瀏覽器phantomjs。Selenium 2 API可以通過(guò) Java、C#、PHP、Python、Perl、Ruby等編程語(yǔ)言訪問(wèn),支持開發(fā)人員使用他們常用的編程語(yǔ)言來(lái)創(chuàng)建測(cè)試。
2)Python語(yǔ)言易學(xué)
3、Webdriver學(xué)習(xí)路線
搭建測(cè)試環(huán)境
熟悉webdriver API
學(xué)習(xí)元素的定位,selenium 提供了id、name、class name、 tag name、link text、partial link text、 xpath、css、等定位方法。
學(xué)習(xí)各種元素有操作,輸入框,下拉框,按鈕點(diǎn)擊,文件上傳、下載,分頁(yè),對(duì)話框,警告框等等
學(xué)習(xí)編程技術(shù)
學(xué)習(xí)并使用單元測(cè)試框架,單元測(cè)試框架本身就解決了用例的組織與運(yùn)行
生成自己的測(cè)試框架
下面我們從搭建環(huán)境開始練習(xí)一個(gè)實(shí)例!
1、環(huán)境準(zhǔn)備
編輯器: Eclipse + pydev插件
1. Eclipse是寫JAVA的IDE, 這樣就可以通用了,學(xué)習(xí)代價(jià)小。 學(xué)會(huì)了Eclipse, 以后寫Python或者JAVA 都可以。
2. Eclipse, 功能強(qiáng)大。
3. Eclipse跨平臺(tái), 可以在Mac上和Windows運(yùn)行
安裝Python
下載地址:
Python 有 Python 2 和 Python 3 兩個(gè)版本,語(yǔ)法有些區(qū)別,我安裝的是Python 2.7
配置環(huán)境變量
設(shè)置Python的環(huán)境變量:修改我的電腦->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量中的PATH為PATH:“C:/Python27;”
上述環(huán)境變量設(shè)置成功之后,就可以在命令行直接使用python命令。或執(zhí)行"python *.py"運(yùn)行python腳本了。
此時(shí),還是只能通過(guò)"python*.py"運(yùn)行python腳本,若希望直接運(yùn)行*.py,只需再修改另一個(gè)環(huán)境變量PATHEXT為:PATHEXT=PATHEXT;.PY;.PYM
下載setuptools
我的電腦環(huán)境是Win7 32位系統(tǒng),下載的是setuptools-0.6c11.win32-py2.7。setuptools是一個(gè)安裝python包的第三方工具,下載好后直接安裝即可(pip依賴于setuptools的安裝)
軟件下載和安裝說(shuō)明參見頁(yè)面:
安裝pip工具
cmd開啟控制臺(tái),cd命令進(jìn)入到C:/Python27/Scripts> ,執(zhí)行 easy_install pip, 等待完成即可
附:easy_install使用說(shuō)明
安裝套件:
easy_install PackageName
更新套件:
easy_install -U PackageName
移除套件:easy_install -m PackageName
顯示說(shuō)明:
easy_install –showhelp
備注:如果網(wǎng)絡(luò)被墻或者沒連網(wǎng),則上述方法安裝失敗,這種情況下,必須手動(dòng)安裝。
下載得到pip tar.gz文件,這里我用的是pip-1.5.4.tar,解壓,然后到windows的cmd中,進(jìn)入解壓目錄運(yùn)行setup.py install
安裝selenium client Drivers
輸入pip install selenium 或者 pip install –U selenium后回車,等待下載并安裝,如果無(wú)錯(cuò)誤 即安裝成功。
說(shuō)明:如果網(wǎng)絡(luò)被墻或者非連網(wǎng)狀態(tài),那么上述安裝無(wú)效,必須手動(dòng)安裝,步驟如下:
下載selenium包
下載地址:
我下載的是selenium-2.40.0.tar.gz
手動(dòng)下載selenium的安裝包后,右鍵解壓縮,保險(xiǎn)起見,解壓后把整個(gè)目錄放到C:/Python27/Lib/site-packages下
打開CMD窗口,進(jìn)入解壓后的目錄,運(yùn)行命令 Python setup.py install
安裝JAVA JDK
下載地址:
Eclipse 需要這個(gè)安裝好JAVA JDK后才能運(yùn)行
安裝Eclipse
下載地址:
下載完后,解壓就可以直接使用, Eclipse不需要安裝。
pydev插件
pydev插件的官方網(wǎng)站: (不需要下載)
在Eclipse中安裝pydev插件
啟動(dòng)Eclipse, 點(diǎn)擊Help->Install New Software... 在彈出的對(duì)話框中,點(diǎn)Add 按鈕。 Name中填:Pydev, Location中填
然后一步一步裝下去。 如果裝的過(guò)程中,報(bào)錯(cuò)了。 就重新裝。
偶爾直接在線下載有時(shí)候會(huì)有這樣的提示。
解決方法:
在網(wǎng)上直接找低版本的,我用的是pydev3.4下載地址:
解壓文件。將文件夾放到eclipse的安裝錄入里面的features和plugins文件中。
2、動(dòng)手寫一個(gè)實(shí)例(這個(gè)程序的主要功能就是:打開一個(gè)火狐瀏覽器,完成監(jiān)控寶登錄功能的自動(dòng)化測(cè)試。)
1)在eclipse中創(chuàng)建一個(gè)python項(xiàng)目。
進(jìn)入 Pydev 透視圖,在 Eclipse 菜單欄中,選擇 File > New > Project > Pydev > Pydev Project,新建項(xiàng)目:PyCase,單擊 Next。
新建 pyDev Package,Python 包就創(chuàng)建好了,此時(shí),自動(dòng)生成__init__.py 文件,該文件不包含任何內(nèi)容。
創(chuàng)建完 Pydev Package 后,右鍵單擊創(chuàng)建的包Py27,選擇 New->Pydev Module,輸入模塊名稱test.py,點(diǎn)Finish。這樣,Python 模塊就建成了。
修改test.py文件的內(nèi)容如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 2016年7月5日
@author: vivi
'''
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
print "開始"
print "......"
# 實(shí)例化一個(gè)驅(qū)動(dòng)類
profiledir = webdriver.FirefoxProfile(r"/Users/sunying/Library/Application Support/Firefox/Profiles/sr6smerq.default")
# 打開火狐瀏覽器
driver = webdriver.Firefox(profiledir)
#登錄監(jiān)控寶
driver.get("")
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 "結(jié)束"
2)執(zhí)行腳本看效果,見下圖
右擊PythonCase1.py,Run As->Python Run
好了,大功告成, 如果你看到火狐瀏覽器自動(dòng)打開了,并成功登錄了監(jiān)控寶,那么,你已經(jīng)邁出了UI自動(dòng)化的第一步了,恭喜!
關(guān)鍵詞:自動(dòng)化,測(cè)試
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。