iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
0
Mobile Development

從0開始,全方面自動化測試Android App系列 第 28

[Day 28] 使用AWS Device Farm來測試App

在我們完成了Integration Test或是End to End Test這些與UI元件操作有關的測試後,除了用模擬器或是手頭上就有的Android手機外,我們還可以透過像是AWS Device Farm來幫我們做更大範圍的手機平台測試。大家一定常常有一個經驗,Crashlytics之類的線上issue tracking system會report有crash,偏偏手上的機器怎麼測試都沒有問題,而report中有問題的手機周遭卻沒半個人有。issue無法reproduce出來這種問題常常會困擾著大家,要嘛就是裝做沒看到,要嘛就是用try catch之類的很消極的解法。

還好AWS Device Farm或是Google Firebase Testlab都有線上提供實機給我們做測試,當然測試在一定的條件下是免費使用,但超過一定的試用時間後就會開始收費,大家可以評估自己的狀況再決定要不要付費使用。而我們為什麼會選擇AWS Device Farm呢?因為跟Testlab比,Device Farm的手機提供較多較完整。

這裡的範例會用Espresso的instrumentation test來示範,Espresso可以做Integration和End to End測試,因此你可以在Device Farm使用任一種的UI測試開發。

https://aws.amazon.com/tw/device-farm/

首先,申請完AWS的帳號後們登入後會到Console介面,我們在上方搜尋Device farm就會出現device farm的link
https://ithelp.ithome.com.tw/upload/images/20191012/201209756GbtAfuhOD.png

進入device farm後我們要建立一個新的project名稱
https://ithelp.ithome.com.tw/upload/images/20191012/20120975YjhWalF5wN.png

建立後我們會進入Automated Test的介面,我們在這裡點擊create a new run
https://ithelp.ithome.com.tw/upload/images/20191012/20120975teCwGU6Cw3.png

我們選取有Android或IOS的mobile icon後把apk上傳。
https://ithelp.ithome.com.tw/upload/images/20191012/20120975HfopChWwnf.png!

上傳完成AWS會自動把apk的參數顯示出來,下方可以為這個run取一個新名字,如果用預設就是apk的file name
https://ithelp.ithome.com.tw/upload/images/20191012/20120975AQxqjYTHXu.png

在Configure your test部份,我們是上傳Android的Intrumetation架構的Espresso,所以我們在Test下拉式清單選取Intrumentation,其它還有Build in-Buzz的monkey亂數測試,Appium等可以選擇。如果選擇Instrumentation的話我們要到app/build/output/androidTest的目錄下把androidTest.apk上傳到device farm。
https://ithelp.ithome.com.tw/upload/images/20191012/20120975VKzgkp09to.png

在Configure your test下方有錄製test選項,開啟後我們當發生問題log看不出來時候我們可以用video來猜測發生什麼問題。filter部份我們可以指定完整的package的路徑來指定本次的測試檔案,例如com.daniel.demotest.ExampleUnitTest。
https://ithelp.ithome.com.tw/upload/images/20191012/20120975blAB458IXt.png

在Select devices部份,device farm會建議一份目前最熱門的名單,我們可以用create a new device pool去建立一份屬於我們的測試機器清單。
https://ithelp.ithome.com.tw/upload/images/20191012/20120975K6lZyTmQtA.png

在Specify device state部份,如果有一些特殊的測試條件,如要上傳檔案供測試使用或調整network狀況,設定location等等可以在這裡設定。
https://ithelp.ithome.com.tw/upload/images/20191013/20120975EJnQxqJ5aj.png

完成設定後,最後device farm會提示你可能的花費時間,目前是每個帳號有1000 hours per month的測試時間,如果超過就要付費。按下測試我們就開始在AWS的遠端執行實機測試了。
https://ithelp.ithome.com.tw/upload/images/20191012/20120975p5HHPukfYW.png

結論

利用Device farm這類型的cloud service來為我們做手機平台的多樣化測試相當方便,我們可以免去為了測試而購買一大堆不同品牌手機的問題。如果配合DevOps建置docker定時trigger AWS Device Farm來跑自動化測試這也是CI的選項之一。我們之前還有介紹過Jenkins,這個也可以配合AWS的Service來建置CI的環境。


上一篇
[Day 27] 利用Appium測試Android App (二)
下一篇
[Day 29] 如何開始執行測試計劃
系列文
從0開始,全方面自動化測試Android App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言