TestFlight — سرویس رسمی اپل برای تست بتای برنامههای iOS، iPadOS، watchOS و tvOS است. از طریق TestFlight، توسعهدهندگان بیلدهای پیش از انتشار را بین حداکثر ۱۰٬۰۰۰ تستکننده خارجی توزیع میکنند، بازخوردها و گزارشهای crash را بدون نیاز به انتشار در App Store جمعآوری میکنند. طبق Apple Developer Documentation, 2025، بیش از ۸۰٪ برنامههای App Store در مرحله آمادهسازی انتشار از TestFlight استفاده میکنند.
نکات اصلی
TestFlight — تنها راه رسمی و قانونی برای توزیع برنامههای iOS برای تست بدون انتشار در App Store است. این سرویس توسط اپل در سال ۲۰۱۴ پس از خرید شرکت همنام راهاندازی شد. قبل از ظهور TestFlight، توسعهدهندگان از توزیع Ad Hoc با محدودیت ۱۰۰ دستگاه در هر فصل استفاده میکردند — TestFlight این محدودیت را برداشت و فرآیند را به چند کلیک ساده کرد.
iOS سیاست امنیتی سختی دارد: برنامه فقط از طریق App Store یا با استفاده از گواهیهای خاص روی دستگاه نصب میشود. TestFlight مشکل تست بتا را با ایفای نقش پروکسی بین توسعهدهنده و تستکننده حل میکند: اپل بیلد را از نظر الزامات اولیه بررسی میکند و پس از آن تستکنندگان برنامه را از طریق برنامه TestFlight از App Store دریافت میکنند که به اعتماد به فایلهای امضا نشده نیاز ندارد.
سه راه برای توزیع برنامههای iOS خارج از App Store وجود دارد: Ad Hoc (محدودیت ۱۰۰ دستگاه، نیاز به UDID هر دستگاه)، Enterprise (توزیع درونسازمانی بدون محدودیت، نیاز به گواهی Enterprise اپل با ۲۹۹ دلار در سال) و TestFlight (حداکثر ۱۰٬۰۰۰ تستکننده، رایگان، بدون نیاز به جمعآوری UDID). TestFlight انتخاب بهینه برای تست بتا است، Ad Hoc برای تستهای خاص دستگاه مناسب است، Enterprise — برای برنامههای شرکتی.
فرآیند انتشار بیلد از طریق TestFlight شامل پنج مرحله است: ساخت در Xcode، آپلود در App Store Connect از طریق Archive Organizer، پردازش توسط اپل، دعوت از تستکنندگان، نصب برنامه از طریق برنامه TestFlight. هر مرحله بسته به پیچیدگی پروژه از چند دقیقه تا یک ساعت طول میکشد.
بیلد باید با گواهی distribution و provisioning profile معتبر ساخته شود. اپل بررسی میکند: اعتبار گواهی، تطابق bundle identifier، عدم وجود APIهای خصوصی، صحت آیکونها (۱۰۲۴×۱۰۲۴) و وجود آیکون App Store. اگر بیلد تأیید نشود — TestFlight خطایی با توضیح مشکل نشان میدهد.
پس از آپلود، بیلد تحت بررسی خودکار اپل قرار میگیرد: تحلیل استاتیک کد باینری، بررسی امضای دیجیتال، اسکن برای APIهای خصوصی و بدافزار. پردازش برای اولین بیلد از ۱۵ دقیقه تا ۲ ساعت و برای بیلدهای بعدی معمولاً ۱۵–۳۰ دقیقه طول میکشد. وضعیت پردازش در بخش Activity در App Store Connect نمایش داده میشود.
// پیکربندی TestFlight در Swift AppDelegate
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// بررسی: آیا برنامه از طریق TestFlight نصب شده است
if Bundle.main.appStoreReceiptURL?.lastPathComponent
== "sandboxReceipt" {
print("Beta version via TestFlight")
}
return true
}
}
TestFlight تستکنندگان را به دو گروه تقسیم میکند: داخلی (Internal Testers) و خارجی (External Testers). تفاوت در تعداد شرکتکنندگان، دسترسی به بیلدها و نیاز به بازبینی اپل است. انتخاب صحیح گروه فرآیند تست را سرعت میبخشد و سیاستهای App Store را رعایت میکند.
حداکثر ۱۰۰ شرکتکننده از اعضای تیم Apple Developer Program. برای دعوت تستکننده داخلی کافی است Apple ID او را در App Store Connect اضافه کنید — او بلافاصله به همه بیلدها دسترسی پیدا میکند. نیازی به بازبینی اپل نیست. ایدهآل برای تست روزانه smoke و بررسی ویژگیها در مراحل اولیه.
حداکثر ۱۰٬۰۰۰ شرکتکننده خارج از تیم توسعه. اولین بیلد برای تستکنندگان خارجی تحت بازبینی اولیه اپل قرار میگیرد (معمولاً ۱–۲ روز). بیلدهای بعدی با تغییراتی که بر عملکرد اصلی تأثیر نمیگذارند میتوانند بدون بازبینی مجدد عبور کنند. تستکنندگان خارجی از طریق ایمیل یا لینک عمومی دعوت میشوند.
| پارامتر | Internal Testers | External Testers |
|---|---|---|
| حداکثر تعداد | ۱۰۰ | ۱۰٬۰۰۰ |
| بازبینی اپل | نیاز نیست | اولین بیلد — الزامی |
| دعوت | Apple ID از تیم | ایمیل / لینک عمومی |
| مدت اعتبار بیلد | ۹۰ روز | ۹۰ روز |
| دسترسی به بیلدها | به همه به طور همزمان | فقط گروههای فعال |
آپلود بیلد در TestFlight از طریق Xcode، Application Loader یا خط فرمان با استفاده از xcrun انجام میشود. رایجترین روش — از طریق Xcode Archive Organizer پس از ایجاد آرشیو پروژه است. روش جایگزین — خودکارسازی از طریق Fastlane برای Pipeline CI/CD.
آرشیو را بسازید (Product → Archive)، Organizer را باز کنید، آرشیو را انتخاب کنید و Distribute App را کلیک کنید. TestFlight را به عنوان روش توزیع انتخاب کنید، گواهی و provisioning profile را مشخص کنید. Xcode بیلد را به App Store Connect آپلود میکند که پس از پردازش ظاهر میشود. کل فرآیند برای اولین آپلود ۱۰–۲۰ دقیقه طول میکشد.
Fastlane — محبوبترین ابزار برای خودکارسازی آپلود بیلدها در TestFlight است. دستور fastlane pilot بیلد را بدون باز کردن Xcode آپلود میکند و تستکنندگان را مدیریت میکند. ادغام Fastlane با سرور CI/CD امکان انتشار خودکار بیلدها در TestFlight را پس از گذراندن همه تستها فراهم میکند.
# Fastfile — آپلود بیلد در TestFlight
default_platform(:ios)
lane :beta do
# دریافت گواهیها از طریق match
match(type: "appstore")
# ساخت و امضا
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
# آپلود در TestFlight
pilot(
skip_waiting_for_build: true,
distribute_external: false,
notify_external_testers: false
)
end
Fastlane pilot به طور خودکار IPA را در App Store Connect آپلود میکند، منتظر پردازش میماند (اگر skip_waiting_for_build = false باشد) و بیلد را به گروههای انتخابی تستکنندگان اختصاص میدهد. دستور distribute_external: true بلافاصله بیلد را پس از پردازش به تستکنندگان خارجی ارسال میکند.
بدون Fastlane میتوان از xcrun استفاده کرد: xcrun altool --upload-app --file path/to/app.ipa --username YOUR_APPLE_ID --password @keychain:AC_PASSWORD. altool توسط اپل برای محیطهای CI پشتیبانی میشود و به رابط گرافیکی نیاز ندارد. رمز عبور از طریق keychain یا app-specific password منتقل میشود — از رمزهای متن ساده استفاده نکنید.
TestFlight چندین مکانیزم بازخورد ارائه میدهد: فرم بازخورد داخلی، جمعآوری خودکار لاگهای crash، معیارهای استفاده و اسکرینشاتها. تیم همه دادهها را در App Store Connect بدون نیاز به پیادهسازی SDKهای شخص ثالث برای تست بتا دریافت میکند.
تستکننده برنامه TestFlight را باز میکند، بیلد شما را انتخاب میکند و Send Feedback را کلیک میکند. فرم امکان ارسال بازخورد متنی، پیوست اسکرینشات و تعیین severity را فراهم میکند. همه بازخوردها در App Store Connect در بخش TestFlight → Feedback جمعآوری میشوند. توسعهدهنده میتواند به بازخورد پاسخ دهد و تستکننده اعلانی را در برنامه TestFlight دریافت میکند.
در صورت crash برنامه، TestFlight به طور خودکار گزارش crash را جمعآوری میکند: پشته فراخوانی، نسخه سیستم عامل، مدل دستگاه و زمان crash. لاگهای crash در Xcode Organizer (Crashes) و App Store Connect (TestFlight → Crashes) در دسترس هستند. برای دریافت لاگهای crash symbolicated، باید فایلهای dSYM را همراه با بیلد یا جداگانه از طریق Xcode آپلود کنید.
TestFlight معیارها را نشان میدهد: تعداد نصبها، تستکنندگان فعال، جلسات و crashها. تحلیل روزانه بهروزرسانی میشود و به ارزیابی مشارکت تستکنندگان کمک میکند. اگر در یک هفته هیچ تستکنندهای برنامه را باز نکرده است — ارزش بازنگری ارتباط با گروه یا کیفیت بیلد را دارد.
TestFlight بخش جداییناپذیر فرآیند انتشار در App Store است. همان بیلدی که از طریق TestFlight تست بتا شده است میتواند بدون بازسازی به بازبینی اپل ارسال شود — کافی است دکمهای را در App Store Connect کلیک کنید. این امر خطر متفاوت بودن بیلد تولیدی از بیلد تست شده را از بین میبرد.
در App Store Connect بیلدی را که تست شده است انتخاب کنید و Submit for Review را کلیک کنید. اپل از همان بیلد TestFlight استفاده میکند — آپلود مجدد لازم نیست. زمان بازبینی معمولاً ۱–۳ روز است. اگر بیلد رد شد — نکات را اصلاح کنید، بیلد جدیدی را در TestFlight آپلود کنید و فرآیند را تکرار کنید.
توصیه میشود پس از دور نهایی تست در TestFlight ۲۴–۴۸ ساعت قبل از ارسال به بازبینی صبر کنید. این زمان به تستکنندگان امکان میدهد باگهای بحرانی را که ممکن است از تستهای خودکار عبور کنند کشف کنند. بیلد Release candidate (RC) در TestFlight — استاندارد تیمهای iOS بالغ است.
بیلدهای TestFlight پس از انتشار نسخه نهایی در App Store به طور خودکار برای نصبهای جدید غیرقابل دسترس میشوند. تستکنندگانی که قبلاً نسخه بتا را نصب کردهاند میتوانند تا ۳۰ روز پس از انتشار به استفاده از آن ادامه دهند و پس از آن برنامه باز نمیشود. اطمینان حاصل کنید که تستکنندگان به نسخه App Store بهروزرسانی کردهاند.
سوالات متداول
TestFlight برای شرکتکنندگان Apple Developer Program کاملاً رایگان است (۹۹ دلار در سال). برای استفاده از سرویس هزینه اضافی دریافت نمیشود، صرفنظر از تعداد بیلدها و تستکنندگان. شما فقط برای اشتراک توسعهدهنده اپل پرداخت میکنید — TestFlight به طور پیشفرض در آن گنجانده شده است.
خیر، TestFlight یک سرویس انحصاری اکوسیستم اپل است. برای Android ابزار مشابهی در Google Play Console وجود دارد — trackهای Internal Testing و Open Testing. برای انتشار نسخههای بتا در Android همچنین از Firebase App Distribution و DeployGate استفاده میشود.
پردازش برای اولین بیلد پس از آپلود از ۱۵ دقیقه تا ۲ ساعت طول میکشد. بیلدهای بعدی سریعتر پردازش میشوند — معمولاً ۱۵–۳۰ دقیقه. زمان پردازش به بار سرورهای اپل بستگی دارد. وضعیت را میتوان در App Store Connect در بخش Activity پیگیری کرد.
هر بیلد به مدت ۹۰ روز از لحظه آپلود برای تست در دسترس است. تعداد بیلدها محدود نیست، اما حداکثر ۳۰ بیلد میتوانند همزمان فعال باشند. بیلدهای قدیمی به طور خودکار پس از انقضا یا رسیدن به حد مجاز حذف میشوند.
برای شرکت در تست از طریق TestFlight به Apple ID نیاز است. تستکنندگان خارجی از طریق لینک ایمیل دعوت میشوند — در اولین باز کردن لینک، سیستم در صورت نداشتن Apple ID ایجاد آن را پیشنهاد میدهد. لینک عمومی نیز برای انتشار در شبکههای اجتماعی یا وبلاگ در دسترس است.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید