نسخه جدید اپ iOS فایبرنت که تموم شد، برای تست گرفتن رو چندتا دیوایس مختلف و بچه‌هایی که داخل تیم یا دوستایی که بیرون تیم بودن باید یه راه خوب پیدا می‌کردم.

وقتی که روی اندروید کار می‌کنید، راه حل مختلفی وجود داره! راحت‌ترین راهش اینه که یه بیلد APK بگیری، بفرستیش واسه کسایی که میخوای، اونا هم اگه باگی پیدا کنن و یا بخوان نتیجه تست رو بهتون میگن به راحتی به اطلاعاتون میرسونن. البته میتونین از ابزارهای دیگه‌هم استفاده کنین، ‌مثل سرویس تست Firebase یا شرکتای دیگه که ازین خدمات میدن.

اما وقتی روی iOS کار میکنی، ‌معمولا یه انتخاب بیشتر نداری؛ اونم سرویسیه که خود iTunes بهت میده و اسمشم هست TestFlight.

در این پست میخوام درمورد آماده کردن اپ و انجام فرآیند تست‌فلایت صحبت کنم. پس کمربندهاتون رو برای یه پرواز لذت‌بخش ببنیدن.

فهرست

ابزار TestFlight چیست؟

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

وقتی که شما یه نسخه تستی از اپتون رو روی تست‌فلایت میفرستین، و اونها ۹۰ روز (قبلا ۶۰ روز بوده) فرصت دارن تا اپ شمارو تست کرده و بهتون فیدبک بدن.

کمتر حرف بزنیم و وارد بخش عملی بشیم.

توجه پیش از شروع

  • برای استفاده از این سرویس نیازه که حتما اکانت توسعه‌دهنده Individual یا Enterprise داشته باشین.
  • اگر از xcode غیر 9.3 استفاده می‌کنید، ممکنه برخی منوهایی که در این پست میبینید با چیزی که شما دارین فرق کنه. نگران نباشید، فرآیند کلی همیشه همینه.

TestFlight Beta Testing

آماده سازی اپ برای TestFlight

قبل از اینکه هرکاری بکنیم، لازمه که دو مشخصه Version و Build اپمون رو ست کنیم. از Navigator اپ رو انتخاب کرده و از لیست Targest اپ رو انتخاب کنید. در بخش Identity مشخصات اپ رو باید وارد کنیم. متاسفانه اپل اجازه نمیده که برای version هیچ نامی از نوع String بنویسیم بلکه فقط باید از متد Semantic Versioning پیروی کنیم. برای مثال نمیتونیم بنوسیم 2.0 beta بلکه باید بنویسیم 2.0.0 یا هر ورژن دیگه‌ای که مد نظرتون هست. اگه راجع به نوع شماره گذاری ورژن اطلاع ندارید بهتره داکیونت خود سیمنتک رو بخونید. نسخه build هم که احتمالا می‌دونید، به ازای هربار بیلد و انتشار باید اون رو increment کرده یا همون افزایش بدید.

در نهایت من برای اینکه نسخه بتا رو مشخص کنم در Display Name عبارت beta رو استفاده کردم. (هواستون باشه بعدا برای ریلیز اصلی beta رو بردارید)

TestFlight Beta Testing

از منوی نوار ابزا توسعه، دیوایسی که میخوام اپ رو منتشر کنیم رو میگذاریم روی Generic iOS Device.

TestFlight Beta Testing

بعد هم از نوار ابزار اصلی، منو Product گزینه Archive رو انتخاب کرده و صبر می‌کنیم تا اپمون رو پکیج کنه.

TestFlight Beta Testing

بعد از بیلد پنجره Orginizer باز میشه خودش. در صفحه اپمون که بیلد شده رو میبینید. نسخه‌ای که تمایل به بیلد دارید رو انتخاب کرده و بعد باید روی دکمه Upload to App Store کلیک کنید. (البته میتونید از نوار ابزار اصلی، منوی Window به پنجره Organizer دسترسی پیدا کنید)

TestFlight Beta Testing

بعدش هم دونه دونه پنجره‌هایی که باز میشه رو اکسپت کنید تا بره واسه ارسال به اپستور.

TestFlight Beta Testing

TestFlight Beta Testing

TestFlight Beta Testing

TestFlight Beta Testing

و درنهایت که اپتون با موفقیت ارسال شد این پیغام رو می‌بینید.

TestFlight Beta Testing

در مرحله بعد باید بریم سراغ آماده سازی خود iTunesConnect.

تعریف کاربران تست داخلی

