TestFlight: چیست، تست بتا و کار با بیلدها

نویسنده: IT Sectr منتشر شده: 2026-04-11 زمان مطالعه: 9 دقیقه

TestFlight — سرویس رسمی اپل برای تست بتای برنامه‌های iOS، iPadOS، watchOS و tvOS است. از طریق TestFlight، توسعه‌دهندگان بیلدهای پیش از انتشار را بین حداکثر ۱۰٬۰۰۰ تست‌کننده خارجی توزیع می‌کنند، بازخوردها و گزارش‌های crash را بدون نیاز به انتشار در App Store جمع‌آوری می‌کنند. طبق Apple Developer Documentation, 2025، بیش از ۸۰٪ برنامه‌های App Store در مرحله آماده‌سازی انتشار از TestFlight استفاده می‌کنند.

نکات اصلی

  • TestFlight — پلتفرم اپل برای توزیع نسخه‌های بتای برنامه‌ها بین تست‌کنندگان
  • حداکثر ۱۰٬۰۰۰ تست‌کننده خارجی و حداکثر ۱۰۰ عضو داخلی یک تیم
  • ادغام با Xcode و App Store Connect امکان آپلود بیلدها را مستقیماً از IDE فراهم می‌کند
  • جمع‌آوری خودکار لاگ‌های crash، بازخوردها و داده‌های تشخیصی از تست‌کنندگان
  • بدون TestFlight توزیع بیلدهای iOS خارج از App Store نیاز به گواهی Enterprise یا jailbreak دارد

TestFlight چیست

TestFlight — تنها راه رسمی و قانونی برای توزیع برنامه‌های iOS برای تست بدون انتشار در App Store است. این سرویس توسط اپل در سال ۲۰۱۴ پس از خرید شرکت هم‌نام راه‌اندازی شد. قبل از ظهور TestFlight، توسعه‌دهندگان از توزیع Ad Hoc با محدودیت ۱۰۰ دستگاه در هر فصل استفاده می‌کردند — TestFlight این محدودیت را برداشت و فرآیند را به چند کلیک ساده کرد.

چرا TestFlight لازم است

iOS سیاست امنیتی سختی دارد: برنامه فقط از طریق App Store یا با استفاده از گواهی‌های خاص روی دستگاه نصب می‌شود. TestFlight مشکل تست بتا را با ایفای نقش پروکسی بین توسعه‌دهنده و تست‌کننده حل می‌کند: اپل بیلد را از نظر الزامات اولیه بررسی می‌کند و پس از آن تست‌کنندگان برنامه را از طریق برنامه TestFlight از App Store دریافت می‌کنند که به اعتماد به فایل‌های امضا نشده نیاز ندارد.

TestFlight در مقابل Ad Hoc در مقابل Enterprise

سه راه برای توزیع برنامه‌های iOS خارج از App Store وجود دارد: Ad Hoc (محدودیت ۱۰۰ دستگاه، نیاز به UDID هر دستگاه)، Enterprise (توزیع درون‌سازمانی بدون محدودیت، نیاز به گواهی Enterprise اپل با ۲۹۹ دلار در سال) و TestFlight (حداکثر ۱۰٬۰۰۰ تست‌کننده، رایگان، بدون نیاز به جمع‌آوری UDID). TestFlight انتخاب بهینه برای تست بتا است، Ad Hoc برای تست‌های خاص دستگاه مناسب است، Enterprise — برای برنامه‌های شرکتی.

TestFlight چگونه کار می‌کند

فرآیند انتشار بیلد از طریق TestFlight شامل پنج مرحله است: ساخت در Xcode، آپلود در App Store Connect از طریق Archive Organizer، پردازش توسط اپل، دعوت از تست‌کنندگان، نصب برنامه از طریق برنامه TestFlight. هر مرحله بسته به پیچیدگی پروژه از چند دقیقه تا یک ساعت طول می‌کشد.

الزامات اپل برای بیلد

بیلد باید با گواهی distribution و provisioning profile معتبر ساخته شود. اپل بررسی می‌کند: اعتبار گواهی، تطابق bundle identifier، عدم وجود APIهای خصوصی، صحت آیکون‌ها (۱۰۲۴×۱۰۲۴) و وجود آیکون App Store. اگر بیلد تأیید نشود — TestFlight خطایی با توضیح مشکل نشان می‌دهد.

فرآیند پردازش بیلد

پس از آپلود، بیلد تحت بررسی خودکار اپل قرار می‌گیرد: تحلیل استاتیک کد باینری، بررسی امضای دیجیتال، اسکن برای APIهای خصوصی و بدافزار. پردازش برای اولین بیلد از ۱۵ دقیقه تا ۲ ساعت و برای بیلدهای بعدی معمولاً ۱۵–۳۰ دقیقه طول می‌کشد. وضعیت پردازش در بخش Activity در App Store Connect نمایش داده می‌شود.

