TestFlight คืออะไร: ทดสอบแอป iPhone ก่อนส่งให้ Apple
โดย Mehdi Azizi
อัปเดตเมื่อ , 8 นาที
ผู้ทดสอบภายในหรือภายนอก, การรีวิวเบต้า, ลิงก์สาธารณะ, build ใช้ได้ 90 วัน: อธิบาย TestFlight แบบเข้าใจง่าย พร้อมเช็กลิสต์ก่อนส่งให้ Apple
TestFlight คืออะไร และใช้ทำอะไร?
TestFlight คือบริการของ Apple ที่ให้คุณติดตั้งแอปของคุณบน iPhone เครื่องจริงได้ก่อนที่แอปจะเปิดตัวบน App Store คุณส่ง build เข้า App Store Connect เชิญผู้ทดสอบ แล้วพวกเขาก็ติดตั้งแอปผ่านแอป TestFlight ซึ่งดาวน์โหลดฟรีบน App Store ผู้ทดสอบมีสองแบบ: แบบภายใน (internal) ได้สูงสุด 100 คนที่เป็นสมาชิกทีมของคุณ โดยไม่ต้องผ่านการรีวิวจาก Apple และแบบภายนอก (external) ได้สูงสุด 10,000 คน เชิญผ่านอีเมลหรือลิงก์สาธารณะ หลังจาก build แรกของคุณผ่านการรีวิวเบต้าแล้ว แต่ละ build ใช้ทดสอบได้ 90 วัน
| เกณฑ์ | ผู้ทดสอบภายใน | ผู้ทดสอบภายนอก |
|---|---|---|
| จำนวนสูงสุด | 100 | 10,000 |
| เข้าถึงบัญชีของคุณ | ได้ โดยมีบทบาท (role) | ไม่ได้ |
| วิธีเชิญ | เพิ่มเข้ากลุ่มภายใน | อีเมลหรือลิงก์สาธารณะ |
| การรีวิวเบต้าของ Apple | ไม่มี | ใน build แรก |
| เหมาะกับใคร | ตัวคุณเอง หุ้นส่วน คนใกล้ตัว | เพื่อน ผู้ใช้กลุ่มแรก |
การใช้ TestFlight ต้องมีบัญชี Apple Developer แบบเสียเงิน เพราะบริการนี้ใช้กับบัญชีฟรีไม่ได้ เนื้อหาที่เหลือในคู่มือนี้จึงถือว่าคุณมีบัญชีในโปรแกรมมาตรฐานแล้ว เพราะโปรแกรม Enterprise ของ Apple ใช้ TestFlight ไม่ได้
สำหรับแอปของผม ทุก build ที่ส่งผ่าน EAS Submit จะผ่าน TestFlight และผ่าน iPhone ของผมก่อนส่งไปรีวิวเสมอ ตรงนี้แหละที่ผมเจอปัญหาที่มองไม่เห็นตอนพัฒนา
ส่ง build เข้า TestFlight
build คือเวอร์ชันของแอปที่คอมไพล์และเซ็นชื่อแล้ว ถ้าเซ็นไม่ถูกต้อง Apple จะปฏิเสธตอนส่งด้วยข้อผิดพลาด ITMS-90034 เพื่อให้ build ไปโผล่ใน TestFlight คุณต้องส่งมันไปที่ App Store Connect ถ้าใช้ Expo ก็คือ eas build --platform ios ตามด้วย eas submit --platform ios โดยใช้ build image ที่ใหม่พอเพื่อเลี่ยง ITMS-90725 ตามเอกสารของ Expo build จะปรากฏใน TestFlight หลังจาก Apple ประมวลผลเสร็จ ซึ่งปกติใช้เวลา 10 ถึง 15 นาที ทั้งหมดนี้ทำจาก PC ได้ คู่มือเผยแพร่แอป iOS โดยไม่ใช้ Mac อธิบายขั้นตอนครบทั้งสาย
มีสองเรื่องที่มักทำให้ติดในครั้งแรก:
- หมายเลข build ต้องเปลี่ยนทุกครั้งที่ส่ง Apple ไม่รับสอง build ที่ใช้หมายเลขเดียวกัน ในเวอร์ชันเดียวกัน ถ้าใช้ EAS ให้เปิดการเพิ่มเลขอัตโนมัติ แล้วคุณก็ไม่ต้องคิดเรื่องนี้อีก
- คำถามเรื่องการเข้ารหัส ตราบใดที่คุณยังไม่ตอบคำถามเรื่องการใช้การเข้ารหัส (encryption) build จะค้างอยู่ในสถานะ Missing Compliance คุณจะตอบใน App Store Connect ทุกครั้งก็ได้ หรือประกาศไว้ครั้งเดียวในการตั้งค่าของแอปก็ได้
ผู้ทดสอบภายใน: ทีมของคุณ ไม่ต้องรอ
ผู้ทดสอบภายในคือผู้ใช้ในบัญชี App Store Connect ของคุณที่ได้รับบทบาท (role) Apple อนุญาตได้สูงสุด 100 คน และแต่ละคนติดตั้งแอปได้หลายเครื่อง สูงสุด 30 เครื่อง
ข้อดีใหญ่คือไม่ต้องผ่านการรีวิวเบต้า ทันทีที่ build ประมวลผลเสร็จโดยไม่มีข้อผิดพลาดอัตโนมัติอย่าง ITMS-90717 คุณก็เพิ่มมันเข้ากลุ่มภายในแล้วใช้งานได้เลย กลุ่มนี้เหมาะกับตัวคุณเอง หุ้นส่วน หรือคนใกล้ตัวที่คุณให้สิทธิ์เข้าบัญชี
ข้อจำกัดคือต้องเพิ่มพวกเขาเป็นผู้ใช้ในบัญชี App Store Connect ของคุณ จึงไม่เหมาะกับคนแปลกหน้า
ผู้ทดสอบภายนอกและการรีวิวเบต้า
ผู้ทดสอบภายนอกไม่ต้องมีสิทธิ์เข้าบัญชีของคุณเลย คุณเชิญได้สูงสุด 10,000 คน ผ่านอีเมลหรือลิงก์สาธารณะ กลุ่มนี้เหมาะกับเพื่อน ผู้ใช้กลุ่มแรก หรือคอมมูนิตี้
แลกกับการที่ Apple จะตรวจ build ก่อนเปิดให้พวกเขา เมื่อคุณเพิ่ม build แรกของเวอร์ชันหนึ่งเข้ากลุ่มภายนอก build นั้นจะเข้าสู่การรีวิวเบต้า build ถัดไปของเวอร์ชันเดียวกันไม่จำเป็นต้องรีวิวเต็มรูปแบบเสมอไป
ก่อนส่ง App Store Connect จะขอข้อมูลการทดสอบ:
- คำอธิบายเบต้า ที่บอกผู้ทดสอบว่าควรดูอะไร
- อีเมลสำหรับรับฟีดแบ็ก
- ข้อมูลติดต่อของคุณ เพื่อให้ Apple ติดต่อคุณได้
การรีวิวเบต้าไม่ใช่การรีวิวของ App Store build ที่ผ่านใน TestFlight ยังอาจถูกปฏิเสธตอนเผยแพร่ได้
การรีวิวเบต้าตรวจว่า build ทำตามกฎ แต่การรีวิวรอบสุดท้ายจะดูหน้าแอป การสมัครสมาชิก ข้อความทางกฎหมาย และประสบการณ์ทั้งหมดด้วย ให้จำเหตุผลการปฏิเสธที่พบบ่อยไว้ ซึ่งผมเล่าไว้ในทำไม Apple ถึงปฏิเสธแอป
เชิญผู้ทดสอบผ่านลิงก์สาธารณะ
ลิงก์สาธารณะเป็นวิธีที่ง่ายที่สุดในการให้คนที่คุณยังไม่รู้จักทดสอบแอป นี่คือขั้นตอนของ Apple พร้อมชื่อเมนูภาษาอังกฤษในหน้าจอ:
- ใน App Store Connect เปิดแอปของคุณแล้วไปที่แท็บ TestFlight
- ใต้ External Testing เลือกกลุ่มภายนอกของคุณ
- คลิก Create Public Link
- เลือก Open to Anyone เพื่อเปิดลิงก์ให้ทุกคน หรือ Filter by Criteria เพื่อจำกัดเฉพาะบางอุปกรณ์และบางเวอร์ชันของ iOS
- ถ้าต้องการ ตั้งจำนวนผู้ทดสอบสูงสุดด้วย Set Limit
จากนั้นแชร์ลิงก์ได้ทุกที่: ข้อความ โซเชียลมีเดีย อีเมล คนที่ได้รับจะติดตั้งแอป TestFlight เปิดลิงก์ แล้วกดยอมรับคำเชิญ
สองเรื่องที่ควรรู้ก่อนเผยแพร่ลิงก์ในวงกว้าง:
- ตั้งจำนวนสูงสุดไว้ ถ้าลิงก์ถูกแชร์ต่อมากกว่าที่คิด คุณจะยังควบคุมจำนวนผู้ทดสอบได้
- ผู้ทดสอบผ่านลิงก์สาธารณะจะไม่ระบุตัวตน App Store Connect แสดงแค่วันที่ติดตั้ง จำนวนเซสชัน และการแครชของพวกเขา ถ้าอยากรู้ว่าใครทดสอบอะไร ให้เชิญผ่านอีเมลแทน
build ของ TestFlight ใช้ได้นานแค่ไหน?
build หนึ่งจะเปิดให้ผู้ทดสอบใช้ได้ 90 วัน หลังจากนั้นจะหมดอายุและผู้ทดสอบเปิดไม่ได้อีก ถ้าช่วงเบต้าของคุณยาวกว่านั้น ก็แค่ส่ง build ใหม่ก่อนครบกำหนด
ในทางปฏิบัติ คุณจะส่ง build ใหม่บ่อยกว่านั้นมาก คือทุกครั้งที่แก้บั๊กสำคัญ build ใหม่ทุกตัวที่เพิ่มเข้ากลุ่มจะถูกเสนอให้ผู้ทดสอบ ซึ่งจะอัปเดตได้ในแอป TestFlight
รับฟีดแบ็กจากผู้ทดสอบ
TestFlight มีระบบฟีดแบ็กในตัว: ผู้ทดสอบแคปหน้าจอในแอปของคุณ ใส่หมายเหตุได้ แล้วส่งมาให้คุณ ถ้าแอปแครช คุณจะได้รับรายงานการแครช และผู้ทดสอบเพิ่มรายละเอียดได้ ทั้งหมดดูได้ใน App Store Connect
ระบบนี้มีประโยชน์ แต่ไม่พอสำหรับเข้าใจการแครชแบบเจาะจง ในแอปของผม ผมใส่ Sentry ซึ่งรายงานข้อผิดพลาดพร้อมบรรทัดโค้ดที่เป็นต้นเหตุ และ PostHog ซึ่งแสดงว่าผู้ใช้ทิ้งแอปไปตรงไหน ทั้งสองตัวทำงานได้ทั้งใน build ของ TestFlight และในเวอร์ชันจริง
ทดสอบการสมัครสมาชิกใน TestFlight
ถ้าแอปของคุณขายการสมัครสมาชิก TestFlight คือที่ที่คุณจะเช็กว่ามันใช้งานได้จริง การซื้อใน build ของ TestFlight จะผ่านสภาพแวดล้อมทดสอบของ Apple ผู้ทดสอบจึงไม่ถูกตัดเงิน การต่ออายุจะเร่งให้เร็วขึ้น: การสมัครสมาชิกแต่ละรายการต่ออายุวันละครั้ง สูงสุดหกครั้งในหนึ่งสัปดาห์ ไม่ว่าระยะเวลาจริงจะเป็นเท่าไร
อย่างน้อยให้เช็กว่าราคาที่แสดงถูกต้อง การซื้อปลดล็อกแอปได้จริง และปุ่มกู้คืน (restore) หาการสมัครสมาชิกเจอหลังติดตั้งใหม่ ผมใช้ RevenueCat จัดการการสมัครสมาชิกในแอปของผม การตั้งค่าทั้งหมดตั้งแต่สินค้าใน App Store Connect ไปจนถึง paywall อธิบายไว้ในหน้าการสมัครสมาชิกในแอป iOS
สิ่งที่ต้องทดสอบก่อนส่งให้ Apple
นี่คือรายการที่ผมใช้ก่อนส่งรีวิวทุกครั้ง แต่ละข้อตรงกับเหตุผลการปฏิเสธหรือการแครชที่เลี่ยงได้
การเปิดแอปครั้งแรก
- ลบแอป ติดตั้งใหม่จาก TestFlight แล้วเปิด นี่คือสิ่งที่ผู้รีวิวจะทำ
- ไล่ onboarding ให้ครบ ไม่ข้ามอะไรเลย
- ปฏิเสธทุกสิทธิ์ (การแจ้งเตือน กล้อง ตำแหน่ง) แล้วเช็กว่าแอปยังทำงานต่อได้
เรื่องเงิน
- paywall แสดงราคา ระยะเวลา และลิงก์ไปยังข้อกำหนดการใช้งานและนโยบายความเป็นส่วนตัว
- การซื้อใช้ได้ การกู้คืนก็ใช้ได้
- สินค้าทุกตัวที่ตั้งค่าไว้ผู้รีวิวมองเห็นได้: guideline 2.1 กำหนดให้การซื้อในแอปต้องครบถ้วน มองเห็นได้ และใช้งานได้
สภาพการใช้งานที่ยาก
- โหมดเครื่องบินและเน็ตช้า: ต้องมีข้อความที่ชัดเจน ไม่ใช่หน้าจอขาว
- iPhone จอเล็กที่สุดและจอใหญ่ที่สุดที่คุณรองรับ: ไม่มีอะไรถูกตัด ไม่มีอะไรถูกคีย์บอร์ดบัง หน้าจอที่ถูกตัดบน iPhone จอเล็กนี่แหละที่ทำให้ Solys ของผมโดนปฏิเสธ
- ข้อความยาว ๆ ถ้าแอปของคุณมีหลายภาษา
เอกสารสำหรับผู้รีวิว
- ถ้าแอปต้องล็อกอิน ให้ใส่บัญชีเดโมไว้ในโน้ตรีวิว (review notes) และเปิดแบ็กเอนด์ไว้ guideline 2.1 กำหนดไว้ชัดเจน
- โน้ตรีวิวที่อธิบายในสองประโยคว่าแอปทำอะไร และฟีเจอร์หลักอยู่ตรงไหน
ถ้าแอปของคุณยังโดนปฏิเสธอยู่ดี หน้าแอปถูก Apple ปฏิเสธ อธิบายวิธีตอบกลับโดยไม่เสียเวลาไปหนึ่งสัปดาห์ และถ้าอยากเห็นภาพรวมของการเผยแพร่ ตั้งแต่หน้าแอปจนถึงวันเปิดตัว อ่านเผยแพร่แอปบน App Store
ตารางทดสอบสำหรับกรอกกับ build ของคุณ
ดาวน์โหลดตาราง 16 สถานการณ์ทดสอบในรูปแบบ CSV ตารางแยกเป็นการเตรียมตัว สิ่งที่ต้องทำ ผลที่คาดหวัง และหลักฐานที่สังเกตได้ นำเข้าใน Numbers, Excel หรือ Google Sheets แล้วกรอกเวอร์ชัน อุปกรณ์ และผลของการทดสอบแต่ละครั้ง
สำหรับแอปบันทึกการอ่านสมมติ แค่ “บันทึกหน้า” ไม่พอ: ให้จดหน้า 24 ปิดแอปให้สนิท เปิดใหม่ แล้วตรวจว่าค่ายังอยู่ การทดสอบที่ยังไม่ได้ทำให้คงสถานะ “ยังไม่ได้ทดสอบ” ไว้ ถ้าแอปของคุณไม่มีการสมัครสมาชิก ให้ใส่ “ไม่เกี่ยวข้อง” ในสถานการณ์เกี่ยวกับการซื้อ พร้อมเหตุผลนี้
ตารางนี้เป็นจุดเริ่มต้นที่ต้องปรับให้เข้ากับแอปของคุณ ไม่ใช่ใบรับรอง ดูโน้ตสำหรับ App Review และเทมเพลตฟรีอื่น ๆ เพื่ออธิบายให้ผู้รีวิวรู้ว่าคุณตรวจเส้นทางใช้งานไหนมาแล้วจริง ๆ
จาก TestFlight สู่ App Store
TestFlight คือขั้นที่แอปของคุณกลายเป็นของจริง: มันรันบน iPhone จริง อยู่ในมือคนจริง ในเส้นทางของ iOS Kit นี่คือขั้นที่สอง: สร้างแกนหลักของแอปและทดสอบบน iPhone ของคุณด้วย TestFlight ก่อนเชื่อมการสมัครสมาชิกแล้วเตรียมเผยแพร่
หลัง TestFlight คือการรีวิวของ Apple: Apple Review Kit รวมเช็กลิสต์ก่อนส่งของผมและโน้ตสำหรับผู้รีวิวไว้ หน้าแรกแสดงสี่ขั้นตอนในการสร้างแอปมือถือของคุณด้วย Claude Code
ไม่มีใครรับประกันได้ว่า Apple จะรับแอปของคุณ เพราะ Apple เป็นคนตัดสิน
คำถามที่พบบ่อย
ทดสอบแอป iPhone ด้วย TestFlight ได้อย่างไร?
ส่ง build ไปที่ App Store Connect แล้วเพิ่มเข้ากลุ่มผู้ทดสอบ ถ้าใช้ Expo ให้คอมไพล์ด้วย EAS Build และส่งด้วย EAS Submit build จะปรากฏใน TestFlight หลัง Apple ประมวลผลเสร็จ ปกติ 10 ถึง 15 นาทีตามข้อมูลของ Expo ผู้ทดสอบติดตั้งผ่านแอป TestFlight ซึ่งฟรีบน App Store คุณต้องมีบัญชี Apple Developer แบบเสียเงิน
สร้างลิงก์ TestFlight เพื่อเชิญผู้ทดสอบได้อย่างไร?
ใน App Store Connect เปิดแท็บ TestFlight ของแอป เลือกกลุ่มของคุณใต้ External Testing แล้วคลิก Create Public Link เลือก Open to Anyone หรือ Filter by Criteria แล้วตั้งจำนวนสูงสุดด้วย Set Limit ผู้ทดสอบผ่านลิงก์สาธารณะจะไม่ระบุตัวตน ถ้าอยากรู้ว่าใครทดสอบอะไร ให้เชิญผ่านอีเมลแทน
การรีวิวเบต้าของ TestFlight แทนการรีวิวของ App Store ได้ไหม?
ไม่ได้ การรีวิวเบต้าตรวจว่า build ทำตามกฎ แต่การรีวิวรอบสุดท้ายจะดูหน้าแอป age rating การสมัครสมาชิก ข้อความทางกฎหมาย และประสบการณ์ทั้งหมดด้วย build ที่ผ่านใน TestFlight จึงยังอาจถูกปฏิเสธตอนเผยแพร่ได้ มีเพียงผู้ทดสอบภายนอกที่ทำให้เกิดการรีวิวเบต้า ใน build แรกของแต่ละเวอร์ชัน ส่วนผู้ทดสอบภายในไม่ต้องผ่านการรีวิวเลย
เชิญผู้ทดสอบใน TestFlight ได้กี่คน?
คุณเชิญผู้ทดสอบภายในได้สูงสุด 100 คน และผู้ทดสอบภายนอกได้สูงสุด 10,000 คน ผู้ทดสอบภายในคือสมาชิกในบัญชี App Store Connect ของคุณ ไม่ต้องผ่านการรีวิวเบต้า และแต่ละคนติดตั้งแอปได้สูงสุด 30 เครื่อง ผู้ทดสอบภายนอกเชิญผ่านอีเมลหรือลิงก์สาธารณะ หลัง build แรกผ่านการรีวิวเบต้า แต่ละ build ใช้ทดสอบได้ 90 วัน
ทดสอบการสมัครสมาชิกใน TestFlight โดยไม่ถูกตัดเงินได้ไหม?
ได้ การซื้อใน build ของ TestFlight จะผ่านสภาพแวดล้อมทดสอบของ Apple ผู้ทดสอบจึงไม่ถูกตัดเงิน การต่ออายุจะเร่งให้เร็วขึ้น: การสมัครสมาชิกแต่ละรายการต่ออายุวันละครั้ง สูงสุดหกครั้งในหนึ่งสัปดาห์ ไม่ว่าระยะเวลาจริงจะเป็นเท่าไร อย่างน้อยให้เช็กราคาที่แสดง การปลดล็อกแอป และการกู้คืนหลังติดตั้งใหม่ การตั้งค่าทั้งหมดอธิบายไว้ในการสมัครสมาชิกในแอป iOS
ต้องเช็กอะไรใน TestFlight ก่อนส่งแอปให้ Apple?
ติดตั้งแอปใหม่จาก TestFlight แบบเดียวกับที่ผู้รีวิวจะทำ แล้วไล่ onboarding ให้ครบ ปฏิเสธทุกสิทธิ์ ทดสอบการซื้อและการกู้คืน จากนั้นลองโหมดเครื่องบิน และ iPhone จอเล็กที่สุดกับจอใหญ่ที่สุดที่คุณรองรับ ถ้าแอปต้องล็อกอิน ให้เตรียมบัญชีเดโมไว้ในโน้ตรีวิว และเปิดแบ็กเอนด์ไว้