آزمایش با 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 ایجاد کنند. کدهای تولیدشده یک ساعت معتبر خواهند بود و باید هر ۶۰ دقیقه بازآوری شوند. در ایجاد اتصال مبتنی بر کد به APNs بیشتر بخوانید.

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

شناسه‌های گروه برنامه به‌صورت جهانی یکتا هستند. این یعنی وقتی برنامه‌های کاربر را دوباره امضا می‌کنیم، فقط می‌توانیم از شناسه گروه برنامه مرتبط با حساب توسعه‌دهنده 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 باعث می‌شود وقتی آزمایش تا یک ساعت اجرا شد، به‌اجبار خاتمه یابد.

برای مثال، فرمان زیر یک آزمایش «حلقه بازی» را اجرا می‌کند که حلقه‌های ۱، ۴، ۶، ۷، و ۸ را در 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 CLI، به اسناد مرجع مراجعه کنید.

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

نوشتن اسکریپت دستورات 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» را بخوانید.