《軟件自動化測試開發(fā)》開放試讀文章

小編說: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è)智庫

喜歡請分享至朋友圈

了解更多圖書詳情請點擊閱讀原文 如下鏈接:

《軟件自動化測試開發(fā)》

長按二維碼輕松關(guān)注

圖片發(fā)自簡書App

圖片發(fā)自簡書App
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末架专,一起剝皮案震驚了整個濱河市同窘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌部脚,老刑警劉巖想邦,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異委刘,居然都是意外死亡丧没,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門锡移,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呕童,“玉大人,你說我怎么就攤上這事淆珊《崴牵” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵施符,是天一觀的道長往声。 經(jīng)常有香客問我,道長戳吝,這世上最難降的妖魔是什么浩销? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮听哭,結(jié)果婚禮上慢洋,老公的妹妹穿的比我還像新娘。我一直安慰自己欢唾,他們只是感情好且警,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著礁遣,像睡著了一般斑芜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祟霍,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天杏头,我揣著相機與錄音,去河邊找鬼沸呐。 笑死醇王,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的崭添。 我是一名探鬼主播寓娩,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棘伴?” 一聲冷哼從身側(cè)響起寞埠,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焊夸,沒想到半個月后仁连,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡阱穗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年饭冬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揪阶。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡昌抠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遣钳,到底是詐尸還是另有隱情扰魂,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布蕴茴,位于F島的核電站劝评,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏倦淀。R本人自食惡果不足惜蒋畜,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撞叽。 院中可真熱鬧姻成,春花似錦、人聲如沸愿棋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糠雨。三九已至才睹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甘邀,已是汗流浹背琅攘。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留松邪,地道東北人坞琴。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像逗抑,于是被迫代替她去往敵國和親剧辐。 傳聞我的和親對象是個殘疾皇子寒亥,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 0.小目標 關(guān)于UI自動化的定義,我想要的是自動地按照流程去點擊頁面荧关、輸入數(shù)據(jù)护盈,不需要人去參與,節(jié)省人工時間羞酗。比如...
    孢子菌閱讀 15,597評論 10 47
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)紊服,斷路器檀轨,智...
    卡卡羅2017閱讀 134,694評論 18 139
  • 前言 做過自動化測試的人應(yīng)該都會有這樣一種體會,要寫個自動化demo測試用例很容易欺嗤,但是要真正將自動化測試落地参萄,對...
    debugtalk閱讀 1,472評論 0 5
  • 前言 做Android端功能自動化已有2年多的時間了,使用過的功能自動化框架有Robotium煎饼、Uiautomat...
    海波筆記閱讀 17,050評論 3 66
  • 第一次嘗試各種失敗讹挎,沒看懂代碼。仔細研讀了下吆玖,發(fā)現(xiàn)有點心得筒溃。一定要從網(wǎng)頁源碼開始,很多流浪器會修飾網(wǎng)頁沾乘,造成根本找...
    陸凱閱讀 360評論 0 0