TestFlight 教學把 iOS App 交給朋友測試

你的 App 在自己手機上能跑了,下一步是讓別人真的用一次。這篇帶你走到朋友能安裝,並附一份可直接交給測試者的腳本,把「滿好用的」變成你知道該改哪裡的回饋。

學域 Realms 編輯團隊約 14 分鐘(另含試用腳本)

一、朋友通常用外部測試;內部測試留給團隊

TestFlight 是 Apple 的 App 測試分發方式。測試者在 iPhone 安裝免費的 TestFlight,再接受邀請安裝測試版。開發者要透過 TestFlight 分發 App,需加入 Apple Developer Program;只是自己用 Xcode 測試則是另一條路。Apple 的分發方式說明、開發與上架成本清單可以一起看。

內部測試

最多 100 位,是有對應 App 存取權的 App Store Connect 使用者。適合已在管理或開發這個 App 的團隊成員。

外部測試

每個 App 最多 10,000 位。朋友與一般試用者可接受郵件或公開連結邀請,不需要成為你的後台管理成員。

人數與安裝方式依 Apple TestFlight 總覽。不要為了讓朋友測試,就替對方開後台管理權限。第一次先用小型外部群組,方便知道誰還沒裝、誰需要協助。

二、從 build 到朋友能安裝:把六個步驟做完

  1. 確認可分發的版本。在 Xcode 檢查 Bundle ID、Team、Version 與 Build,Archive 後上傳 App Store Connect。若要給外部測試,別選只供內部測試的 TestFlight Internal Only。還沒建立 App 紀錄可先走 Xcode 上傳與 SDK 要求。
  2. 等處理完成,再看狀態。到該 App 的 TestFlight 頁籤確認 build 已出現;依實際功能完成加密/出口合規問題。先記下 Version(Build),後續回饋都以這組數字辨識版本。
  3. 填測試資訊。在 Test Information 說明 App 做什麼、Feedback Email 是哪個可收信的地址;需要登入的功能準備可用的審核存取方式。測試者要做的任務寫在該 build 的 What to Test,不只寫「修 bug」。官方欄位說明。
  4. 建立群組並指派 build。依目前 Apple 流程,先有內部群組,再建立外部群組。到 External Testing 新增群組,在 Add Builds 指派這次要測的 build。
  5. 完成測試審核與分發。第一個送交外部測試的 build 需要完整 TestFlight App Review;同版本後續 build 可能不需完整審核。依介面狀態送審或開始測試,核准後確認已分發;若未勾自動通知,需要手動分發。通過測試審核不代表已正式在 App Store 上架。
  6. 邀請並確認實際安裝。小範圍先用郵件邀請。使用公開連結時,可設定人數或裝置/系統條件。請朋友在 iPhone 裝 TestFlight、接受邀請,再核對你指定的 Version(Build)。收到邀請不等於已安裝完成。

群組、Internal Only、審核與邀請細節核對自 Apple 外部測試文件(2026-09-24)。介面有異動時,以該頁與你帳戶顯示的狀態為準。

三、15 分鐘試用:請朋友做事,不只問好不好

以下用待辦 App「一件小事」示範一輪試用設計,並非已完成的測試成果。你可以套用在自己的 App;還沒有作品,可從 SwiftUI 入門路線與練習專案開始。下載原始碼不會自動取得 TestFlight 邀請,你仍要用自己的帳戶完成建置與分發。

先挑三位平常確實有這類需求的人:A 完全沒看過操作;B 使用你打算支援的不同 iPhone 尺寸或 iOS 版本;C 先測舊 build,再更新測新 build。第一輪還沒有舊版本時,C 先記「升級未測」,不要勾通過。

0–3 分鐘|先讓對方自己看

只說情境:「你想記住今天要做的一件事,請用這個 App 記下來。」先別說按哪裡。觀察第一個動作、停住的位置、對文字的理解;要出手提示時,記下提示內容。

3–7 分鐘|做完一次核心任務

請他新增「買牛奶」,找到剛才的內容,標記完成,再取消完成。記錄每一步是獨立完成、經提示完成,還是無法完成。功能存在但找不到,也是需要修的問題。

7–11 分鐘|換個使用情境

退出 App 再重開,確認剛才的資料與狀態是否保留。只對你宣稱可離線的功能測斷網;有權限的 App 另測拒絕後的說明。不要把未實作的能力寫進預期結果。

11–15 分鐘|請對方回想

問:「剛剛哪一步最不確定?你預期它會做什麼?什麼情況下會再打開?」接著請對方用自己的話描述這個 App。保留原話與行為,不把客氣的稱讚當成付費意願。

同一輪最好使用相同 build,避免把已修好的舊問題混進新結果。測試資料用虛構內容;需要截圖或錄影時,先讓對方知道會記錄哪些畫面。

四、三份回饋,怎麼決定先改哪裡?

回饋整理成「看到的事 → 影響 → 下一個可驗證改動」。先處理資料遺失、閃退或核心任務無法完成,再處理找不到操作與文字誤解,最後才是偏好與新功能。以下全部是教學用的虛構紀錄。

A:新增完,重開後不見了

先拿 Version(Build)、新增到退出的順序與實際畫面重現。若確認資料遺失,先修保存流程;用原資料重開與升級複測。不能因為「AI 說修好了」就關閉問題。

B:以為完成標記只是裝飾

這是操作理解問題。先試明確的文字或控制項提示,下一位沒看過的人是否能獨立完成?不要只問原測試者「這樣是不是比較清楚」,他已學會位置。

C:希望加 AI 自動排程

先追問他在哪個情境需要,以及目前怎麼處理。沒有影響這輪核心任務就先放待辦,不因一個想法加入帳號、雲端與付費 API,讓第一版失去可驗收的範圍。

