自動(dòng)化測(cè)試,利用自動(dòng)化測(cè)試工具,通過(guò)錄制/編程方式實(shí)現(xiàn)測(cè)試活動(dòng),發(fā)現(xiàn)被測(cè)對(duì)象存在的缺陷,從而替代手工測(cè)試活動(dòng)。自動(dòng)化測(cè)試不局限于某個(gè)具體測(cè)試階段,也不局限被測(cè)對(duì)象的類型,只要滿足自動(dòng)化測(cè)試的必要條件即可實(shí)施。
自動(dòng)化測(cè)試條件
自動(dòng)化測(cè)試與手工測(cè)試不同,工具不具備主觀能動(dòng)性,無(wú)法針對(duì)被測(cè)對(duì)象的現(xiàn)狀做出智能判斷(至少目前尚不能),無(wú)法像人一樣具體問(wèn)題具體分析,因此,在測(cè)試過(guò)程中實(shí)施自動(dòng)化測(cè)試,必須具備以下幾個(gè)條件。
(1)長(zhǎng)期項(xiàng)目或者產(chǎn)品,需求變化較小,UI相對(duì)穩(wěn)定;
(2)機(jī)械或頻繁的業(yè)務(wù)操作;
(3)系統(tǒng)接口劃分清晰,可獨(dú)立運(yùn)行或者設(shè)置擋板程序模擬運(yùn)行;
(4)測(cè)試活動(dòng)開(kāi)展初期制定自動(dòng)化測(cè)試策略;
(5)有足夠的人力/財(cái)力投入
根據(jù)被測(cè)系統(tǒng)的結(jié)構(gòu)形式,目前業(yè)內(nèi)主要有兩款開(kāi)源的基于UI層面的自動(dòng)化測(cè)試工具應(yīng)用較為廣泛,一是測(cè)試Web結(jié)構(gòu)的Selenium,二是測(cè)試移動(dòng)應(yīng)用結(jié)構(gòu)的Appium。商用的自動(dòng)化測(cè)試工具則是HP公司生產(chǎn)的UFT(Unified Functional Testing)相對(duì)應(yīng)用較為廣泛,但業(yè)內(nèi)未來(lái)的應(yīng)用趨勢(shì)是首選開(kāi)源軟件,因此本書(shū)不介紹Selenium和Appium之外的自動(dòng)化測(cè)試工具。
1.1 Selenium
Selenium由 thoughtworks公司研發(fā)、提供了豐富測(cè)試函數(shù)用于實(shí)施Web自動(dòng)化的一款非常流行的測(cè)試工具。Selenium直接運(yùn)行于瀏覽器中,更真實(shí)的模擬了用戶的業(yè)務(wù)行為,驗(yàn)證被測(cè)對(duì)象的功能表現(xiàn)及在不同瀏覽器中的兼容性特性。與傳統(tǒng)的自動(dòng)化測(cè)試工具不同,Selenium沒(méi)有獨(dú)立的操作UI界面,支持更多的編程語(yǔ)言,如Java、Python等,更為簡(jiǎn)潔與快捷,易于測(cè)試工程師掌握應(yīng)用。
Selenium實(shí)際上不是一個(gè)測(cè)試工具,而是一個(gè)工具集,其主要由三個(gè)核心組件構(gòu)成:Selenium IDE、Selenium RC(Remote Control )及Selenium Grid。
1.Selenium IDE
Selenium開(kāi)發(fā)測(cè)試腳本的集成開(kāi)發(fā)環(huán)境,像FireFox的一個(gè)插件,可以錄制/回放用戶的基本操作,生成測(cè)試用例,運(yùn)行單個(gè)測(cè)試用例或測(cè)試用例集。
2.Selenium Remote Control (RC)
支持多種平臺(tái)(Windows、Linux)和多種瀏覽器(IE、FireFox、Opera、Safari),可以用多種語(yǔ)言(Java,Ruby,Python,Perl,PHP,C#)編寫(xiě)測(cè)試用例。Selenium為這些語(yǔ)言提供了不同的API及開(kāi)發(fā)庫(kù),便于自動(dòng)編譯環(huán)境集成,從而構(gòu)建高效的自動(dòng)化測(cè)試框架。
現(xiàn)在我也找了很多測(cè)試的朋友,做了一個(gè)分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗(yàn)自學(xué)時(shí)找不到資源,沒(méi)人解答問(wèn)題,堅(jiān)持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動(dòng)化,性能,安全,測(cè)試開(kāi)發(fā)等等方面有一定建樹(shù)的技術(shù)大牛
分享他們的經(jīng)驗(yàn),還會(huì)分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點(diǎn)!開(kāi)源的?。。?qq群號(hào):691998057【暗號(hào):csdn999】
3.Selenium Grid
允許Selenium-RC 針對(duì)規(guī)模龐大的測(cè)試案例集或者需要在不同環(huán)境中運(yùn)行的測(cè)試案例集進(jìn)行擴(kuò)展。這樣,許多的測(cè)試集可以并行運(yùn)行,從而提高測(cè)試效率。
Selenium自2004年誕生以來(lái),從經(jīng)歷了三個(gè)大版本變化:Selenium 1、Selenium 2及Selenium 3。Selenium 2又稱為WebDriver,WebDriver對(duì)瀏覽器的支持需要對(duì)應(yīng)框架開(kāi)發(fā)工程師做對(duì)應(yīng)的開(kāi)發(fā),Selenium必須操作真實(shí)瀏覽器,但是WebDriver可以用HTML Unit Driver來(lái)模擬瀏覽器,在內(nèi)存中執(zhí)行用例,更加輕便。Selenium 1中測(cè)試工程師使用Selenium IDE錄制開(kāi)發(fā)對(duì)應(yīng)的測(cè)試腳本,但在WebDriver中,僅需引入對(duì)應(yīng)的API,即可利用Java或Python等語(yǔ)言開(kāi)發(fā)工具進(jìn)行測(cè)試腳本開(kāi)發(fā),Selenium IDE漸漸被放棄。
利用Selenium進(jìn)行Web自動(dòng)化測(cè)試時(shí),可采用Python語(yǔ)言,Python常用的開(kāi)發(fā)平臺(tái)為PyCharm。PyCharm是由JetBrains打造的一款Python IDE,功能齊全,編譯方便,目前軟件測(cè)試行業(yè)應(yīng)用其做Python腳本開(kāi)發(fā)較多。
Selenium與基于UI層面的自動(dòng)化測(cè)試工具相比更為簡(jiǎn)單,無(wú)須管理太多的對(duì)象,被測(cè)對(duì)象如果前端設(shè)計(jì)相對(duì)規(guī)范的話,自動(dòng)化腳本開(kāi)發(fā)相對(duì)較為容易。
Selenium本身?yè)碛蟹浅?qiáng)大的功能,因?yàn)槠邢?,本文僅做簡(jiǎn)要介紹,感興趣的讀者可通過(guò)官網(wǎng)或者聯(lián)系作者,學(xué)習(xí)更多更實(shí)用的技能。
1.2 Appium
Web系統(tǒng)自動(dòng)化因?yàn)闅v史悠久,發(fā)展相對(duì)成熟,而移動(dòng)應(yīng)用自動(dòng)化測(cè)試則是最近幾年才流行起來(lái),兩者在測(cè)試技術(shù)上存在一些差異。
1. 測(cè)試工具不同
在Web測(cè)試上,測(cè)試人員一般使用UFT或者是Selenium等作為自動(dòng)化測(cè)試工具,而在移動(dòng)應(yīng)用上一般采用Selenroid或者Appium等工具作為自動(dòng)化測(cè)試工具
2. 測(cè)試平臺(tái)不同
在Web測(cè)試上一般測(cè)試平臺(tái)為Windows、Mac、Linux上,移動(dòng)應(yīng)用關(guān)注平臺(tái)為iOS、Android、FirefoxOS等
3. 技術(shù)成熟度不同
因Web與桌面應(yīng)用程序比移動(dòng)應(yīng)用出生時(shí)間較早,自動(dòng)化測(cè)試工具比移動(dòng)應(yīng)用自動(dòng)化工具更加成熟。移動(dòng)端的自動(dòng)化測(cè)試仍需時(shí)間發(fā)展革新。
Appium支持Selenium WebDriver支持的所有語(yǔ)言,如Java、Object-C、JavaScript、Php、Python、Ruby、C#或者Perl語(yǔ)言,更可以使用Selenium WebDriver的Api,實(shí)現(xiàn)了真正的跨平臺(tái)自動(dòng)化測(cè)試。
1. Appium工作原理
Appium支持Android及iOS平臺(tái)的App測(cè)試,兩者的運(yùn)行原理大體相同。
(1)Android平臺(tái)
①由Client發(fā)起請(qǐng)求,經(jīng)過(guò)中間服務(wù)套件,驅(qū)動(dòng)App執(zhí)行相關(guān)的操作。 Client是測(cè)試人員開(kāi)發(fā)的WebDriver測(cè)試腳本。
②中間服務(wù)套件則是Appium解析服務(wù),Appium在服務(wù)端啟用4723端口,通過(guò)該端口實(shí)現(xiàn)Client與Appium Server通信。Appium Server把請(qǐng)求轉(zhuǎn)發(fā)給中間件Bootstrap.jar。Bootstrap.jar安裝在手機(jī)上.Bootstrap監(jiān)聽(tīng)4724端口并接收Appium 命令,最終通過(guò)調(diào)?用UIAutomator命令來(lái)實(shí)現(xiàn)測(cè)試過(guò)程。
③Bootstrap將執(zhí)行的結(jié)果返回給Appium Server。Appium Server再將結(jié)果返回給Client。
(2)iOS平臺(tái)
①由Client發(fā)起請(qǐng)求,經(jīng)過(guò)中間服務(wù)套件,驅(qū)動(dòng)App執(zhí)行相關(guān)的操作。 Client是測(cè)試人員開(kāi)發(fā)的Webdriver測(cè)試腳本。
②中間服務(wù)套件則是Appium解析服務(wù),Appium在服務(wù)端啟用4723端口,通過(guò)該端口實(shí)現(xiàn)Client與Appium Server通信。Appium Server調(diào)用instruments.js 啟動(dòng)一個(gè)Socket Server,同時(shí)分出一個(gè)?進(jìn)程運(yùn)?instruments.app,將bootstrap.js(一個(gè)UIAutomation腳本)注入到設(shè)備從而與外界進(jìn)行交互。
③Bootstrap.js將執(zhí)行的結(jié)果返回給Appium Server,Appium Server再將結(jié)果返回給 Client。
Android與iOS區(qū)別在于Appium 將請(qǐng)求轉(zhuǎn)發(fā)到bootstrap.js或者bootstrap.jar.然后由bootstrap 驅(qū)動(dòng)UIAutomation或UIAutomator去設(shè)備上完成具體的動(dòng)作。
2. Appium腳本架構(gòu)
進(jìn)行Appium自動(dòng)化測(cè)試之前,需啟動(dòng)Appium及被測(cè)對(duì)象,啟動(dòng)了Appium客戶端后,利用編程工具執(zhí)行腳本時(shí),Appium才能將腳本與被測(cè)設(shè)備建立聯(lián)接,從而實(shí)現(xiàn)自動(dòng)化測(cè)試。如果不啟動(dòng)客戶端,則不能使用WebDriver。
腳本中需首先導(dǎo)入WebDriver,然后配置Server,告訴Appium測(cè)試環(huán)境。使用Desired_caps函數(shù)進(jìn)行設(shè)備聯(lián)接信息。
以Android為例,設(shè)備聯(lián)接參數(shù)主要有以下常用參數(shù):
(1) desired_caps={}:設(shè)備參數(shù)信息,聲明為一個(gè)字典
(2) desired_caps['platformName']:應(yīng)用平臺(tái)的類型,通常為Android、IOS或FirefoxOS
(3) desired_caps['platformVersion']:被測(cè)設(shè)備系統(tǒng)版本,此處使用的是Android 4.4.2版本
(4) desired_caps['deviceName']:設(shè)備名稱,通常為手機(jī)類型或模擬器模擬。通過(guò)adb devices查看。
(5) desired_caps['appPackage']:Android 應(yīng)用程序包的包名,如此處的'com.test.ride'
(6) desired_caps['appActivity']:Android應(yīng)用包中需啟動(dòng)的Activity名稱,通常需要最先聲明。Activity可通過(guò)源代碼直接看到,如果沒(méi)有源代碼,則可以反向編譯或者通過(guò)打印的方式檢測(cè)。
(7) desired_caps['unicodeKeyboard']:設(shè)置鍵盤(pán)輸入法類型為unicode,默認(rèn)值為False
(8) desired_caps['resetKeyboard']:Unicode測(cè)試結(jié)束后,重置輸入法到原有狀態(tài)。默認(rèn)值為False。
(9) driver=webdriver.Remote('http://www.ryjiaoyu.com:4723/wd/hub',desired_caps) 設(shè)置監(jiān)聽(tīng)的端口信息。
上述內(nèi)容設(shè)置了Appium與設(shè)備的通信信息。如果相關(guān)信息設(shè)置不正確,則無(wú)法實(shí)施測(cè)試。
3. UIAutomatorviewer查找元素
利用Appium實(shí)現(xiàn)App自動(dòng)化測(cè)試時(shí),與Selenium測(cè)試Web系統(tǒng)一樣,同樣需要定位UI中的元素,在Android-Sdk中提供了UIAutomatorviewer工具用來(lái)查看UI中的元素。
UIAutomatorviewer在Android-Sdk安裝目錄中的tools中,名稱為UIAutomatorviewer.bat。啟動(dòng)后的界面如圖1-1所示。
圖1-1UIAutomatorviewer啟動(dòng)界面
當(dāng)真機(jī)或模擬器沒(méi)有啟動(dòng)時(shí),UIAutomatorviewer無(wú)法實(shí)現(xiàn)UI界面同步。因此,使用UIAutomatorviewer識(shí)別對(duì)象時(shí),需先連接真機(jī)或啟動(dòng)模擬器。這里以模擬器為例。
啟動(dòng)Android-Sdk自帶的模擬器AVD Manager,創(chuàng)建Android模擬機(jī),如圖1-2所示。
圖1-2創(chuàng)建Android模擬機(jī)
創(chuàng)建完成后啟動(dòng)該模擬機(jī),如圖1-3所示。
圖1-3 虛擬機(jī)成功啟動(dòng)界面
虛擬機(jī)啟動(dòng)后,在cmd窗口中通過(guò)adb devices檢查是否成功識(shí)別該設(shè)備。如圖1-4所示。
圖1-4設(shè)備成功識(shí)別界面
虛擬機(jī)被成功識(shí)別后,即可運(yùn)行UIAutomatorviewer通信虛擬機(jī),獲取App信息。如圖1-5所示。
圖1-5同步App UI信息
此時(shí)即可進(jìn)行App元素識(shí)別,便于后續(xù)的Appium腳本編程。
4. Hierarchyviewer
在設(shè)置設(shè)備啟動(dòng)參數(shù)時(shí),需確定被測(cè)對(duì)象的Activity,Android-Sdk開(kāi)發(fā)包提供了hierarchyviewer.bat方便測(cè)試人員查找App的Activity。Hierarchyviewer.bat在Android-Sdk的tools目錄下。
進(jìn)入Android-Sdk的tools目錄,雙擊Hierarchyviewer.bat,如果聯(lián)接了真機(jī)或啟動(dòng)了虛擬機(jī),Hierarchyviewer將會(huì)自動(dòng)獲取設(shè)備主屏信息,如圖1-6所示。
圖1-6獲取App Activity信息
上圖顯示了虛擬機(jī)中App的Activity為:
com.choucheng.ride.ui.activity.login.LoginActivity
通過(guò)上面的相關(guān)介紹,設(shè)置設(shè)備啟動(dòng)信息如下:
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='4.4.2'
desired_caps['deviceName']='hzdl'
desired_caps['appPackage']='com.test.ride'
desired_caps['appActivity']='com.choucheng.ride.ui.activity.login.LoginActivity'
desired_caps['unicodeKeyboard']='Ture'
desired_caps['resetKeyboard']='Ture'
driver=webdriver.Remote('http:// http://www.ryjiaoyu.com:4723/wd/hub',desired_caps)
5. Appium與UnitTest
與Selenium一樣,Appium同樣可以使用UnitTest實(shí)施測(cè)試組織。
6. Appium與HTMLTestRunner
Appium除了可以利用UnitTest外,還可以使用HTMLTestRunner處理測(cè)試報(bào)告,具體應(yīng)用方法與Selenium相同,這里不做過(guò)多闡述。
下面是配套資料,對(duì)于做【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過(guò)了最艱難的路程,希望也能幫助到你!
最后: 可以在公眾號(hào):自動(dòng)化測(cè)試?yán)纤緳C(jī)?! 免費(fèi)領(lǐng)取一份216頁(yè)軟件測(cè)試工程師面試寶典文檔資料。以及相對(duì)應(yīng)的視頻學(xué)習(xí)教程免費(fèi)分享!,其中包括了有基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫(kù)、抓包工具專題、接口測(cè)試工具、測(cè)試進(jìn)階-Python編程、Web自動(dòng)化測(cè)試、APP自動(dòng)化測(cè)試、接口自動(dòng)化測(cè)試、測(cè)試高級(jí)持續(xù)集成、測(cè)試架構(gòu)開(kāi)發(fā)測(cè)試框架、性能測(cè)試、安全測(cè)試等。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-847497.html
如果我的博客對(duì)你有幫助、如果你喜歡我的博客內(nèi)容,請(qǐng) “點(diǎn)贊” “評(píng)論” “收藏” 一鍵三連哦!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-847497.html
到了這里,關(guān)于阿里P8解析自動(dòng)化測(cè)試工具 —— Selenium&Appium!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!