این راهنما نحوه اجرای XCTest یا آزمایش «حلقه بازی» را بااستفاده از gcloud CLI شرح میدهد.
مرحله ۱: پیکربندی محیط محلی کیت توسعه نرمافزار Google Cloud
- کیت توسعه نرمافزار Google Cloud را بارگیری کنید
- مطمئن شوید نصب شما بهروز است و شامل
فرمان
gcloud firebaseاست:gcloud components update - بااستفاده از حساب Google خود به سیستم gcloud CLI وارد شوید:
gcloud auth login - پروژه Firebase خود را در gcloud تنظیم کنید، جایی که PROJECT_ID
شناسه پروژه Firebase شما است:
gcloud config set project PROJECT_ID
این شامل ابزار gcloud CLI میشود.
مرحله ۲: اجرای آزمایش
اجرای XCTest
فایل zip .آزمایشتان را با اجرای فرمان زیر بارگذاری کنید (اگر هنوز برنامهتان را بستهبندی نکردهاید، به بستهبندی کردن XCTest مراجعه کنید):
cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
ابعاد آزمون را انتخاب کنید.
Test Lab به شما امکان میدهد آزمایشها را در انواع نسخههای iOS، دستگاهها، جهتهای صفحهنمایش، و زبانهای مختلف اجرا کنید. این پیکربندیها بهعنوان ابعاد آزمایش شناخته میشوند. برای دیدن گزینههای هر بُعد (مثلاً نسخههای Xcode پشتیبانیشده برای نسخه iOS دستگاه)،
models،versions، یاlocalesرا در فرمان زیر جایگزینdimensionکنید:gcloud firebase test ios dimension list
جهت صفحهنمایش تاحدودی سادهتر است، زیرا تنها گزینههای آن
portraitوlandscapeاست.فهرست ابعاد آزمایش را بررسی کنید و چند ترکیب را که میخواهید آزمایش را روی آنها اجرا کنید انتخاب کنید. برای دیدن حداکثر تعداد ترکیبهایی که میتوانید در روز اجرا کنید، به طرحهای قیمتگذاری بروید.
پساز انتخاب مجموعهای از ابعاد آزمایشی، میتوانید بااستفاده از فرمان
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 شما وجود نداشته باشد که حاوی ارجاع مستقیم به شناسه دسته نرمافزاری برنامه باشد.
- اعلانهای لحظهای
apns-environment - ویپیان شخصی
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 را که میخواهید اجرا کنید مشخص میکند. میتوانید
انواع آزمایش |
--app
|
الزامی: مسیر مطلق (GCS یا سیستم فایل) به فایل IPA برنامهتان. این پرچم فقط هنگام اجرای آزمایشهای Game Loop معتبر است. |
--scenario-numbers
|
حلقههایی (یا سناریوهایی) که میخواهید در برنامهتان اجرا شود. میتوانید یک حلقه، فهرستی از حلقهها، یا طیفی از حلقهها را وارد کنید. حلقه پیشفرض ۱ است.
برای مثال، |
--device-model
|
دستگاه فیزیکی که میخواهید آزمایشتان را روی آن اجرا کنید (ببینید از کدام دستگاههای دردسترس میتوانید استفاده کنید). |
--timeout
|
حداکثر مدت زمانی که میخواهید آزمایشتان اجرا شود. میتوانید عدد صحیحی را برای نشان دادن مدت به ثانیه وارد کنید، یا عدد صحیح و شمارشی را برای نشان دادن مدت بهعنوان واحد زمانی طولانیتر وارد کنید. برای مثال:
|
برای مثال، فرمان زیر یک آزمایش «حلقه بازی» را اجرا میکند که حلقههای ۱، ۴، ۶، ۷، و ۸ را در 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 را بخوانید.