請 AI 修正時,附一個問題的重現步驟與通過條件,要求先解釋原因、做最小修改,列出受影響功能。新 build 發出後,請原回報者複測同一條路,再確認新增、完成與重開等相鄰流程仍正常。下載包內有可以直接填寫的版本比較與決策表。

五、朋友裝不了或版本不對,先查哪裡?

後台看不到剛上傳的 build
先確認選對 App/平台,再查看上傳處理結果或錯誤。尚在處理時不急著重傳;遇到具體錯誤才修正 Bundle ID、簽署或上傳要求。
外部群組選不到 build
查看是否仍在處理、缺必要資訊、審核未完成,或上傳時標為 Internal Only。確認該 build 已指派給正確群組,而不是只上傳到 App。
收到邀請,卻無法加入
核對邀請對象、接受邀請的帳號、裝置及 iOS 是否符合 App 與連結條件;公開連結也可能已額滿或關閉。先抄下 TestFlight 的實際訊息,再查對應原因。
昨天還能測,今天失效
TestFlight build 最長可測 90 天,也可能被開發者提早停止。看該 build 狀態並提供新的可測版本,不能把舊邀請當成永久下載網址。
朋友說修好了,你卻還看到舊問題
先比較雙方 TestFlight 的 Version(Build),確認更新的是同一包。保留舊資料測更新,不要一開始就刪 App,否則可能掩蓋資料升級問題。

有效期限與回饋入口見 TestFlight 總覽。測試者可透過 TestFlight 或測試版 App 的截圖流程回報,開發者到 App Store Connect 的 TestFlight Feedback 查看;沒有回報不代表沒有問題,還要確認對方是否真的完成任務。

六、TestFlight 更新版本:舊資料能不能留下?

全新安裝沒問題,不代表舊使用者更新也沒問題。第一輪只是開新 App;第二輪要帶著原本的紀錄走進新版。尤其請 AI 改過資料欄位、保存方式或登入流程時,應把這條路單獨驗收。

Apple 的 TestFlight 測試者說明指出,測試者可更新到可用版本,也可選擇仍可測的舊 build;所選 build 會取代目前安裝的版本,自動更新也可能先換掉它。開始前先確認實際 Version(Build),不要只看邀請信。以下是本站設計的升級測試,不是 Apple 對你的 App 資料保存的保證。

分成兩條路,不要用重裝代替更新

A:帶舊資料更新

同一台測試裝置、同一個 App,先在舊版建立虛構紀錄,再直接更新到指定新版。保留原安裝,不先刪除 App 或清除資料。

B:全新安裝

使用另一個可重置的測試環境,驗證第一次開啟、空白狀態與新增。結果另記,不能用這條路通過來替 A 勾選通過。

用三筆假資料,逐步比對

以待辦 App 為例,先建立兩筆同名「練習項目」,只完成其中一筆,再加一筆「第二天再看」。這是虛構測試資料,不是已完成的測試結果;若你的 App 不允許同名,換成它實際支援的邊界情況。

  1. 先記舊版狀態:Version(Build)、裝置/iOS、三筆內容與完成狀態,拍下比對畫面。先結束再開一次,確定舊版原本就能保存;若這一步失敗,先處理舊版,不把問題誤歸給更新。
  2. 核對版本再更新:確認舊版尚在裝置上,記錄要更新到的 build。若自動更新已先完成,這次「更新前」資料記為缺證據,不能事後補寫成功;安排新的獨立測試。
  3. 第一次打開新版:比較筆數、內容及每筆狀態。三筆變空白、同名紀錄合併或全部變未完成,都要留下實際結果。
  4. 測舊資料仍可操作:只切換其中一筆同名紀錄,再新增「新版新增」。確認另一筆不被連動;結束再開,四筆及各自狀態仍正確。
  5. 再跑原核心任務:重做本輪修正的問題與相鄰功能。若改了登入或同步,另列原帳號與同步情境;本機紀錄通過不代表雲端資料也通過。

發現資料不見時,先保留現場

先停下會繼續寫入的操作,保存版本、步驟、畫面,以及可取得的測試資料副本,再請 AI 查讀取、轉換與寫入流程。不要第一步就重裝或切回舊版:舊程式未必能讀新版已改過的資料。截圖只能證明當時畫面,不是資料備份。

請比較舊 build [填寫] 到新 build [填寫] 的資料格式與讀寫差異。重現步驟:[填寫];更新前:[填寫];更新後:[填寫]。先說明可能原因與如何保留現有資料,再提出最小修正。不要清空資料或只用全新安裝證明修好。列出實際測試、結果與未測情境。

若還沒有可用舊版、沒留下更新前狀態,或無法保留測試環境,就標「升級未測」。這份檢查證明的是指定舊版到新版的這條路;不等於所有版本、裝置或正式上架流程都已驗收。下載包最後新增完整紀錄表,可直接交給下一位測試者。

官方版本操作查核:2026-09-28;三筆測試資料與判斷流程為本站原創教學設計,未實際上傳或安裝讀者的 App。

七、下載試用腳本與回饋決策表

這份 TXT 包含可改寫的邀請稿、What to Test、三人分工、15 分鐘主持稿、每人任務紀錄、回饋分流,修復前後 build 複測,以及保留舊資料更新的雙路徑紀錄表。所有結果預設「未測」,不會替你產生通過紀錄。

下載 TestFlight 試用資料包(TXT)

免登入、可自行編輯。這是教學範本,不是已送出的邀請或真實測試報告。本文依 Apple 官方文件整理操作方式;三人分工與試用腳本為本站設計,未宣稱實際完成 TestFlight 上傳或審核。