swift
// پیکربندی 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 را رعایت می‌کند.

تست‌کنندگان داخلی (Internal)

حداکثر ۱۰۰ شرکت‌کننده از اعضای تیم Apple Developer Program. برای دعوت تست‌کننده داخلی کافی است Apple ID او را در App Store Connect اضافه کنید — او بلافاصله به همه بیلدها دسترسی پیدا می‌کند. نیازی به بازبینی اپل نیست. ایده‌آل برای تست روزانه smoke و بررسی ویژگی‌ها در مراحل اولیه.

تست‌کنندگان خارجی (External)

حداکثر ۱۰٬۰۰۰ شرکت‌کننده خارج از تیم توسعه. اولین بیلد برای تست‌کنندگان خارجی تحت بازبینی اولیه اپل قرار می‌گیرد (معمولاً ۱–۲ روز). بیلدهای بعدی با تغییراتی که بر عملکرد اصلی تأثیر نمی‌گذارند می‌توانند بدون بازبینی مجدد عبور کنند. تست‌کنندگان خارجی از طریق ایمیل یا لینک عمومی دعوت می‌شوند.

پارامترInternal TestersExternal Testers
حداکثر تعداد۱۰۰۱۰٬۰۰۰
بازبینی اپلنیاز نیستاولین بیلد — الزامی
دعوتApple ID از تیمایمیل / لینک عمومی
مدت اعتبار بیلد۹۰ روز۹۰ روز
دسترسی به بیلدهابه همه به طور همزمانفقط گروه‌های فعال

چگونه بیلد را در TestFlight آپلود کنیم

آپلود بیلد در TestFlight از طریق Xcode، Application Loader یا خط فرمان با استفاده از xcrun انجام می‌شود. رایج‌ترین روش — از طریق Xcode Archive Organizer پس از ایجاد آرشیو پروژه است. روش جایگزین — خودکارسازی از طریق Fastlane برای Pipeline CI/CD.

آپلود دستی از طریق Xcode

آرشیو را بسازید (Product → Archive)، Organizer را باز کنید، آرشیو را انتخاب کنید و Distribute App را کلیک کنید. TestFlight را به عنوان روش توزیع انتخاب کنید، گواهی و provisioning profile را مشخص کنید. Xcode بیلد را به App Store Connect آپلود می‌کند که پس از پردازش ظاهر می‌شود. کل فرآیند برای اولین آپلود ۱۰–۲۰ دقیقه طول می‌کشد.

خودکارسازی از طریق Fastlane

Fastlane — محبوب‌ترین ابزار برای خودکارسازی آپلود بیلدها در TestFlight است. دستور fastlane pilot بیلد را بدون باز کردن Xcode آپلود می‌کند و تست‌کنندگان را مدیریت می‌کند. ادغام Fastlane با سرور CI/CD امکان انتشار خودکار بیلدها در TestFlight را پس از گذراندن همه تست‌ها فراهم می‌کند.

ruby
# 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

TestFlight چندین مکانیزم بازخورد ارائه می‌دهد: فرم بازخورد داخلی، جمع‌آوری خودکار لاگ‌های crash، معیارهای استفاده و اسکرین‌شات‌ها. تیم همه داده‌ها را در App Store Connect بدون نیاز به پیاده‌سازی SDKهای شخص ثالث برای تست بتا دریافت می‌کند.

فرم بازخورد داخلی

تست‌کننده برنامه TestFlight را باز می‌کند، بیلد شما را انتخاب می‌کند و Send Feedback را کلیک می‌کند. فرم امکان ارسال بازخورد متنی، پیوست اسکرین‌شات و تعیین severity را فراهم می‌کند. همه بازخوردها در App Store Connect در بخش TestFlight → Feedback جمع‌آوری می‌شوند. توسعه‌دهنده می‌تواند به بازخورد پاسخ دهد و تست‌کننده اعلانی را در برنامه TestFlight دریافت می‌کند.

لاگ‌های crash و تشخیص

در صورت 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 است. همان بیلدی که از طریق TestFlight تست بتا شده است می‌تواند بدون بازسازی به بازبینی اپل ارسال شود — کافی است دکمه‌ای را در App Store Connect کلیک کنید. این امر خطر متفاوت بودن بیلد تولیدی از بیلد تست شده را از بین می‌برد.

Submit to App Review

