2026年多地區遠端 Mac 平行 XCTest 與 UI 測試容量:
模擬器配額、DerivedData 磁碟餘裕與 M4/M4 Pro 對照表

約 18 分鐘閱讀 · MACCOME

建置主機在新加坡,編排與製品出口卻在美國或歐盟? 本文給要在遠端 Mac 上平行執行 XCTest 單元與 UI 測試 的團隊:六個常見迷思(為何本機綠燈、CI 紅燈常被誤判為不穩定)、兩張表把 M4/M4 Pro、模擬器數量、DerivedData 磁碟餘裕與租期 綁在一起,並附上可貼上的 xcodebuild 參數、磁碟檢視指令與六步 Runbook。讀完你能論證工作者數量、磁碟警示門檻,以及該調 Runner 逾時還是調整地區配置。

六個 XCTest 平行化迷思(為何「提高併發」常放大不穩定)

  1. 把每次 CI 紅燈都當測試不穩:多個模擬器搶同一條磁碟 IO 與 WindowServer 預算時,逾時與動畫斷言最先晃動;若沒有單工作者對照實驗,擴硬體方向會判錯。
  2. 併發直接設成 CPU 核心數:Xcode 測試 Runner 與模擬器啟動會拉高記憶體尖峰與檔案描述元;當 平行 UI 測試套件 必須在不大打 swap 的前提下跑完時,M4 與 M4 Pro 的差異才會浮上檯面。
  3. 忽略 DerivedData 與 CoreSimulator 的合併成長:單次平行建置可能讓中介檔爆量;可用空間約剩 10% 時,中繼資料寫入會先卡死,未必立刻看到乾淨的 ENOSPC。
  4. 只調 xcodebuild 卻忽略 Runner 逾時:提高平行度會讓 JUnit 上傳、快取同步與製品排隊;RTT 加倍時,失敗常落在測後步驟而非斷言。
  5. 多人共用單機卻沒有清理政策:混用專案會留下過期裝置資料與殘留行程;模擬器開機時間階梯式上升,看起來像「環境飄移」。
  6. 把無人值守 CI 的 UI 測試等同於互動除錯:自動化執行需要更嚴格的等待、截圖與日誌;「盯著螢幕能過」的套件在 CI 平行下容易競態。

下文先對齊記憶體、磁碟與網路,再落到可參數化的對照表。

遠端 Mac 平行測試的資源座標(記憶體、磁碟 IO、WindowServer、網路)

平行單元測試 壓 CPU 與記憶體尖峰;磁碟寫入集中在 DerivedData 索引與建置產物。快取預熱後,連結爆量與行程數常比純時脈更早成為上限。平行 UI 測試 另加模擬器繪圖、WindowServer 與暫存檔;一旦第 N 條平行跑道拉高尾延遲,加速比就不再線性。

DerivedData 成長跟模組快取、平行編譯與清理頻率連動——請把目錄大小與建置節奏當成 FinOps 訊號,而非只看月租。跨區鏈路 不會減輕本機磁碟需求,但會放大結果與日誌的尾延遲;若不區分「xcodebuild 成功」與「流水線步驟成功」,分診會指錯層級。

建議搭配 Runner 標籤與併發 一文,以及 可重現建置與 DerivedData 清單閱讀:路由工作、封住建置根目錄與限制模擬器數是三個不同旋鈕。

維度Mac mini M4(基準)Mac mini M4 Pro(較高平行度)
典型目標2–4 個單元測試工作者;UI 平行度維持較低或時間切片4–8 個單元測試工作者;僅在 soak 通過後再提高 UI 平行度
記憶體壓力徵兆Swap、模擬器開機變慢、負載下 UI 卡頓相同併發下較不易 swap;磁碟 IO 仍可能成為上限
磁碟建議512 GB 在多分支下很快滿;平行 + 多分支時規劃 1 TB平行 UI 與多版 Xcode 時優先 2 TB 或積極清理
適用情境較小儲存庫、單元為主、夜間單次掃描大型單一儲存庫、多組 UI 套件、頻繁 PR 建置
租期搭配月租基準 + 發佈週短暫冲高月租/季租鎖定以避免尖峰搶資源

選跑道:單元平行度、UI 平行度與混合型流水線

對含 UI 的 xcodebuild test,請把 編譯平行度測試平行度 拆開:可提高 -parallelizeTargets 做建置,但 -parallel-testing-enabled-maximum-parallel-testing-workers 需要獨立 soak。需要圖形介面分診時,搭配 SSH 與 VNC 指南 開短暫互動視窗,而不要 24/7 把高 UI 平行度綁死在 WindowServer 上。

情境平行策略遠端 Mac 額外檢查
純單元測試、套件較短以記憶體尖峰抽樣決定 中等工作者數觀察 DerivedData 成長曲線
重度 UI 測試低平行度 + 排隊時段;必要時拆分 scheme文件化模擬器清理與 WindowServer 重啟政策
單一儲存庫、多分支以 Runner 標籤 隔離 並分開 DerivedData 根目錄機密與併發上限請對齊 Runner 清單
全球團隊、日誌出口慢維持本機測試平行度;節流匯整/上傳調整 HTTP/SSH 逾時與重試;地區選擇見 多地區租賃指南
夜間全矩陣 + 日間 PR夜間高平行度,日間守主幹離峰安排深度清理
xcodebuild
# 範例:限制平行測試工作者(依專案/硬體調整——請勿盲目複製)
xcodebuild test \
  -scheme YourScheme \
  -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.4' \
  -parallel-testing-enabled YES \
  -maximum-parallel-testing-workers 4 \
  -resultBundlePath ./TestResults.xcresult
bash
# DerivedData/模擬器佔用稽核(門檻請自行以磁碟百分比定義)
du -sh ~/Library/Developer/Xcode/DerivedData 2>/dev/null
du -sh ~/Library/Developer/CoreSimulator 2>/dev/null
df -h /
info

備註:在宣告調參完成前,請並列捕捉單工作者基準線與目前併發:總耗時、每測 P95、尖峰記憶體與磁碟寫入。

六步把平行測試容量寫進 Runbook

  1. 釘選 Xcode 與模擬器執行環境 對齊正式軌道並記錄組建編號;版本飄移會讓比較失效。
  2. 單工作者基準線:全套耗時、尖峰記憶體、DerivedData 增量、失敗測試。
  3. -maximum-parallel-testing-workers階梯加載 2→4→6;每階需連續三次綠燈。
  4. 磁碟護欄:例如系統卷可用空間低於 15% 時中止平行跑道,避免靜默卡住。
  5. 對齊跨區逾時:分拆連線、結果上傳與快取同步逾時,並記錄何者先觸發。
  6. 每週檢視不穩定:分桶「疑似資源競爭」與「真邏輯不穩」;只有後者進測試待辦。

三個應寫進架構評審的指標

  1. 平行效率 R=同一套件在同一版 Xcode 下的序列牆鐘時間/平行牆鐘時間;若 R 遠低於工作者數,瓶頸多在 IO 或 WindowServer。
  2. 磁碟斜率:每次 PR 或每次夜間的 DerivedData + CoreSimulator 增量;用來論證 2 TB 或快取政策調整。
  3. 出口失敗率:單獨統計「測試綠燈、流水線紅燈」;若與某地區相關,先調放置或上傳策略,再提高測試併發。

與節點選型、Runner、零信任接入如何搭配

本文回答 單台遠端 Mac 上測試要推到多兇多地區節點指南 回答 主機放哪零信任接入清單 回答 流量如何到達。建議閱讀順序:地區與租期 → 連線與 Runner → 平行測試容量,避免在不穩路徑上疊併發。

為何「筆電上平行」無法長期取代專用遠端主機

筆電背負休眠政策、消費級網路與修補飄移,難以承諾團隊 SLA。提高平行度會加大散熱與磁碟壓力,而該類裝置本來就不是以 CI 工作者規格設計。專用遠端 Mac 以合約把執行層與個人裝置分開,讓自動化介面更穩定。

當你需要 地區放置、峰值租期治理,以及與 OpenClaw 這類長駐 Agent 共用的乾淨主機 時,在 MACCOME 雲端 Mac 主機上跑平行測試,比把工作者堆在不穩定的筆電上更容易簽核。建議先對照 租賃價格,再依主要使用者開啟區域結帳——新加坡東京首爾香港美東美西。連線分診請至 協助中心 以 SSH 或隧道關鍵字檢索。

常見問題

M4 上安全的起始平行度是多少?

請用 soak 驗證,不要抄網路口號。從兩個工作者開始抽樣記憶體與磁碟,再依上文表格調升。租期檔位請對照 Mac mini 租賃價格

DerivedData 快滿了——先改什麼?

先降平行度避免靜默卡住,再執行清理;目錄邊界請對齊 可重現建置與 DerivedData 清單

CI 紅、本機綠——從哪查?

把上傳/匯整逾時與測試失敗拆開;節點放置請用 多地區節點指南 核對。

不穩定暴增——要立刻擴機?

先跑單工作者對照與資源監控,排除競爭後再買更多核心或升級 M4 Pro/2 TB。