در تست فلایت دو نوع کاربر تست داریم، Internal Tester (که در نسخه جدید itunes تبدیل شده به iTunes Users) و External Users.

  • iTunes users: کاربرانی هستن،‌ که معمولا در تیم شما قرار دارند یا افرادی هستن که متقابلا همدیگه رو میشناسین و بهم اعتماد دارین. شما می‌تونید حداکثر تا ۲۵ نفر رو برای تست بتا انتخاب کنید. این افراد بدون هیچ معطلی و Review، میتونن اپتون و دریافتو تست کرده و درنهایت feedback بدن.
  • External Users: کسایی هستن که در تیم شما وجود ندارن، بلکه یکسری از کاربرانتون هستن که اعلام آمادگی کردن که تمایل دارن در تستهاتون شرکت کنن و البته الزاما در داخل تیم توسعه شما نیستن. شما در هربار تست می‌تونید تا ۱۰هزار کاربر انتخاب کنید (قبلا ۶۰۰۰ بود). اپ قبل از اینکه بدست این کاربران برسه باید توسط اپل Review و تست بشه تا مشکل امنیتی نداشته باشه، و بعد از اون در اختیار کاربران شما قرار میگیره. فرآیندی مثل انتشار اپ روی اپستور داره.

برای تعریف کاربران تست داخلی یا Internal اول وارد پنل itunesconnect.apple.com بشید و سپس از منوها به گزینه Users Role بروید.

TestFlight Beta Testing

در این صفحه لازمه که شما افرادی که میخواهید در تست‌های Internal شرکت میکنند رو ثبت کنید. روی علامت + کلید کنید.

TestFlight Beta Testing

در صفحه افزودن کاربر جدید مشخصات کاربر به همراه Apple IDشون رو ثبت کنید.

TestFlight Beta Testing

در صفحه بعد باید Role یا نقش این کابر جدید رو تعریف کنید. حداقل Roleی که میتونه در تست مشارکت داشته باشه Marketer هست.

TestFlight Beta Testing

یادتون نره که حتما کاربر رو به اپ مورد نظرتون assign کنید، البته اگه چندتا اپ دارین و فرقی براتون نمیکنه و تمایل دارین به همشون دسترسی مشابه رو داشته باشه، بزارید همون گزینه All Apps بمونه. TestFlight Beta Testing

و بعدش میزان دسترسی که مد نظرتون هست رو در براش ست کنید. (البته اگه گزینه Marketer رو انتخاب کرده‌بودید)

TestFlight Beta Testing

توانایی‌های هرکدوم از نقش‌هارو می‌تونید در جدول زیر ببینید:

TestFlight Beta Testing

خب کاربر به لیست اضافه شد. بعد از اضافه شدن، کاربر مورد نظر باید ایمیلی که براش اومده رو تایید کنه تا به عنوان کاربر Role مورد نظر، ثبت نهایی شه. شما از همین صفحه میتونید Role و برخی مشخصات کاربر رو ویرایش کنید.

TestFlight Beta Testing

ایجاد یک Test Case

بعد از اینکه کاربر بطور کامل تایید و فعال شد، از پنل itunesconnect به بخش MyApps رفته و اپ خودتون رو انتخاب کنید. در این صفحه وارد تب Activty بشین و مطمئین بشید که اپتون در حالت Process نباشه و فرآیند بررسی و پردازش اولیه‌ش تموم شده باشه.

TestFlight Beta Testing

سپس وارد بخش TestFlight میشیم. از دسته Builds روی iOS کلیک میکنیم تا لیست اپ‌های قابل تست رو بیاره. همونطور که میبینید اپ‌ی رو که اضافه کردیم کنارش یه Warning داده و گفته Missing Compliance. روش کلیک میکنیم تا مواردی که ازمون میخواد رو تایید کنیم. این اطلاعات مربوط به این میشه که آیا اپلیکیشن شما Encryption و امنیت اطلاعات کاربر رو رعایت کرده؟ و آیا با قوانین ایالات متحده منافاتی نداره؟ و چیزای مثل این، که روی همه‌ي nextها میزنیم بره پی کارش.

TestFlight Beta Testing

TestFlight Beta Testing

TestFlight Beta Testing

TestFlight Beta Testing

خب حالا اپمون آماده‌ست برای انتشار به افرادی که در گروه‌های تست ما قرار دارند.

TestFlight Beta Testing

کاربران Internal

برای اینکه افرادی که در اینترنال قرار دارند رو مشخص کنید، از دسته Tester & Groups گزینه iTunes Connect Users رو انتخاب می‌کنیم. با کلیک روی علات + می‌تونید افرادی رو که میخواید اپ بتا برای تست رو دریافت کنند انتخاب کنید. این افراد همونهای هستند که در بخش User Roles قبلا تعریف و فعالشون کردیم.

TestFlight Beta Testing

کاربران External

مثل سری قبل، از دسته Tester & Groups گزینه Add External Tester رو انتخاب می‌کنیم، در پنجره‌ای که باز میشه، بهمون میگه که واسه گروهی که قراره اپ رو تست کنن یه اسم بنویسیم.

TestFlight Beta Testing

حالا باید تستر جدید اضافه کنیم، کافیه در گروه جدیدمون روی Add Tester کلیک کنیم. در صفحه جدید بهمون این امکان رو میده که به ۳ روش کاربر تست اضافه کنیم.

  • New Tester : که مثل حالت تعریف کردن internal tester هست.
  • Existing Tester : میتونیم از بین کاربرای اینترنال به این گروه کاربر اضافه کنیم. فکر کنین تو شرکتتون ۵۰تا کارمند دارین، فقط ۲۰ نفرشون میتونن تو اینترنال شرکت کنن، الباقی رو باید به همین روش به عنوان کاربر اکسترنال اضافه کنید. (توجه کنید که کاربری که در حالت Internal انتخاب کردید، نمیتونه در گروه External هم حضور داشته باشه.)
  • CVS List : و گزینه سوم که بهمون این امکان رو میده تا از طریق یا فایل CSV کاربرانمون رو ایمپورت کنین. فرض کنین یه فرم گذاشتین تو سایتتون تا کاربرای که تمایل دارن تو تست شرکت کنند رو بیارون تو تست فلایت، مثلا ۵هزار کاربر ثبتنام کردن، بجای اینکه دستی دونه دونه اضافه کنید، با این روش تا ۱۰ هزار کاربر رو میتونید اضافه کنید.

TestFlight Beta Testing

اگه خواستید با CSV کاربر اضافه کنید، ازین قالب CSV استفاده کنید تا فرمت فایلتون صحیح باشه.

بعد از کلیک روی Add New Tester به صفحه‌ای رسیدم که بصورت دستی کاربران تست External رو باید وارد کنیم. برای مثال باز مشخصات خودم رو مینویسم:

TestFlight Beta Testing

و میبینید که من به لیست External اضافه شدم.

TestFlight Beta Testing

وارد تب Build شده و روی تب + کلیک می‌کنیم. در پنجره‌ای که باز میشه، اون بیلد از اپمون رو که دوست داریم ازش تست اکسترنال بگیریم انتخاب می‌کنیم.

TestFlight Beta Testing

اگر اپ احتیاج به Sign in داشته باشه، مشخصات یه اکانت تست رو توش می‌نویسیم تا کابرا در sign-in مشکل نداشته باشن.

TestFlight Beta Testing

و همونطور هم که از اسکرین‌شات پایین برمیاد، یه توضیح باید واسه رویوو کننده و البته کاربر تست بنویسیم (اگه احتیاج به توضیحی بود البته).

تیک Automatically notify testers رو هم بزارین باشه تا بعد از اینکه اپ آماده تست شد خود اپل به اونا خبر بده که برن برای تست. (معمولا بصورت ایمیلی یا نوتیفیکیشن بهشون خبر میده)

TestFlight Beta Testing

و در نهایت اپتون میره برای Reviewو در صورتی که (انشاالله) بدون مشکل تایید بشه، میرسه دست کاربرانتون برای تست. تقریبا بین ۱۲ تا ۲۴ ساعت (اگر مشکلی نباشه) اپتون برای تست بتا تایید شده و در اختیار کاربرا قرار میگیره.

TestFlight Beta Testing

TestFlight Beta Testing

به محض انتشار اپ برای تست، براشون ایمیل و نوتیفیکیشن میره (اگه اون تیک Automatically که گفتم رو زده باشین). کاربرا ۶۰ روز فرصت دارن تا کار تست رو انجام داده و در صورت لزوم feedback بدن.

هنگامی که داشتم این پست رو مینوشتم همزمان هم نسخه تست رو فرستادم بالا، در کمتر از ۶ ساعت تایید شد و در اختیار لیست کاربرای External قرار گرفت.

TestFlight Beta Testing

TestFlight Beta Testing

اطلاعات تست

اگر در حین تعریف تست (احتمالا اولین‌باری که دارید روند تست رو انجام می‌دید) به خطای نبود اطلاعات تست برخوردید، باید از بخش App Information گزینه Test Information رو انتخاب کنید و مشخصات خودتون رو وارد کنید. اطلاعاتی مثل ایمیل (برای دریافت feedback)، آدرس وبسایتتون، آدرس قوانین و حریم شخصی در وبسایتتون، مشخصات تماس شما از قبیل نام و شماره تلفن، مجددا همون اکانت تست و توضیحاتی که لازمه.

TestFlight Beta Testing

تست Beta توسط کاربر

اول از همه نیازه تا کاربر اپلیکیشن TestFlight رو از اپستور دریافت و روی دیوایس خودش نصب کنه. کاربر تمامی آپدیت‌ها و نوتفیکیشن‌ها برای تست رو از طریق این اپلیکیشن دریافت میکنه.

