این راهنما نحوه اجرای یک تست XCTest یا یک تست حلقه بازی را با استفاده از رابط خط فرمان gcloud شرح میدهد.
مرحله 1 : محیط محلی Google Cloud SDK خود را پیکربندی کنید
- دانلود SDK گوگل کلود
- مطمئن شوید که نصب شما بهروز است و دستور
gcloud firebaseشامل میشود:gcloud components update - با استفاده از حساب گوگل خود به 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 runTest 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 برنامه را با یک شناسه بسته جدید برای پشتیبانی از مجوزهای ویژه مجدداً امضا میکند، بنابراین مطمئن شوید که هیچ منبعی در فایل زیپ شما حاوی ارجاع مستقیم به شناسه بسته برنامه نباشد.
- اعلانهای فوری
apns-environment - VPN شخصی
com.apple.developer.networking.vpn.api
برای تأیید درخواستهای اعلانهای فوری، کاربران میتوانند با استفاده از کلید امضای خصوصی به همراه شناسه کلید - C7FD9DJAA8 و شناسه تیم - 9CKCGNNUQN ، توکنهای وب JSON ایجاد کنند. توکنهای تولید شده به مدت یک ساعت معتبر هستند و باید هر 60 دقیقه یکبار بهروزرسانی شوند. برای اطلاعات بیشتر در مورد ایجاد اتصال مبتنی بر توکن به APNها، به ادامه مطلب مراجعه کنید.
گروههای برنامهشناسههای گروههای برنامه به طور جهانی منحصر به فرد هستند. این بدان معناست که وقتی برنامههای کاربر را دوباره امضا میکنیم، فقط میتوانیم از شناسه گروه برنامهای استفاده کنیم که با حساب توسعهدهنده Test Lab مرتبط است. اگر آزمایش شما به گروههای برنامه متکی باشد، آزمایش شما با شکست مواجه خواهد شد.
اجرای تست حلقه بازی
دستور gcloud beta firebase test ios run اجرا کنید و از پرچمهای زیر برای پیکربندی اجرا استفاده کنید:
| پرچمهایی برای تستهای حلقه بازی | |
|---|---|
--type | الزامی : نوع تست iOS که میخواهید اجرا کنید را مشخص میکند. میتوانید نوع تست را |
--app | الزامی : مسیر مطلق (GCS یا سیستم فایل) به فایل IPA برنامه شما. این علامت فقط هنگام اجرای تستهای حلقه بازی معتبر است. |
--scenario-numbers | حلقههایی (یا سناریوهایی) که میخواهید در برنامه خود اجرا کنید. میتوانید یک حلقه، یک لیست یا چندین حلقه یا مجموعهای از حلقهها را وارد کنید. حلقه پیشفرض ۱ است. برای مثال، |
--device-model | دستگاه فیزیکی که میخواهید تست خود را روی آن اجرا کنید (ببینید از کدام دستگاههای موجود میتوانید استفاده کنید). |
--timeout | حداکثر مدت زمانی که میخواهید تست شما اجرا شود. میتوانید یک عدد صحیح برای نمایش مدت زمان بر حسب ثانیه، یا یک عدد صحیح و شمارشی برای نمایش مدت زمان به عنوان واحد زمانی طولانیتر وارد کنید. برای مثال:
|
برای مثال، دستور زیر یک تست حلقه بازی را اجرا میکند که حلقههای ۱، ۴، ۶، ۷ و ۸ را روی آیفون ۸ پلاس اجرا میکند:
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
شما میتوانید از اسکریپتهای shell یا فایلهای batch برای خودکارسازی دستورات تست برنامه تلفن همراه استفاده کنید که در غیر این صورت با استفاده از خط فرمان 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 | تمام آزمایشهای اجرا شده با موفقیت انجام شدند. |
| ۱ | یک خطای کلی رخ داده است. دلایل احتمالی عبارتند از: نام فایلی که وجود ندارد یا خطای HTTP/شبکه. |
| ۲ | آزمایش به دلیل ارائه دستورات یا آرگومانهای ناشناخته، خاتمه یافت. |
| ۱۰ | یک یا چند مورد آزمایشی (کلاسها یا متدهای کلاس آزمایششده) در یک اجرای آزمایشی با موفقیت انجام نشد. |
| ۱۵ | Firebase Test Lab به دلیل یک خطای غیرمنتظره نتوانست تشخیص دهد که آیا ماتریس تست پذیرفته شده یا شکست خورده است. |
| ۱۹ | ماتریس آزمون توسط کاربر لغو شد. |
| ۲۰ | خطایی در زیرساخت آزمایشی رخ داده است. |
مرحله ۴ : بررسی نتایج آزمایش
وقتی آزمایش شروع میشود، لینکی به صفحه نتایج آزمایش دریافت میکنید. بسته به تعداد پیکربندیهای مختلفی که انتخاب کردهاید و مدت زمان تعیینشده برای آزمایش، اجرای آزمایشها میتواند چند دقیقه طول بکشد. پس از اجرای آزمایشها، میتوانید نتایج آزمایش را بررسی کنید. برای کسب اطلاعات بیشتر در مورد نحوه تفسیر نتایج آزمایش، به بخش «تحلیل نتایج Firebase Test Lab مراجعه کنید.
مرحله بعدی
برای بررسی گزینههای آزمایشی که بهطورکلی در دسترس هستند یا در نسخه بتا قرار دارند، مستندات Google Cloud SDK را مطالعه کنید.