این راهنما نحوه اجرای 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 ایجاد کنند. کدهای تولیدشده یک ساعت معتبر خواهند بود و باید هر ۶۰ دقیقه بازآوری شوند. در ایجاد اتصال مبتنی بر کد به APNs بیشتر بخوانید.
گروههای برنامهشناسههای گروه برنامه بهصورت جهانی یکتا هستند. این یعنی وقتی برنامههای کاربر را دوباره امضا میکنیم، فقط میتوانیم از شناسه گروه برنامه مرتبط با حساب توسعهدهنده Test Lab استفاده کنیم. اگر آزمایشتان به گروههای برنامه وابسته باشد، آزمایشتان ناموفق خواهد بود.
اجرای آزمایش «حلقه بازی»
فرمان gcloud beta firebase test ios run را اجرا کنید و از پرچمهای زیر برای پیکربندی اجرا استفاده کنید:
| پرچمهای آزمایشهای «حلقه بازی» | |
|---|---|
--type
|
الزامی: نوع آزمایش iOS را که میخواهید اجرا کنید مشخص میکند. میتوانید
انواع آزمایش |
--app
|
الزامی: مسیر مطلق (GCS یا سیستم فایل) به فایل IPA برنامه شما. این پرچم فقط هنگام اجرای آزمایشهای «حلقه بازی» معتبر است. |
--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 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» را بخوانید.