TestFlight Beta Testing

اگر احتیاج به لاگین داشت که باید با همون اپل‌ایدی که بعنوان کاربر تست معرفی شده لاگین کنید. ایمیل جهت تایید دریافت نسخه تست به دست شما (کاربر) میرسه به ایمیل رفته و روی دکمه view in TestFlight کلیک کنید.

TestFlight Beta Testing

اگر اپ تست‌فلایت روی آیفون نصب بوده، و اکانت اپل IDتون هم بدون مشکل لاگین باشه، این صفحه در اپلیکیشن TestFlight براتون ظاهر میشه که باید Accept کرده و سپس اپ رو نصب کنید.

TestFlight Beta Testing

در بعضی موارد بعد از کلیک روی اون دکمه آبی view in TestFlight، به سمت سایت اپل هدایت می‌شید، ازتون درخواست میکنه که لاگین کنید، قوانینش رو تایید کنید و بعد از تایید شمارو میفرسته به یه صفحه که یه کد (معمولا) ۸ حرفی داره، اون رو کپی کنید.

TestFlight Beta Testing

اگر اپ تست‌فلایت روی آیفون نصب بوده، و اکانت اپل IDتون هم بدون مشکل لاگین باشه، این صفحه در اپلیکیشن TestFlight براتون ظاهر میشه که باید Accept کرده و سپس اپ رو نصب کنید.

TestFlight Beta Testing

بعد از تایید و نصب، نسخه تست با نقطه قرمزی که کنارش مشخص شده، روی صفحه اپهاتون ظاهر میشه. اگه قبلا یه نسخه نصب کرده باشید و نسخه جدید روی اون نصب کنید، نقطه آبی کنارش ظاهر میشه.

TestFlight Beta Testing

در صورتی که در اپلیکیشن باگ یا مشکلی پیدا کردین، یا که پیشنهادی داشتین، از همون اپ TestFlight می‌تونید به توسعه دهنده FeedBack رو ارسال کنید.

TestFlight Beta Testing

باقی چیزهایی هم که در Test Information ثبت کرده بودیم از داخل همین صفحه در اختیار کاربر تست هست و میتونه اونهارو مشاهده کنه.

لغو نسخه تست

درصورتی که بعد یه مدت زمان مشخص، مثلا چند هفته یا یکی دو ماه تشخیص دادین که دیگه کافیه و نیازی به ادامه تست نیست، و یا موردی در اپ وجود داشت که نیاز بود هرچه سریعتر نسخه تست رو از دست همه کاربران تستتون خارج کنید. فقط کافیه وارد بخش TestFlight شده. به دسته Builds و بخش iOS رفته، نسخه مورد نظرتون رو انتخاب کنید. در نهایت روی دکمه Expire Build کلیک کرده و تاییدش کنید.

TestFlight Beta Testing

اینجوری اپتون از دسترس آپدیت خارج میشه و دیگه نمیتونن بهش دسترسی داشته باشه.

جمع‌بندی

میدونم خیلی طولانی و گیج کننده بود، ‌ولی یکبار که فرآیندش رو طی کنید، همه‌چیز براتون روال میشه. این بهترین، سریعترین، امن‌ترین و تمیزترین کاریه که شما می‌تونید برای تست بتا انجام بدین.

اگه تمایل داشتین راجع به تست فلایت بیشتر بدونید، بهترین منبع داکیومنت خودشه که می‌تونید از صفحه TestFlight Beta Testing Documentation اون رو مطالعه کنید. صفحه اپل هم خودش بطور خلاصه راجع به این سرویس در این صفحه صحبت کرده، و هرچی منبع و مقاله و ویدئو راجع به تست‌فلایت هست رو آورده، مثل ویدئوِ TestFlight Traning Process.

این پست حاصل تجربه شخصی من از تست فلایت و خوندن و دیدن چند مقاله و ویدئو بوده. امیدوارم تو این پست کامل و جامع راجع به سرویس TestFlight صحبت کرده و تمام گوشه‌های تاریکش رو براتون روشن کرده باشم.

تمامی فرآیند انتشار و آزمون تست رو در روند توسعه اپلیکیشن فایبرنت انجام دادیم. از تیم خوبم برای پشتیبانی و تست تمامی مراحل و نسخه‌های بتا تشکر میکنم. مرسی از مهسا بخاطر تستهای دقیقش، از مهدی بابت همراهی و راهنماییهاش و همچنین فرامرز (برای توسعه بک‌اند) و شایان (برای طراحی UI).

TestFlight Beta Testing

اگه سوال یا موردی بود، مثل همیشه در توییتر یا در تلگرام میتونیم باهم در ارتباط باشیم. 😉🍷