iOS自動化測試:Appium 從入門到實踐

因為公司業務需求,最近開始研究自動化測試的內容。由于同時要做 iOS、安卓和 Web 測試,我們最終選擇了 Appium 這個開源工具并基于它做一些封裝,從而能夠使用一套公共 API 完成移動端的雙端測試。本文主要會基于一些開源代碼和個人實踐,對 iOS 端的自動化測試原理做一個簡單介紹,Android 略有區別但也大致同理。

一、Appium介紹

iOS自動化測試一直很神秘,很多人都在探索和找尋最強大的那一款自動化測試工具。個人觀點,沒有最強大只有最適合,適合以后使用熟練了自然功能強大了。寫在正文之前的幾句廢話。說到功能自動化測試一般特指基于UI層面的自動化,本文中介紹的自動化測試框架是UI自動化測試框架,選擇了 Appium 這個開源工具。

1、簡介:

Appium是一個開源的、跨平臺的自動化測試工具,支持IOS、Android和FirefoxOS平臺。 通過Appium,開發者無需重新編譯app或者做任何調整,就可以測試移動應用,可以使測試代碼訪問后端API和數據庫。它是通過驅動蘋果的UIAutomation和Android的UiAutomator框架來實現的雙平臺支持,同時綁定了Selenium WebDriver用于老的Android平臺測試。開發者可以使用WebDriver兼容的任何語言編寫測試腳本,如Ruby,C#,Java, JS,OC, PHP,Python,Perl和Clojure 語言。

iOS自動化工具對比.jpeg
  • 同時支持Android和iOS自動化測試,同一個手機移動項目在同一套自動化測試體系,維護起來方便;
  • 支持多種腳本語言,不會將測試人員限制在某種特定語言或者框架上;
  • 不需要重新編譯應用(APP)或者任何方式修改它就可以進入測試行為;
  • 移動自動測試框架是開源的;
  • Appium社區更活躍、有可能納入Selenium-WebDriver體系,從而成為事實上的移動應用測試標準
2、原理:

Appium提供各個語言的第三方庫,將測試腳本轉化成 WebDriver 協議下的 URL,通過 Node 服務發送到各個平臺上的代理工具,代理工具在運行過程中不斷接收 URL,根據 WebDriver 協議解析出要執行的操作,然后調用各個平臺上的原生測試框架完成測試,再將測試結果返回給 Node 服務器。

iOS平臺原理架構.jpeg

在iOS端,Appium同樣使用WebDriver協議。

  1. Appium iOS封裝了蘋果公司的Instruments框架,主要用了Instrument里的UiAutomation(Apple的自動化測試框架),然后在設備中注入,如下圖所示:


    bootstrap.js進行監聽.png
  2. WebDriver script 是selenium風格的測試腳本;

  3. 中間的是Appium服務,Appium啟動一個服務(4723端口),與Selenium-WebDriver測試框架相類似,Appium支持標準的WebDriver JSONWireProtocol。它提供一套Web服務,Appium Server接收WebDriver標準請求,解析請求內容,調用對應框架相應操作;

  4. Appium Server調用instruments.js啟動一個sock server,同時分出一個子進程運行instruments.app,將bootstrap.js注入到設備用于和外界進行交互;

  • 對于WebView的操作,運用了iOS webkit debug proxy來實現。

二、環境搭建

Mac OS X系統appnium環境安裝步驟:

1、通過命令行安裝Appium***
>brew install node              //get node.js

>npm install -g appium          //get appium

>npm install wd                 //get appium client

>appium &                       //start appium

2、通過應用程序安裝Appium

可以從地址:Appium下載到最新和歷史的Appium安裝應用程序。點擊聽診器logo確認環境是否安裝成功,提示 everything looks good,bye! 表示環境正常。

安裝Appium.png

這個過程可能會碰到配置的問題:

1、node.js的配置;
2、Java Home的配置;
2、Xcode Command工具安裝等等

遇到診斷器診斷出的問題可以自行google解決,我遇到問題的解決時看的博客文章: Appium 自動化—基于 java 的 iOS 環境搭建

三、測試實踐

1、真機調試

準備工作:
① 一個蘋果的開發者ID和有效的開發者對應的配置文件及簽名文件;
② 一臺iPad或者iPhone(把UDID加入證書里);
③ 獲取待測試應用的源碼;
④ 一臺安裝了Xcode和Xcode Command Line Developer Tools的Mac機器。
Appium設置界面必填配置:

Appium設置界面.png

注意事項:真機調試時的app必須是包含描述文件的app文件,不能選擇虛擬器生成的沙漏里的app文件。

1、模擬器調試

準備工作:
① 獲取待測試應用的源碼;
② 一臺安裝了Xcode和Xcode Command Line Developer Tools的Mac機器。

Appium設置界面(模擬器).png

注意:虛擬器需要選擇沙盒里面的app。其中模擬器設置可以不用填BundelID和UDID

這之后還遠遠沒有結束,剩下的還有運行Appium進行APP生成的product的壓縮包進行啟動錄制,根據自動生成的腳本編輯運行調試,漫漫長路還將繼續學習

四、總結

有很多人問,UI自動化應不應該投入,有沒有前途。這個問題沒有絕對的,要看項目的類型,總的來說針對相對比較穩定的項目,UI自動化真正的價值有兩點:
1、是驗證邏輯而非UI;
2、是代替大量UI重復操作。

如果這個事情至上而下都是支持的,想做的,投入的方向沒有錯,價值認識正確,肯定是有積極的產出的。另外,UI自動化是測試生來無法回避的一種能力,可以不依賴他,但是你需要他。最后用網上的幾句話作為文章的結尾:
UI自動化是一種能力,常常無法回避;
UI自動化會給人幻覺,要看清現實與價值;
喜歡是放肆,愛是克制。而克制是UI自動化能發揮作用的關鍵。


最近Appium桌面版本更新到了Appium version to 1.6.4

Appium version to 1.6.4.png
Appium version to 1.6.4 Config.png

相關文章:
1、Appium社區;
2、Appium 從入門到原理;
3、Appium簡介及工作原理;
4、用實例告訴你,如何利用Appium實現移動終端UI自動化測試;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容