【移動應(yīng)用開發(fā)技術(shù)】Appium移動自動化框架_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Appium移動自動化框架_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Appium移動自動化框架_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Appium移動自動化框架

引言:Appium是一個移動端自動化測試開源工具,可以針對不同的平臺用一套API來編寫測試用例。本文對Appium自動化測試框架的功能進(jìn)行了概括。本文選自《軟件自動化測試開發(fā)》。引言:Appium是一個移動端自動化測試開源工具,可以針對不同的平臺用一套API來編寫測試用例。本文對Appium自動化測試框架的功能進(jìn)行了概括。本文選自《軟件自動化測試開發(fā)》。(1)支持iOS、Android,可在多臺機(jī)器上并行App自動化,測試機(jī)型適配。

(2)代碼實現(xiàn)關(guān)鍵字驅(qū)動:測試集:關(guān)聯(lián)Excel測試用例和腳本配置。測試數(shù)據(jù):Excel存儲輸入數(shù)據(jù)、控件元素、測試結(jié)果。測試腳本:由Java和TestNG編寫,分層結(jié)構(gòu)有case、log、config、report以及data等。(3)自動測試用例執(zhí)行:從功能測試用例中抽取需重復(fù)執(zhí)行的、主要的功能進(jìn)行用例覆蓋。支持用例failed(失?。r自動截屏。failed(失?。┯美詣又貜?fù)執(zhí)行數(shù)遍。(4)持續(xù)集成環(huán)境Jenkins,定時自動構(gòu)建和執(zhí)行測試任務(wù)。測試結(jié)果報告展示,自動郵件展示。Appium自動化測試一個App的基本過程如下:測試App的基本過程基于Appium自動化測試框架,我們要進(jìn)行的是連接電腦、連接手機(jī)、解鎖、安裝App、卸載App、啟動App、元素定位、元素的操作、屏幕的操作、頁面等待、異常處理截圖、數(shù)據(jù)校驗、日志、報告等一系列自動化測試執(zhí)行的詳細(xì)過程。

Appium自動化框架元素控件的捕獲,根據(jù)捕獲到的元素控件進(jìn)行相應(yīng)的操作。

Appium元素控件有多種定位方法,最常用的是元素的ID(即By.id)和元素的值(即B)。還可以通過元素類型TagName、元素的位置XPath、手機(jī)設(shè)備的坐標(biāo)等進(jìn)行定位操作。安卓的元素控件可以通過SDK中的uiautomatorviewer.bat文件進(jìn)行錄制和捕獲定位,如下圖所示。

上圖中,NodeDetail下面的resource-idcom.test.seller:id/phone_edit1對應(yīng)Excel和代碼中的定位方法By.id,控件元素數(shù)據(jù)tex應(yīng)Excel和代碼中的操作方法sendkeys(),控件元素賦值數(shù)據(jù)

可以這樣理解:首先找到這個文本框,接著給這個文本框輸入數(shù)據(jù)。即通過ID屬性值com.test.seller:id/phone_edit1,找到此用戶名文本框的控件元素,然后通過sendkeys()方法輸入用戶名數(shù)此用戶名文本。其他自動化測試步驟的定位方法、控件元素以及操作方法也都與此類似。實際上,自動化測試就是通過程序代碼來實現(xiàn)模擬手動測試去操作一遍的過程。

上面介紹了用戶名文本框輸入用sendkeys()方法,那么其他元素的操作方法有哪些呢?元素操作方法大致有單擊(click)、輸入(sendkeys)、元素滑動、頁面滑動、長按、下拉、彈出、屏幕放大縮小等,最常用的就是單擊和輸入。

數(shù)據(jù)校驗。其實元素本身就是數(shù)據(jù)校驗,當(dāng)程序找不到元素時,用例就會失敗。

另外,測試用例時可以加入一個或多個斷言進(jìn)行驗證數(shù)據(jù),還可設(shè)置步驟等待延遲時間。

測試結(jié)果。測試用例中記錄了運(yùn)行后的測試結(jié)果,如pass、failed或是skip。(此部分會在《軟件自動化測試開發(fā)》第4章中進(jìn)行詳細(xì)講解)/20170105154316311?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast/20170105154323936?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast/20170105154330952?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEastAppium是一個移動端自動化測試開源工具,支持iOS和Android平臺,支持Python、Java等語言,即同一套Java或Python腳本可以同時運(yùn)行在iOS和Android平臺。

Appium是跨平臺的,即可以針對不同的平臺用一套API來編寫測試用例。

Appium是一個C/S架構(gòu),核心是一個Web服務(wù)器,它提供了一套REST的接口。當(dāng)收到客戶端的連接后,就會監(jiān)聽到命令,然后在移動設(shè)備上執(zhí)行這些命令,最后將執(zhí)行結(jié)果放在HTTP響應(yīng)中返還給客戶端。Session自動化始終圍繞一個Session(會話)進(jìn)行??蛻舳顺跏蓟粋€Session來與服務(wù)端交互,不同的語言有不同的實現(xiàn)方式,但是它們最終都是發(fā)送一個POST請求給服務(wù)端,請求中包含一個JSON對象,其被稱作“DesiredCapabilities”。此時,服務(wù)端就會開啟一個自動化的Session,然后返回一個SessionID,SessionID將會被用戶發(fā)送后續(xù)的命令。DesiredCapabilitiesDesiredCapabilities是一些鍵值對的集合(比如一個map或者h(yuǎn)ash)??蛻舳藢⑦@些鍵值對發(fā)送給服務(wù)端,告訴服務(wù)端我們想要怎樣測試。比如,我們可以把platformNamecapability設(shè)置為iOS,告訴Appium服務(wù)端,我們想要一個iOS的session,而不是一個Android的session。AppiumServer服務(wù)端AppiumServer是用Node.js寫的,我們既可以用源碼編譯,也可以從NPM直接安裝。

Appium服務(wù)端有很多語言庫,如Java、Ruby、Python、PHP、JavaScript以及C#等,這些庫都實現(xiàn)了Appium對WebDriver協(xié)議的擴(kuò)展。當(dāng)使用Appium的時候,你只需使用這些庫代替常規(guī)的WebDriver庫就可以了。AppiumClients客戶端此客戶端的概念不是我們傳統(tǒng)意義上的客戶端,更好的理解方式是一個擴(kuò)展的WebDriver協(xié)議庫,當(dāng)你用自己喜歡的語言寫case時,會將該語言擴(kuò)展的WebDrvier庫添加到自己的環(huán)境中,這時你可以把它理解為這就是個客戶端。

AppiumClients客戶端的安裝包如下。

Mac機(jī)器上直接運(yùn)行Appium.dmg;Windows機(jī)器上運(yùn)行Appium.exe。AppiumAndroid/iOS工作原理API接口調(diào)用Selenium的接口,AppiumServer接收WebDriver標(biāo)準(zhǔn)請求,解析請求內(nèi)容,調(diào)用對應(yīng)的框架響應(yīng)操作。代碼將DesiredCapability中的鍵值對組合成一個JSON,然后通過HTTP協(xié)議發(fā)送到Appium服務(wù)器創(chuàng)建一個session。代碼與Appium的所有交互都是圍繞著這個session進(jìn)行的。session創(chuàng)建成功后,Appium再通過USB接口與手機(jī)之間創(chuàng)建TCP連接,先安裝一些服務(wù)端App,比如AndroidAPI4.2+是uiautomator,Android2.3+是Instrumentation;如果是iOS,則是UiAutomation。手機(jī)的操作都是由Appium發(fā)送指令到uiautomator,然后再由uiautomator進(jìn)行控制的。

Appium原理圖如下。

Appium的核心是一個遵守REST設(shè)計風(fēng)格的Web服務(wù)器,它接收客戶端的連接和命令,在手機(jī)設(shè)備上執(zhí)行命令,然后通過HTTP的響應(yīng)收集命令執(zhí)行的結(jié)果。這種架構(gòu)給我們提供了很好的開放特性:只要某種語言有HTTP客戶端的API,我們就可以通過這個語言寫自己的測試代碼。

本文選自《軟件自動化測試開發(fā)》,點此鏈接可在博文視點官網(wǎng)查看。

/20170105154346427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnJvYWR2aWV3MjAwNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQk

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論