1、移動互聯網背景
隨着智能手機的普及和互聯網的發展,移動互聯網已經漸漸成爲人們的一種的生活方式;既然是生活方式,那麼對生活品質就會有不斷的提升要求,就會對所用的移動互聯網產品有更高的體驗需求,這對於我們測試工程師來說就有了更高的質量保證要求,而時間短,進度快,種類多,使得我們僅靠人工很難保證版本的測試充分,這個時候就需要藉助自動化來釋放人力,提升效率了。
1.1 一般架構
- 移動端:用戶會通過公司的產品來使用公司的業務,這些移動端產品包含了Android App、IOS App、H5、小程序
- 服務端:用戶所有的操作最終會通過各種協議,類似HTTP協議等,發送至公司的服務集羣進行處理
1.2 測試階段
通常我們一個項目的開展都要經歷需求、研發、測試、交付這幾個過程,而客戶端的測試階段也就是處於產品交付之前:
1.3 UI自動化誤解與價值
1.3.1 誤解
很多人認爲UI自動化沒有用或者只能模擬人工點點點,其實不然,有這種看法大多還是因爲我們自身的能力和理解不夠(包括我本人也是在不斷學習,增加認識)。
- 技術上:沒有用更好的POM進行封裝維護;
- 框架上:沒有增加Watch,智能等待,失敗重試等機制來使框架有更靈活的機制
- 策略上:沒有使用分層測試的策略,合理的控制UI自動化的規模,並不是所有的手工用例都需要用UI自動化去實現
- 少數核心用例交給自動化測試
- 大部分的基礎迴歸測試交給自動遍歷
- 新功能測試交給人工測試
1.3.2 價值
上面的提到的誤解如果解開就可以正確合理的開展UI自動化測試,就可以爲企業帶來實際的價值,當然,做起來並沒有那麼容易,需要我們測試工程師不斷的探索,本人也是名小學生,在這場升學之路上努力求學中~
扯遠了,拉回來~ 通過下面這張圖來看我們的測試架構,來提煉出UI自動化測試的價值所在
- 迴歸測試
- 自動探索測試
- 專項自動化測試
- 競品分析
2、主角登場——Appium
上面廢話了這麼多,就爲了引出今天的主角——Appium
,一個爲了移動端UI自動化而生的框架,先來看Appium官網打開後看到的第一句話,如下:
還是谷歌翻譯一下~:
Appium是用於原生,混合和移動Web應用程序的開源測試自動化框架。
它使用WebDriver協議驅動iOS,Android和Windows應用程序。
沒錯,就是這簡單的一段話,描述出了Appium的優勢、架構和底層實現原理,下面通過對這段話的解讀來認識Appium,敲開移動互聯網自動化的第一道門
2.1 Appium是誰
Appium
,單詞的由來就是App
+Selenium
的組合,因此顧名思義,爲了App
而來,與Selenium
有很大的關係,看下面的架構圖:
從架構圖中我們可以看到,最上層就是用的Selenium
實現,因此Appium
和Selenium
一樣遵從WebDriver
協議,通過Selenium
客戶端將請求轉發至Android或者IOS上框架的引擎的實現,如果用過Selenium做web自動化的話,現在幾乎可以無縫的切換至appium,很多的用法和思想都保持一致;
2.2 優勢解讀
- 既然上層使用了selenium,那麼selenium的跨語言性應該也保留了下來—— 跨語言 ,支持Java Python ruby PHP nodejs等
- 官方介紹中提到了多個平臺的支持,再結合上述的架構圖——多平臺支持 Android、 IOS、 Windows
- 官方還提到了多種開發模式支持 native hybird webview,這些就可以使我們可以在H5和小程序上開展UI自動化了
如下圖很好的展示了Appium對上述優勢的支持:
除了上述之外還有的優勢就是
- 支持跨App,可以在多個App之間交互
- 不依賴源代碼,可以測試第三方應用,比如測試微信服務號
2.3 集大成者-底層引擎的實現
先來看目前mobile自動化的方案,如下對各個端有不同的實現方案,五花八門,且很多不支持跨App
而Appium幾乎包括了所有的優勢,可謂是集大成者,爲何?再來看appium官方GitHub給出的底層引擎實現說明(很多已經淘汰,我們學習推薦使用的即可):
- Android端
- espresso :Android官方支持的框架
- selendroid:eBay實現的框架
- uiautomator:Android官方實現的集成測試的框架
- uiautomator2(推薦使用):基於uiautomator的一個拓展,也是我們目前最推薦使用的框架
- IOS端
- uiautomation
- xcuitest(推薦使用)
另外還有Mac和Windows的驅動引擎支持
正是因爲這些引擎的支持實現,所以Appium
纔可謂是集大成者,是目前一款優秀的移動端UI自動化框架,我們使用Appium
只負責告訴各個底層,我需要做哪些操作,具體如何操作Appium
是不管的,由各底層的驅動去完成即可。
3、廣告環節(總結)
最後,如果做移動端自動化測試,我們推薦的是使用Appium
框架去敲開這扇大門,進入移動互聯網自動化的世界
- 跨語言:Java、Python、nodejs等
- 跨平臺
- Android、 IOS
- Windows、Mac
- 底層多引擎可切換
- 生態豐富,社區強大
- 官方文檔中英文皆有,中文由testerhome社區組織翻譯
- testerhome社區有衆多高手分享經驗,討論採坑,走前人填平的路,助(祝)前進的道路一馬平川!
寫在最後:
經驗欠缺,能力尚弱,還在路上摸索前進,有志同道合的小夥伴歡迎交流指導~
想了解怎麼安裝配置環境的小夥伴可以參考另一篇文章:
Windows(Win10)、Mac下安裝appium
相關鏈接:
appium官網:http://appium.io/
appium官方GitHub:https://github.com/appium/appium
testerhome社區:https://testerhome.com/