昨天介紹了End to End Test的一些概念後,今天要開始介紹如何進行End to End Test(下面會使用e2e test來簡稱)。在Android開發中要進行e2e test可以用我們之前講過的Espresso,還記得我們在[Day 20]有介紹過Espresso Asynchronous的寫法,IdlingResource的寫法就可以用在e2e test上面,我們只要在測試過程中會呼叫到的所有非同步的function都在開始及結束時加上IdlingResource的lock功能就可以了。但這個寫法有必須要在production code裡插入很多的IdlingResource呼叫,可以說是為了測試的目的去改變我們的開發程式,而非只有開發獨立的test class。這樣的做法會讓production code多了一些不屬於本身邏輯的程式碼,有點不好看也不好維護。那有沒有其他辦法不用Espresso也可以做到e2e test,答案就是Appium。如果你有關心職缺的話,Appium是許多automation engineer的技能之一,如果學會了appium等於我們也有了某部份automation engineer的能力了XD
Appium是透過Web Selenium的測試架構來串接IOS,Android等行動平台,整個流程如下圖所示
可以選擇以下兩個方式command line或是desktop。
https://github.com/appium/appium-desktop/releases/tag/v1.15.0-1
brew install node # get node.js
npm install -g appium # get appium
npm install wd # get appium client
appium & # start appium
當我們安裝好Appium的core元件後,建議下載appium-doctor去驗證我們的執行環境,例如要測試Android或IOS會有不同對應的系統環境變數,appium-doctor很貼心的幫我們都檢查好了,如果有問題它也會提示我們修改。
npm install appium-doctor -g
安裝好了以後,再輸入以下指令來檢測 appium-doctor --'platform name'
appium-doctor --android
完成安裝後我們就可以launch Appium Server試試看。可以點擊Appium的應用程式圖示或是直接在command line執行appium,我們在本機端不需特別設定直接start server即可。
Appium的node server成功launch後會看到下面圖示。
下一個章節會直接操作測試Android APK來示範給大家看。