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

این راهنما نحوه اجرای تست XCTest یا Game Loop را با استفاده از gcloud CLI شرح می دهد.

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

  1. Google Cloud SDK را دانلود کنید
  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

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

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 است.

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

  3. هنگامی که مجموعه‌ای از ابعاد آزمایشی را انتخاب کردید، می‌توانید از Test Lab با استفاده از فرمان firebase test ios run آزمایش‌های شما را اجرا کنید. برای هر ترکیبی از ابعاد آزمایشی که می‌خواهید آزمایش کنید، یک پرچم --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. Push Notifications apns-environment
  2. VPN شخصی com.apple.developer.networking.vpn.api
Push Notifications

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

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

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

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

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

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

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

--app

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

--scenario-numbers

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

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

--device-model

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

--timeout

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

به عنوان مثال:

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

به عنوان مثال، دستور زیر یک تست Game Loop را اجرا می کند که حلقه های 1، 4، 6، 7 و 8 را در آیفون 8 پلاس اجرا می کند:

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

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

اسکریپت دستورات 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 یک خطای زیرساخت آزمایشی رخ داد.

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

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

مرحله بعدی

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