App 自動化測試工程師的工作環境大解密
#自動化測試 #Appium #QA 實戰
第一次來我座位的人,通常會先問一句:「你怎麼有這麼多手機?」 做 App 自動化的 QA,桌上的手機會比螢幕還多。測試腳本寫在電腦裡,但真正被測的是一台一台的實機。下面就從桌上這些東西一樣一樣講,順便講哪裡最容易出事。 圖說:座位全景(照實際座位畫的插圖)。左邊手機架、中間螢幕底下壓著 Mac mini、前面是我自己的筆電。 本文地圖 這張桌子上真正在「跑測試」的,是 Mac mini 和那排手機。我的筆電只負責寫程式和看報告。 一、手機架:桌上最佔位置的東西 圖說:手機架近看。上層兩台、下層四台,每台底下貼一張標籤,線從架子底下集中拉出來。 手機全部直立、螢幕朝外。測試跑的時候,我抬頭就看得到每台卡在哪個畫面。腳本報錯之前,常常是眼睛先發現不對。 每台手機下面都貼了一張便利貼,寫上這台的用途代號。同一個 App 我們有不同的上架版本,每個版本至少要一台專屬的手機。不貼標籤的話,六、七台長得差不多的黑色手機放在一起,連我自己都會拿錯。 \[!TIP\] 標籤寫「用途」,不要寫「型號」。型號查得到,但「這台是測哪個版本的」只有你知道。 iPhone 被 Appium 接上時,螢幕上會出現一行「Automation Running」,那是 WebDriverAgent 跑起來的提示。看到它就知道這台接上了;看不到,八成又是 WDA 出問題(這個坑在另一篇講過)。 二、Mac mini:真正在跑測試的機器 螢幕底下那台白色小盒子就是 Mac mini,整個座位最重要的一台機器。 它身兼三個角色: | 角色 | 做什麼 | | | | | Appium Server | 透過 USB 控制每一台手機 | | GitHub Actions self hosted runner | 有人按下「跑測試」,它就把腳本拉下來執行 | | iOS 的 build 環境 | iPhone 要靠 Xcode 和 WDA,這兩樣只能在 Mac 上跑 | 測試不放在我的筆電上跑,因為筆電會被我帶走、會闔上、會睡眠。測試機要一直插著電、一直醒著,最好沒人去碰它。 外接螢幕顯示的通常是測試專案的程式碼,左邊一長串檔案樹就是測試腳本和 page object。 三、筆電:我自己的工作台 前面那台筆電是我日常寫程式、看報告、回訊息用的。拍照那天,螢幕上開的就是 ReportPortal 的測試結果頁。 把「寫腳本的地方」和「跑腳本的地方」分開,好處是我可以邊跑測試邊做別的事。測試在 Mac mini 上跑一兩個小時,我的筆電不會被拖慢,也不會因為我闔上筆電就中斷。 四、線和電源:最不起眼,最常出事 圖說:換個角度看。手機的線從架子底下集中,往後接到 Mac mini 和螢幕右後方的 USB hub。 桌上最亂的地方是螢幕右後方那一團:USB hub、充電頭、延長線。 這一團看起來不重要,但「跑到一半裝置斷線」是我遇過最多次的問題之一,好幾次查到最後,是 hub 供電不穩,不是腳本。 所以我現在的習慣是:測試跑到一半斷線,先看線再看 log。adb devices 看不到裝置的時候,拔插一次線比讀 log 快得多。 要讓這一團少出事,靠的是 USB hub 和魔鬼氈,第六段裝備解析一起講。 \[!WARNING\] 實機 24 小時插著電,電池會鼓起來。我的測試機大約跑一年就會開始鼓,所以要定期檢查,發現手機背蓋翹起來、放不平,就送去換電池。鋰電池鼓了別硬撐,有起火風險。 五、測試機:買二手就好 手機架上的測試機,我都是買二手的。 測試機不需要新。它不用拍照、不裝自己的 App,每天只做一件事:被腳本點來點去。要看的是系統版本,不是新不新。我手上的 Android 從 Android 14 到 Android 16 都有,涵蓋目前使用者最多的幾個版本,每一版的權限跳窗、通知行為不太一樣,都要有實機能測。 買二手測試機,我會先看兩件事: 1. 系統版本 。先決定要測哪幾版 Android,再照版本挑機型。買之前確認這台能升到、或停在你要的版本。 2. 電池狀況 。測試機會 24 小時插著電,本來電池就比較容易鼓(上一段講過)。電池已經老化的二手機,買回來很快就要換電池。 六、裝備解析:三樣不起眼但少不了的東西 前面講的是「為什麼這樣擺」,這段講「要買什麼」。這三樣加起來可能不到一台手機的錢,卻是實機環境最常被忽略的部分。 | 裝備 | 解決什麼問題 | 挑的時候看什麼 | | | | | | 手機架 | 手機平躺會疊在一起,看不到畫面、線也纏在一起 | 雙層、直立、底部有空間走線 | | USB hub | 電腦的 USB 孔不夠,供電也不夠 | 獨立供電、孔數比手機多一兩個 | | 魔鬼氈束線帶 | 線一多就纏,拔錯線、勾到線 | 可重複黏、寬度夠,好拆好綁 | 手機架 我用的是網拍買的雙層桌上收納架,大約 300 塊。它原本是拿來放文具或書的,不是專門放手機的。 專用的手機展示架或多孔充電座也有,但收納架格子寬,套著殼的測試機也放得進去;底部是空的,線從下面拉出來,不會擋到螢幕。 挑的時候先量手機加殼的寬度,再量架子格子的寬度,確定放得進去再下單。 USB hub 手機一多,最先不夠的是 USB 孔。Mac mini 本身的孔,接了鍵盤、螢幕之後就剩沒幾個。 我用的是好幾個 4 孔的 USB hub,手機分散接在不同 hub 上。它們出過的問題不是孔不夠,而是電壓和供電不穩:好幾台手機同時充電又傳資料,電一不夠,裝置就會斷線,看起來跟 flaky 測試一模一樣,很容易誤會成腳本的問題。 所以挑 USB hub 只看兩件事: 1. 獨立供電 。hub 要有自己的電源線,不要只靠電腦的 USB 供電。 2. 孔數多留一兩個 。手機只會越加越多,現在剛好夠,下個月就不夠了。 魔鬼氈束線帶 這是三樣裡最便宜、也最容易被忽略的。 手機架底下拉出來的線,我用魔鬼氈束線帶捲成一束再綁起來。用魔鬼氈而不是塑膠束線帶,是因為測試機常常要換:拔一台下來手動測、換新機、換線。塑膠束線帶綁死了只能剪掉,魔鬼氈撕開就能調整,綁回去也只要幾秒。 線綁好有兩個好處:椅子不會勾到線把手機拖下來,拔線的時候也不會拔錯台。 七、其他小東西 滑鼠墊 :印滿 SQL 指令的速查表。查資料庫驗證測試資料時,低頭就看得到語法。 右邊立架上的手機 :這支是我自己的,不是測試機。測試機全部待在手機架上,自己的手機另外放,才不會順手拿錯。 八、如果你也要搭一個 不需要一次買齊。照我的經驗,這個順序最不會白花錢: | 順序 | 東西 | 大概價位(新台幣) | 理由 | | | | | | | 1 | 一台二手 Android | 3,000~10,000 | 門檻最低,接線開 USB 偵錯就能跑 | | 2 | 一台常駐的 Mac mini | 約 19,000 起 | 要測 iOS 一定要有;也可以順便當 CI runner | | 3 | 一台二手 iPhone | 8,000~15,000 | 有 Mac 之後再加,WDA 的設定要花時間 | | 4 | 獨立供電的 4 孔 USB hub | 500~1,500/個 | 手機一多、同時充電就需要 | | 5 | 手機架 | 約 300 | 手機一多就會拿錯,順便貼標籤 | | 6 | 魔鬼氈束線帶 | 100 以內 | 線一多就需要 | 照這張表買齊最小的一套(1 台 Android、1 台 iPhone、Mac mini、hub、架子),大約 3 萬多到 4 萬多。之後每多測一個 Android 版本,就是再加一台二手機的錢。 價位是寫這篇時的大概行情,二手機價差很大,買之前自己比價。 我的桌子不是一開始就長這樣的。一開始只有一台 Mac mini、兩台 Android、一台 iPhone,手機是平躺在桌上的。手機一台一台加上去,線越來越亂,才慢慢長成現在這樣。