در App Store Connect بیلدی را که تست شده است انتخاب کنید و Submit for Review را کلیک کنید. اپل از همان بیلد TestFlight استفاده می‌کند — آپلود مجدد لازم نیست. زمان بازبینی معمولاً ۱–۳ روز است. اگر بیلد رد شد — نکات را اصلاح کنید، بیلد جدیدی را در TestFlight آپلود کنید و فرآیند را تکرار کنید.

آخرین بیلد قبل از انتشار

توصیه می‌شود پس از دور نهایی تست در TestFlight ۲۴–۴۸ ساعت قبل از ارسال به بازبینی صبر کنید. این زمان به تست‌کنندگان امکان می‌دهد باگ‌های بحرانی را که ممکن است از تست‌های خودکار عبور کنند کشف کنند. بیلد Release candidate (RC) در TestFlight — استاندارد تیم‌های iOS بالغ است.

بعد از انتشار چه باید کرد

بیلدهای TestFlight پس از انتشار نسخه نهایی در App Store به طور خودکار برای نصب‌های جدید غیرقابل دسترس می‌شوند. تست‌کنندگانی که قبلاً نسخه بتا را نصب کرده‌اند می‌توانند تا ۳۰ روز پس از انتشار به استفاده از آن ادامه دهند و پس از آن برنامه باز نمی‌شود. اطمینان حاصل کنید که تست‌کنندگان به نسخه App Store به‌روزرسانی کرده‌اند.

سوالات متداول

TestFlight برای توسعه‌دهنده چقدر هزینه دارد؟

TestFlight برای شرکت‌کنندگان Apple Developer Program کاملاً رایگان است (۹۹ دلار در سال). برای استفاده از سرویس هزینه اضافی دریافت نمی‌شود، صرف‌نظر از تعداد بیلدها و تست‌کنندگان. شما فقط برای اشتراک توسعه‌دهنده اپل پرداخت می‌کنید — TestFlight به طور پیش‌فرض در آن گنجانده شده است.

آیا می‌توان از TestFlight برای برنامه‌های Android استفاده کرد؟

خیر، TestFlight یک سرویس انحصاری اکوسیستم اپل است. برای Android ابزار مشابهی در Google Play Console وجود دارد — trackهای Internal Testing و Open Testing. برای انتشار نسخه‌های بتا در Android همچنین از Firebase App Distribution و DeployGate استفاده می‌شود.

بیلد در TestFlight چقدر طول می‌کشد تا پردازش شود؟

پردازش برای اولین بیلد پس از آپلود از ۱۵ دقیقه تا ۲ ساعت طول می‌کشد. بیلدهای بعدی سریع‌تر پردازش می‌شوند — معمولاً ۱۵–۳۰ دقیقه. زمان پردازش به بار سرورهای اپل بستگی دارد. وضعیت را می‌توان در App Store Connect در بخش Activity پیگیری کرد.

آیا محدودیتی برای تعداد بیلدها در TestFlight وجود دارد؟

هر بیلد به مدت ۹۰ روز از لحظه آپلود برای تست در دسترس است. تعداد بیلدها محدود نیست، اما حداکثر ۳۰ بیلد می‌توانند همزمان فعال باشند. بیلدهای قدیمی به طور خودکار پس از انقضا یا رسیدن به حد مجاز حذف می‌شوند.

چگونه تست‌کننده بدون Apple ID دعوت کنیم؟

برای شرکت در تست از طریق TestFlight به Apple ID نیاز است. تست‌کنندگان خارجی از طریق لینک ایمیل دعوت می‌شوند — در اولین باز کردن لینک، سیستم در صورت نداشتن Apple ID ایجاد آن را پیشنهاد می‌دهد. لینک عمومی نیز برای انتشار در شبکه‌های اجتماعی یا وبلاگ در دسترس است.

خلاصه

  • TestFlight — سرویس رسمی اپل برای تست بتا، رایگان برای شرکت‌کنندگان Apple Developer Program
  • حداکثر ۱۰٬۰۰۰ تست‌کننده خارجی و ۱۰۰ داخلی بدون جمع‌آوری UDID و پیکربندی دستی دستگاه‌ها
  • جمع‌آوری خودکار لاگ‌های crash، بازخوردها و داده‌های تشخیصی از طریق برنامه TestFlight
  • آپلود بیلدها از طریق Xcode، Application Loader، xcrun altool و Fastlane امکان‌پذیر است
  • همان بیلد از TestFlight به بازبینی در App Store ارسال می‌شود — تفاوت بین نسخه تست شده و نسخه نهایی حذف شده است
  • ۹۰ روز — مدت دسترسی بیلد برای تست، حداکثر ۳۰ بیلد فعال همزمان
  • توصیه: آپلود خودکار بیلدها را در TestFlight از طریق Fastlane و CI/CD برای تست منظم هر ساخت پیکربندی کنید

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید