آزمایش با Google Cloud CLI

این راهنما نحوه اجرای XCTest یا آزمایش «حلقه بازی» را بااستفاده از gcloud CLI شرح می‌دهد.

مرحله ۱: پیکربندی محیط محلی کیت توسعه نرم‌افزار Google Cloud

  1. کیت توسعه نرم‌افزار Google Cloud را بارگیری کنید
  2. این شامل ابزار gcloud CLI می‌شود.

  3. مطمئن شوید نصب شما به‌روز است و شامل فرمان gcloud firebase است:
          gcloud components update
  4. بااستفاده از حساب Google خود به سیستم 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 برنامه را با شناسه دسته نرم‌افزاری جدیدی دوباره امضا می‌کند تا از حقوق ویژه پشتیبانی کند، بنابراین مطمئن شوید هیچ منبعی در فایل zip شما وجود نداشته باشد که حاوی ارجاع مستقیم به شناسه دسته نرم‌افزاری برنامه باشد.

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

برای مجاز کردن درخواست‌های اعلان لحظه‌ای، کاربران می‌توانند بااستفاده از کلید امضای خصوصی به‌همراه شناسه کلید - C7FD9DJAA8 و شناسه تیم - 9CKCGNNUQN، نشان‌های وب JSON ایجاد کنند. کدهای تولیدشده برای یک ساعت معتبر خواهند بود و باید هر ۶۰ دقیقه بازآوری شوند. در Establishing a Token-Based Connection to APNs (برقراری اتصال مبتنی بر کد به APN) بیشتر بخوانید.

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

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

اجرای آزمایش Game Loop

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

پرچم‌های آزمایش‌های Game Loop
--type

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

--app

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

--scenario-numbers

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

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

--device-model

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

--timeout

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

برای مثال:

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

برای مثال، فرمان زیر یک آزمایش «حلقه بازی» را اجرا می‌کند که حلقه‌های ۱، ۴، ۶، ۷، و ۸ را در iPhone 8 Plus اجرا می‌کند:

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، به اسناد مرجع مراجعه کنید.

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

اسکریپت‌نویسی فرمان‌های gcloud با Test Lab

می‌توانید از اسکریپت‌های پوسته یا فایل‌های دسته‌ای برای خودکارسازی فرمان‌های آزمایش برنامه تلفن همراه استفاده کنید که درغیراین‌صورت بااستفاده از خط فرمان 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 همه اجراهای آزمایشی موفق بودند.
1 خطای عمومی رخ داد. علل احتمالی عبارت‌اند از: نام فایلی که وجود ندارد یا خطای HTTP/شبکه.
2 آزمایش به‌دلیل ارائه فرمان‌ها یا آرگومان‌های ناشناخته متوقف شد.
10 یک یا چند مورد آزمایشی (کلاس‌های آزمایش‌شده یا روش‌های کلاس) در اجرای آزمایشی قبول نشد.
15 Firebase Test Lab به‌دلیل خطایی غیرمنتظره نتوانست تشخیص دهد که ماتریس آزمایشی موفق بوده است یا ناموفق.
19 ماتریس آزمایشی توسط کاربر لغو شد.
20 خطای زیرساخت آزمایشی رخ داد.

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

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

مرحله بعدی

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