با Google Cloud CLI تست کنید

این راهنما نحوه اجرای یک تست XCTest یا یک تست حلقه بازی را با استفاده از رابط خط فرمان gcloud شرح می‌دهد.

مرحله 1 : محیط محلی Google Cloud SDK خود را پیکربندی کنید

  1. دانلود SDK گوگل کلود
  2. این شامل ابزار gcloud CLI نیز می‌شود.

  3. مطمئن شوید که نصب شما به‌روز است و دستور gcloud firebase شامل می‌شود:
          gcloud components update
  4. با استفاده از حساب گوگل خود به gcloud CLI وارد شوید:
          gcloud auth login
  5. پروژه Firebase خود را در gcloud تنظیم کنید، که در آن PROJECT_ID شناسه پروژه Firebase شما است:
         gcloud config set project PROJECT_ID

مرحله ۲ : آزمون خود را اجرا کنید

یک XCTest اجرا کنید

  1. فایل .zip تست خود را با اجرای دستور زیر آپلود کنید (اگر هنوز برنامه خود را بسته‌بندی نکرده‌اید، به بخش بسته‌بندی XCTest خود مراجعه کنید):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. ابعاد آزمون خود را انتخاب کنید.

    Test Lab به شما امکان می‌دهد تست‌ها را روی نسخه‌های مختلف iOS، دستگاه‌ها، جهت‌های صفحه نمایش و زبان‌های مختلف اجرا کنید. این پیکربندی‌ها به عنوان ابعاد تست تست شناخته می‌شوند. برای مشاهده گزینه‌های هر بعد (مثلاً نسخه‌های پشتیبانی شده Xcode برای نسخه iOS دستگاه)، در دستور زیر models ، versions یا locales را به جای dimension جایگزین کنید:

    gcloud firebase test ios dimension list

    جهت‌گیری صفحه نمایش تا حدودی ساده‌تر است، زیرا تنها گزینه‌های آن portrait و landscape هستند.

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

  3. پس از انتخاب مجموعه‌ای از ابعاد آزمایشی، می‌توانید با استفاده از دستور firebase test ios run Test Lab ، تست‌های خود را اجرا کنید. برای هر ترکیبی از ابعاد آزمایشی که می‌خواهید روی آن آزمایش کنید، یک پرچم --device جداگانه وارد کنید:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    ممکن است تست شما به دلیل ناسازگاری بین نسخه Xcode که تست با آن ساخته شده است و نسخه پیش‌فرض Xcode که توسط Test Lab استفاده می‌شود، با شکست مواجه شود. برای مشخص کردن نسخه Xcode پشتیبانی شده برای تست خود، از پرچم --xcode-version استفاده کنید:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    برای کمک به شناسایی و مکان‌یابی ماتریس‌های آزمایشی خود در کنسول Firebase ، می‌توانید به صورت اختیاری ماتریس آزمایشی خود را با استفاده از پرچم --client-details matrixLabel="<label>" در مثال زیر برچسب‌گذاری کنید:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

آزمون‌های ویژه حقوقی

برای آزمایش مجوزهایی که به شناسه برنامه صریح نیاز دارند، می‌توانید این کار را با تنظیم پرچم --test-special-entitlements انجام دهید. Test Lab برنامه را با یک شناسه بسته جدید برای پشتیبانی از مجوزهای ویژه مجدداً امضا می‌کند، بنابراین مطمئن شوید که هیچ منبعی در فایل زیپ شما حاوی ارجاع مستقیم به شناسه بسته برنامه نباشد.

حقوق پشتیبانی شده:
  1. اعلان‌های فوری apns-environment
  2. VPN شخصی com.apple.developer.networking.vpn.api
اعلان‌های فشاری

برای تأیید درخواست‌های اعلان‌های فوری، کاربران می‌توانند با استفاده از کلید امضای خصوصی به همراه شناسه کلید - C7FD9DJAA8 و شناسه تیم - 9CKCGNNUQN ، توکن‌های وب JSON ایجاد کنند. توکن‌های تولید شده به مدت یک ساعت معتبر هستند و باید هر 60 دقیقه یکبار به‌روزرسانی شوند. برای اطلاعات بیشتر در مورد ایجاد اتصال مبتنی بر توکن به APNها، به ادامه مطلب مراجعه کنید.

گروه‌های برنامه

شناسه‌های گروه‌های برنامه به طور جهانی منحصر به فرد هستند. این بدان معناست که وقتی برنامه‌های کاربر را دوباره امضا می‌کنیم، فقط می‌توانیم از شناسه گروه برنامه‌ای استفاده کنیم که با حساب توسعه‌دهنده Test Lab مرتبط است. اگر آزمایش شما به گروه‌های برنامه متکی باشد، آزمایش شما با شکست مواجه خواهد شد.

اجرای تست حلقه بازی

دستور gcloud beta firebase test ios run اجرا کنید و از پرچم‌های زیر برای پیکربندی اجرا استفاده کنید:

پرچم‌هایی برای تست‌های حلقه بازی
--type

الزامی : نوع تست iOS که می‌خواهید اجرا کنید را مشخص می‌کند. می‌توانید نوع تست را xctest (پیش‌فرض) یا game-loop وارد کنید.

--app

الزامی : مسیر مطلق (GCS یا سیستم فایل) به فایل IPA برنامه شما. این علامت فقط هنگام اجرای تست‌های حلقه بازی معتبر است.

--scenario-numbers

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

برای مثال، --scenario-numbers=1-3,5 ‎ حلقه‌های ۱، ۲، ۳ و ۵ را اجرا می‌کند.

--device-model

دستگاه فیزیکی که می‌خواهید تست خود را روی آن اجرا کنید (ببینید از کدام دستگاه‌های موجود می‌توانید استفاده کنید).

--timeout

حداکثر مدت زمانی که می‌خواهید تست شما اجرا شود. می‌توانید یک عدد صحیح برای نمایش مدت زمان بر حسب ثانیه، یا یک عدد صحیح و شمارشی برای نمایش مدت زمان به عنوان واحد زمانی طولانی‌تر وارد کنید.

برای مثال:

  • --timeout=200 وقتی تست شما تا ۲۰۰ ثانیه طول بکشد، آن را مجبور به خاتمه می‌کند.
  • --timeout=1h تست شما را مجبور می‌کند وقتی تا یک ساعت طول می‌کشد، خاتمه یابد.

برای مثال، دستور زیر یک تست حلقه بازی را اجرا می‌کند که حلقه‌های ۱، ۴، ۶، ۷ و ۸ را روی آیفون ۸ پلاس اجرا می‌کند:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

برای اطلاعات بیشتر در مورد gcloud CLI، به مستندات مرجع مراجعه کنید.

مرحله ۳ (اختیاری) : خودکارسازی تست‌های آینده‌ای که می‌سازید

اسکریپت نویسی دستورات gcloud با Test Lab

شما می‌توانید از اسکریپت‌های shell یا فایل‌های batch برای خودکارسازی دستورات تست برنامه تلفن همراه استفاده کنید که در غیر این صورت با استفاده از خط فرمان gcloud اجرا می‌کردید. این اسکریپت bash نمونه، یک XCTest را با یک مهلت دو دقیقه‌ای اجرا می‌کند و در صورت موفقیت‌آمیز بودن اجرای تست، گزارش می‌دهد:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

کدهای خروج اسکریپت

Test Lab چندین کد خروج ارائه می‌دهد که می‌توانید از آنها برای درک بهتر نتایج تست‌هایی که با استفاده از اسکریپت‌ها یا فایل‌های دسته‌ای اجرا می‌کنید، استفاده کنید.

کد خروج یادداشت‌ها
0 تمام آزمایش‌های اجرا شده با موفقیت انجام شدند.
۱ یک خطای کلی رخ داده است. دلایل احتمالی عبارتند از: نام فایلی که وجود ندارد یا خطای HTTP/شبکه.
۲ آزمایش به دلیل ارائه دستورات یا آرگومان‌های ناشناخته، خاتمه یافت.
۱۰ یک یا چند مورد آزمایشی (کلاس‌ها یا متدهای کلاس آزمایش‌شده) در یک اجرای آزمایشی با موفقیت انجام نشد.
۱۵ Firebase Test Lab به دلیل یک خطای غیرمنتظره نتوانست تشخیص دهد که آیا ماتریس تست پذیرفته شده یا شکست خورده است.
۱۹ ماتریس آزمون توسط کاربر لغو شد.
۲۰ خطایی در زیرساخت آزمایشی رخ داده است.

مرحله ۴ : بررسی نتایج آزمایش

وقتی آزمایش شروع می‌شود، لینکی به صفحه نتایج آزمایش دریافت می‌کنید. بسته به تعداد پیکربندی‌های مختلفی که انتخاب کرده‌اید و مدت زمان تعیین‌شده برای آزمایش، اجرای آزمایش‌ها می‌تواند چند دقیقه طول بکشد. پس از اجرای آزمایش‌ها، می‌توانید نتایج آزمایش را بررسی کنید. برای کسب اطلاعات بیشتر در مورد نحوه تفسیر نتایج آزمایش، به بخش «تحلیل نتایج Firebase Test Lab مراجعه کنید.

مرحله بعدی

برای بررسی گزینه‌های آزمایشی که به‌طورکلی در دسترس هستند یا در نسخه بتا قرار دارند، مستندات Google Cloud SDK را مطالعه کنید.