小編說:Appium 是一個移動端自動化測試開源工具铆农,可以針對不同的平臺用一套API 來編寫測試用例颁股。本文對Appium自動化測試框架的功能進行了概括。
本文選自《軟件自動化測試開發(fā)》,了解本書詳情請點擊閱讀原文抒和。
Appium 框架的功能
(1)支持iOS膳沽、Android汗菜,可在多臺機器上并行App 自動化让禀,測試機型適配。
(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í)行:
從功能測試用例中抽取需重復執(zhí)行的动猬、主要的功能進行用例覆蓋啤斗。
支持用例failed(失敗)時自動截屏赁咙。
failed(失斉チ)用例自動重復執(zhí)行數(shù)遍。
(4)持續(xù)集成環(huán)境Jenkins彼水,定時自動構(gòu)建和執(zhí)行測試任務(wù)崔拥。
測試結(jié)果報告展示,自動郵件展示凤覆。
Appium 自動化測試一個App 的基本過程如下:
測試App 的基本過程
基于Appium 自動化測試框架链瓦,我們要進行的是連接電腦、連接手機盯桦、解鎖慈俯、安裝App、卸載App拥峦、啟動App贴膘、元素定位、元素的操作略号、屏幕的操作刑峡、頁面等待、異常處理截圖玄柠、數(shù)據(jù)校驗突梦、日志、報告等一系列自動化測試執(zhí)行的詳細過程羽利。
Appium 自動化框架元素控件的捕獲宫患,根據(jù)捕獲到的元素控件進行相應(yīng)的操作。
Appium 元素控件有多種定位方法铐伴,最常用的是元素的ID(即By.id)和元素的值(即By.name)撮奏。還可以通過元素類型TagName俏讹、元素的位置XPath、手機設(shè)備的坐標等進行定位操作畜吊。安卓的元素控件可以通過SDK 中的uiautomatorviewer.bat 文件進行錄制和捕獲定位泽疆,如下圖所示。
上圖中玲献,Node Detail 下面的resource-id com.test.seller:id/phone_edit1 對應(yīng)Excel 和代碼中的定位方法By.id殉疼,控件元素數(shù)據(jù)text 13798359580 對應(yīng)Excel 和代碼中的操作方法sendkeys(),控件元素賦值數(shù)據(jù)為13798359580捌年。
可以這樣理解:首先找到這個文本框瓢娜,接著給這個文本框輸入數(shù)據(jù)。即通過ID屬性值com.test.seller:id/phone_edit1礼预,找到此用戶名文本框的控件元素眠砾,然后通過sendkeys()方法輸入用戶名數(shù)據(jù)13798359580 到此用戶名文本。其他自動化測試步驟的定位方法托酸、控件元素以及操作方法也都與此類似褒颈。實際上,自動化測試就是通過程序代碼來實現(xiàn)模擬手動測試去操作一遍的過程励堡。
上面介紹了用戶名文本框輸入用sendkeys()方法谷丸,那么其他元素的操作方法有哪些呢?元素操作方法大致有單擊(click)应结、輸入(sendkeys)刨疼、元素滑動 、頁面滑動鹅龄、長按揩慕、下拉、彈出扮休、屏幕放大縮小等漩绵,最常用的就是單擊和輸入。
數(shù)據(jù)校驗肛炮。其實元素本身就是數(shù)據(jù)校驗,當程序找不到元素時宝踪,用例就會失敗侨糟。
另外,測試用例時可以加入一個或多個斷言進行驗證數(shù)據(jù)瘩燥,還可設(shè)置步驟等待延遲時間秕重。
測試結(jié)果。測試用例中記錄了運行后的測試結(jié)果厉膀,如pass溶耘、failed 或是skip二拐。
(此部分會在《軟件自動化測試開發(fā)》第4章中進行詳細講解)
Appium 介紹(參考Appium 官方資料)
Appium 是一個移動端自動化測試開源工具,支持iOS 和Android 平臺凳兵,支持Python百新、Java 等語言,即同一套Java 或Python 腳本可以同時運行在iOS 和Android平臺庐扫。
Appium 是跨平臺的饭望,即可以針對不同的平臺用一套API 來編寫測試用例。
Appium 是一個C/S 架構(gòu)形庭,核心是一個 Web 服務(wù)器铅辞,它提供了一套 REST 的接口。當收到客戶端的連接后萨醒,就會監(jiān)聽到命令斟珊,然后在移動設(shè)備上執(zhí)行這些命令,最后將執(zhí)行結(jié)果放在 HTTP 響應(yīng)中返還給客戶端富纸。
Session
自動化始終圍繞一個Session(會話)進行囤踩。客戶端初始化一個Session 來與服務(wù)端交互胜嗓,不同的語言有不同的實現(xiàn)方式高职,但是它們最終都是發(fā)送一個POST 請求給服務(wù)端,請求中包含一個JSON 對象辞州,其被稱作“Desired Capabilities”怔锌。此時,服務(wù)端就會開啟一個自動化的 Session变过,然后返回一個Session ID埃元,Session ID 將會被用戶發(fā)送后續(xù)的命令。
Desired Capabilities
Desired Capabilities 是一些鍵值對的集合(比如一個 map 或者 hash)媚狰〉荷保客戶端將這些鍵值對發(fā)送給服務(wù)端,告訴服務(wù)端我們想要怎樣測試崭孤。比如类嗤,我們可以把platformName capability 設(shè)置為 iOS,告訴Appium 服務(wù)端辨宠,我們想要一個iOS 的session遗锣,而不是一個 Android 的session。
Appium Server 服務(wù)端
Appium Server 是用 Node.js 寫的嗤形,我們既可以用源碼編譯精偿,也可以從 NPM 直接安裝。
Appium 服務(wù)端有很多語言庫,如 Java笔咽、Ruby搔预、Python、PHP叶组、JavaScript 以及C#等拯田,這些庫都實現(xiàn)了 Appium 對 WebDriver 協(xié)議的擴展。當使用 Appium 的時候扶叉,你只需使用這些庫代替常規(guī)的 WebDriver 庫就可以了勿锅。
Appium Clients 客戶端
此客戶端的概念不是我們傳統(tǒng)意義上的客戶端,更好的理解方式是一個擴展的WebDriver 協(xié)議庫枣氧,當你用自己喜歡的語言寫case 時溢十,會將該語言擴展的WebDrvier庫添加到自己的環(huán)境中,這時你可以把它理解為這就是個客戶端达吞。
Appium Clients 客戶端的安裝包如下张弛。
Mac 機器上直接運行Appium.dmg;Windows 機器上運行Appium.exe酪劫。
Appium Android/iOS 工作原理
API 接口調(diào)用Selenium 的接口吞鸭,Appium Server 接收WebDriver 標準請求,解析請求內(nèi)容覆糟,調(diào)用對應(yīng)的框架響應(yīng)操作刻剥。代碼將DesiredCapability 中的鍵值對組合成一個JSON,然后通過HTTP 協(xié)議發(fā)送到Appium服務(wù)器創(chuàng)建一個session滩字。代碼與Appium的所有交互都是圍繞著這個session 進行的造虏。session 創(chuàng)建成功后,Appium 再通過USB接口與手機之間創(chuàng)建TCP 連接麦箍,先安裝一些服務(wù)端App漓藕,比如Android API 4.2+是uiautomator,Android 2.3+是Instrumentation挟裂;如果是iOS享钞,則是UiAutomation。手機的操作都是由Appium 發(fā)送指令到uiautomator诀蓉,然后再由uiautomator 進行控制的栗竖。
Appium 原理圖如下。
Appium 的核心是一個遵守REST 設(shè)計風格的Web 服務(wù)器渠啤,它接收客戶端的連接和命令划滋,在手機設(shè)備上執(zhí)行命令,然后通過HTTP 的響應(yīng)收集命令執(zhí)行的結(jié)果埃篓。這種架構(gòu)給我們提供了很好的開放特性:只要某種語言有HTTP 客戶端的API,我們就可以通過這個語言寫自己的測試代碼根资。
-----------------------------------------------------------
博文視點
您閱讀的專業(yè)智庫
喜歡請分享至朋友圈
了解更多圖書詳情請點擊閱讀原文 如下鏈接:
長按二維碼輕松關(guān)注