為 Mole 實測幾百款 Mac 軟體
這段時間我在做一件笨事情,或者也是 AI 時代工程師很不願意做的事情,非常重複的事。為了讓 Mole 移除軟體更徹底,清理殘留的能力更好,我整理了國內外 300 多款 Mac 軟體,下載下來差不多 100 多個 GB,分成 30 組,每次 10 個,讓 AI 藉助 computer use 的能力去官網下載,然後依次安裝到我的電腦,檢查目錄、軟體更新 bundle、自動啟動項目,再移除、查找殘留,補上缺少的規則。
從 100 個,到 300 個,再到 549 個
當時想著最多測 100 個主流軟體,結果想著不如再測 100 個,到 200 個的時候,又想再測 100 個,就到了 300 多個,後來又增加到 549 個,補充了 App Store 版本和擴充功能。平時強迫自己把 Mac 控制在 30 個軟體的我,一下子就有了下面這個非常凌亂的桌面,哈哈給大家看看。
這個過程看著很無聊,每次安裝也會遇到不少麻煩的軟體,不停跳出權限提示、購買畫面,有些還必須輸入管理員密碼。Agent 大部分能自己做,少部分我幫一手,讓我驚喜的是,AI 還寫了自動安裝、移除、檢查殘留的腳本,讓自己工作更輕鬆,哈哈我就只能給它打打下手。
安裝完,還只是剛開始
最花時間的是把一個軟體從頭到尾走一遍,下載和安裝只是開始,後面還有首次開啟、權限提示、軟體更新、自動啟動,以及移除以後留下的東西。只看安裝套件,容易漏掉執行以後才產生的資料夾;只刪掉 App,也看不出它之前放在其他位置的檔案有沒有跟著移除。
每組都得確認具體問題:資料夾是誰建立的,更新 helper 屬於誰,自動啟動項目是否還在,移除後留下哪些檔案。先確認路徑和歸屬,再補進規則,名字相似還不夠,App Store 版和官網版也要分開看,同一個產品名稱不代表相同的安裝方式和資料位置。
AI 能反覆檢查,還會把已經摸清的步驟寫成腳本,但權限、管理員密碼、歸屬不明的檔案仍然需要處理。還好有 AI,不然全靠手工,我估計要多花 10 倍的時間。
有些事情只能裝一個查一個
這也改變了我的一些想法,本來以為軟體工程應該是規範的、有秩序的,測了 100 個軟體後,後面應該沒有多少規則可以補了,結果越往後走,發現完全不是這樣。有些路徑怎麼寫通用規則都找不到,甚至有些 bundle id 不是反向網域名稱,看著規範的慣例,可能只是某個開發者當年隨手填的,只能裝一個查一個。
查殘留的過程中,也改掉了一些原本以為要清、其實不該動的地方。軟體的快取、使用者的檔案、幾個軟體共用的資料,不能因為都出現在同一個目錄,就一起當成垃圾,測得更多,也意味著找到更多需要保留的東西。
清得更乾淨,也要知道哪裡不該動
最初那輪 300 多款軟體的測試,補出了 13 類通用規則、90 多條精確清理路徑,也改掉了 30 多個原本以為要清、其實不該動的地方,更新和自動啟動檢查都有補充,還加了 100 多條單元測試。這些是當時那一輪的數字,後面的軟體名單還會繼續增加。
不該動的地方和新找到的殘留一樣有價值,快取可能可以重新產生,使用者寫的檔案卻不能,幾個軟體共用的資料也不能因為移除其中一個就一起刪掉。看起來像殘留的檔案,可能仍被其他軟體使用,歸屬不清楚時,留下來比猜著刪更合適。
只追求清理數字變大,容易做偏,真正要補的是判斷依據。通用規則處理可重複的部分,特殊路徑逐一確認,不該刪的情況用測試留下來,後面改規則時才不容易又犯同樣的錯。
無障礙帶來的意外幫助
Mole 早期版本就開始支援視障使用者,加入了很多無障礙屬性,沒想到這次也幫了大忙,AI 可以藉助這些屬性找到準確的元素和按鈕位置,測試順利了不少。之前做的事情,後來又反過來幫到自己,挺有意思的。
無障礙屬性不只提供位置,也能說明按鈕名稱、控制項類型和目前狀態,版面移動後,腳本還有機會找到同一個按鈕;只有截圖和固定座標時,視窗一挪、提示一變,就可能點錯地方。
不過它首先是給人用的,AI 能找到按鈕,不等於視障使用者能順利完成操作,標籤、焦點順序、VoiceOver 能否讀到結果,仍需要檢查。這次讓我更體會到,替不同使用方式留下支援是有價值的,考慮到每個人都可以使用,真好。
原本以為測到 100 個,後面就只是重複,做到 300 個、549 個卻還有新細節,以後還想把常用軟體一個個裝過、查過,把碰到的問題補回 Mole,讓使用者真正移除軟體時能更放心。
獨立開發者做 App、網頁時,也可以讓 AI Coding 幫忙補好無障礙屬性,一方面讓視障使用者更方便,另一方面,也可能讓自己的自動化測試更順利。這個測試我會繼續做下去,具體測過哪些軟體,放在實測軟體名單裡;希望繼續補充的軟體,也歡迎到討論串告訴我。