این راهنما نحوه اجرای آزمایش ابزار دقیق، Robo، یا «حلقه بازی» را بااستفاده از gcloud CLI شرح میدهد.
برای مشاهده فهرست کامل فرمانهای gcloud که میتوانید
با برنامه Android در Test Lab استفاده کنید، به
اسناد مرجع gcloud firebase test android مراجعه کنید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه Android خود اضافه کنید.
مرحله ۱. راهاندازی gcloud CLI
- کیت توسعه نرمافزار Google Cloud را بارگیری کنید
- مطمئن شوید نصب بهروز باشد:
gcloud components update
- بااستفاده از «حساب Google» خود به سیستم gcloud CLI وارد شوید:
gcloud auth login
- پروژه Firebase خود را در gcloud تنظیم کنید، جایی که PROJECT_ID
شناسه پروژه Firebase شما است:
gcloud config set project PROJECT_ID
این شامل ابزار gcloud CLI میشود.
مرحله ۲. بررسی دستگاههای آزمایشی دردسترس
از فرمانهای gcloud زیر برای مشاهده دستگاههای آزمایشی و زبانهای منطقهای که برای آزمایشتان دردسترس هستند استفاده کنید.
بهعنوان یک گزینه، میتوانید نمونه
برنامه Notepad را نیز بارگیری کنید تا
اجرای فرمانها را فوراً شروع کنید. از فایل دودویی app-debug-unaligned.apk
و فایل آزمایشهای ابزار دقیق app-debug-test-unaligned.apk که در
NotePad/app/build/outputs/apk/ قرار دارند استفاده کنید.
models list: فهرست فعلی دستگاههای Android را که برای آزمایش دردسترس شما است دریافت کنید.gcloud firebase test android models listدر برونداد فرمان:
- ستون
MODEL_IDحاوی شناسهای است که میتوانید بعداً برای اجرای آزمایشها در مدل دستگاه استفاده کنید. - ستون
OS_VERSION_IDحاوی نسخههای سیستمعامل پشتیبانیشده توسط دستگاه است.
برونداد نمونه

- ستون
models describe: دریافت اطلاعات بیشتر درباره AndroidMODEL_IDخاص.gcloud firebase test android models describe MODEL_IDخروجی شامل نمانام مدل دستگاه، سازنده، نسخههای سیستمعامل، سطوح میانای برنامهسازی کاربردی پشتیبانیشده، میاناهای دودویی کاربردی (ABI) پشتیبانیشده، تاریخهای انتشار، و اینکه دستگاه فیزیکی یا مجازی است میشود.
versions list: فهرستی از نسخههای سیستمعامل دردسترس فعلی را برای آزمایش دریافت کنید.gcloud firebase test android versions listمیتوانید از شناسه یکی از دو ستون اول خروجی فرمان (
OS_VERSION_IDوVERSION) استفاده کنید تا بعداً آزمایشها را درمقابل نسخه سیستمعامل Android اجرا کنید. اگر نسخههای سیستمعامل Android را برای آزمایش مشخص نکنید، از پیشفرض ذکرشده در ستونTAGSاستفاده میشود.برونداد نمونه

locales list: فهرست فعلی منطقههای زبانی دردسترس را برای آزمایش دریافت کنید.gcloud firebase test android locales listستون اول خروجی فرمان،
LOCALE، حاوی شناسهای است که میتوانید بعداً برای اجرای آزمایشها درمقابل یک منطقه زبانی استفاده کنید. اگر مناطق زبانی را برای آزمایش مشخص نکنید، از انگلیسی بهعنوان منطقه زبانی پیشفرض استفاده میشود.
مرحله ۳. اجرای آزمایش
اکنون که با طیف مدلهای دستگاه، زبانهای محلی، و نسخههای سیستمعامل دردسترس
برای آزمایش برنامهتان آشنا شدید، میتوانید دستگاهها را بااستفاده از
فرمان gcloud firebase test android run و
پرچم --device برای اجرای آزمایشهای Robo یا ابزار دقیق مشخص کنید.
اجرای آزمایش Robo
حتی اگر هیچ آزمایش ابزارسنجیای ندارید، همچنان میتوانید اشکالات برنامهتان را پیدا کنید. از آزمایش Robo برای انجام بازبینی خودکار میانای کاربر برنامهتان استفاده کنید. آزمایش Robo با انجام تجزیهوتحلیل ایستا از مسیرهای مختلف در میانای کاربر برنامه، برنامه را تمرین میدهد و سپس در برنامه میخزد تا خرابیها و دیگر مشکلات احتمالی را پیدا کند.
برای اجرای آزمایش Robo، فرمان نمونه زیر را اجرا کنید:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- اگر مقدار
--typeمشخص نشده باشد، پارامتر--type roboضمنی است. - برای کمک به شناسایی و یافتن ماتریسهای آزمایشی در کنسول Firebase،
میتوانید از پرچم اختیاری
--client-details matrixLabel="Example matrix label"برای برچسبگذاری ماتریس آزمایشی استفاده کنید. - با تایپ کردن
gcloud help firebase test android runمیتوانید مجموعه کامل گزینههای خط فرمان را برای اجرای آزمایشها ببینید.
بهعنوان جایگزینی برای مشخص کردن این آرگومانها در خط فرمان، میتوانید
بهصورت اختیاری آرگومانهای خود را در یک فایل آرگومان با قالب YAML مشخص کنید. برای آشنایی با نحوه استفاده از این ویژگی،
gcloud topic arg-files را اجرا کنید.
برای آشنایی با نحوه بررسی نتایج آزمایش Robo، به تحلیل نتایج آزمایش مراجعه کنید.
اجرا کردن آزمایش ابزارگری
اکنون از ابزار خط فرمان gcloud برای اجرای آزمایشهای Espresso برنامه Notepad در پیکربندیهای دستگاه Android مشخصشده استفاده کنید. از نوع آزمایش
instrumentation برای اجرای آزمایشها در app-debug-test-unaligned.apk
بهصورت زیر استفاده کنید:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- اگر APK آزمایشی با
--testمشخص شده باشد، پارامتر ابزارگری--typeضمنی است. - برای کمک به شما در شناسایی و یافتن ماتریسهای آزمایشی در کنسول Firebase،
میتوانید از پرچم اختیاری
--client-details matrixLabel="Example matrix label"برای برچسبگذاری ماتریس آزمایشی خود استفاده کنید. - با تایپ کردن
gcloud help firebase test android runمیتوانید مجموعه کامل گزینههای خط فرمان را برای اجرای آزمایشها ببینید.
بهعنوان جایگزینی برای مشخص کردن این آرگومانها در خط فرمان، میتوانید
بهصورت اختیاری آرگومانهای خود را در یک فایل آرگومان با قالب YAML مشخص کنید. برای آشنایی با نحوه استفاده از این ویژگی،
gcloud topic arg-files را اجرا کنید.
gcloud CLI از Android Test Orchestrator پشتیبانی میکند.
Orchestrator به AndroidJUnitRunner نسخه ۱.۱ یا بالاتر نیاز دارد. برای فعال کردن آن، از
gcloud firebase test android run با پرچم
--use-orchestrator
استفاده کنید. برای غیرفعال کردن آن، از پرچم --no-use-orchestrator استفاده کنید.
همچنین میتوانید بااستفاده از پرچمهای اضافی که در بالا نشان داده نشدهاند،
نحوه اجرای آزمایشهای ابزار دقیق توسط Test Lab را کنترل کنید. برای مثال، میتوانید از پرچم
--test-targets برای آزمایش یک کلاس یا روش کلاس استفادهشده توسط APK
آزمایشیتان استفاده کنید. همچنین میتوانید بااستفاده از پرچم --num-flaky-test-attempts، که مشخص میکند درصورت ناموفق بودن یک یا چند چارچوب تست به هر دلیلی، اجرای آزمایشی چند بار باید دوباره امتحان شود، متوجه شوید که آیا تست ناموفق شما واقعاً ناپایدار بوده است یا نه. برای کسب اطلاعات بیشتر، gcloud firebase test android run را ببینید.
گزارشهای پوشش کد برای آزمایشهای ابزارگری
Test Lab از ابزارهای گزارش پوشش کد
EMMA و
JaCoCo پشتیبانی میکند. اگر هرکدام از این ابزارها را در ساخت برنامهتان ادغام کردهاید، میتوانید با اجرای gcloud firebase test android run با چند آرگومان اضافی، گزارش پوشش کد را برای آزمایشهای Test Lab دریافت کنید. اگر «هماهنگکننده آزمایش Android» فعال نیست، از
موارد زیر استفاده کنید:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
اگر گزارشهای پوشش کد را تولید میکنید و همزمان از Android Test Orchestrator استفاده میکنید، متغیرهای محیطی خود را بهصورت زیر تغییر دهید:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
وقتی Test Lab اجرای آزمایشهایتان را بهپایان رساند، گزارشهای پوشش کدتان را در Google Cloud Storage پیدا کنید:
- پیوند کنسول Firebase را که ابزار
gcloudدر بالای جدول نتایج آزمایش در پایانه شما چاپ کرده است باز کنید. - روی اجرای آزمایشی در فهرست موجود در آن پیوند کلیک کنید تا صفحه جزئیات آن اجرا باز شود.
- روی نتایج آزمایش کلیک کنید تا به دسته Cloud Storage با نتایج آزمایش آن اجرا بروید.
- برای دیدن گزارش پوشش کد،
artifacts/coverage.ecرا باز کنید.
تحلیل نتایج آزمایش
پساز چند دقیقه، خلاصه پایهای از نتایج آزمایشتان توسط ابزار gcloud چاپ میشود:

خروجی اجرای آزمایشی خط فرمان شما همچنین شامل پیوندی برای مشاهده نتایج آزمایش است. برای کسب اطلاعات بیشتر درباره نحوه تفسیر این نتایج، تجزیهوتحلیل Firebase Test Lab برای نتایج Android را ببینید.
ورود به سیستم سفارشی و ورودی نوشتار با آزمایش Robo
آزمایش Robo بهطور خودکار صفحههای ورود به سیستم را که از حساب Google برای اصالتسنجی استفاده میکنند تکمیل میکند، مگراینکه از پارامتر
--no-auto-google-login
استفاده کنید. همچنین میتواند صفحههای ورود به سیستم سفارشی را بااستفاده از اعتبارنامههای حساب آزمایشی که ارائه میدهید تکمیل کند. همچنین میتوانید از این پارامتر برای ارائه نوشتار ورودی سفارشی
برای دیگر فیلدهای نوشتاری استفادهشده توسط برنامهتان استفاده کنید.
برای تکمیل فیلدهای نوشتاری در برنامهتان، از پارامتر
--robo-directives
استفاده کنید و فهرستی از جفتهای key-value را که با کاما از هم جدا شدهاند ارائه دهید، که در آن
key نام منبع Android عنصر میانای کاربر هدف است و value
رشته نوشتاری است. همچنین میتوانید از این پرچم برای گفتن به Robo برای نادیده گرفتن عناصر خاص میانای کاربر (مثلاً دکمه «خروج از سیستم») استفاده کنید.
از فیلدهای
EditText
پشتیبانی میشود اما از فیلدهای نوشتاری در عناصر میانای کاربر WebView پشتیبانی نمیشود.
برای مثال، میتوانید از پارامتر زیر برای ورود به سیستم سفارشی استفاده کنید:
--robo-directives username_resource=username,password_resource=password
فرمانها و پرچمهای دردسترس
Test Lab gcloud CLI چندین فرمان و پرچم دردسترس دارد که به شما امکان میدهد آزمایشها را با مشخصات مختلف اجرا کنید:
پرچم Android Test Orchestrator: پرچمی برای فعال کردن Orchestrator، ابزاری که به شما امکان میدهد هریک از آزمایشهای برنامهتان را در فراخوانی
Instrumentationخودش اجرا کنید. Test Lab همیشه جدیدترین نسخه Orchestrator را اجرا میکند.پرچمهای آزمایش Game Loop: مجموعهای از پرچمهای پیکربندی که «حالت نمایشی» را برای شبیهسازی کنشهای بازیکن در برنامههای بازی فعال و کنترل میکنند. درباره اجرای آزمایشهای «حلقه بازی» با Test Lab بیشتر بدانید.
پرچم Uniform Sharding (در نسخه بتا): پرچمی که تعداد بخشهایی را که میخواهید چارچوبهای تست بهطور مساوی در آنها توزیع شود مشخص میکند. تکهها بهطور موازی در دستگاههای جداگانه اجرا میشوند.
پرچم «تکهبندی دستی» (در نسخه بتا): پرچمی که گروهی از بستهها، کلاسها، و/یا چارچوبهای تست را برای اجرا در یک تکه (گروهی از چارچوبهای تست) مشخص میکند. تکهها بهطور موازی در دستگاههای جداگانه اجرا میشوند.
پرچم نمایههای ترافیک شبکه (در نسخه بتا): پرچمی که مشخص میکند آزمایشهای شما از کدام نمایه شبکه با دستگاههای فیزیکی استفاده میکنند. نمایههای شبکه انواع شرایط شبکه را شبیهسازی میکنند و به شما امکان میدهند عملکرد برنامهتان را در شبکههای غیرقابلاعتماد یا غیرقابلپیشبینی آزمایش کنید.
اسکریپتنویسی فرمانهای gcloud با Test Lab
میتوانید از اسکریپتهای پوسته یا فایلهای دستهای برای خودکارسازی فرمانهای آزمایش برنامه تلفن همراه استفاده کنید که درغیراینصورت بااستفاده از خط فرمان gcloud اجرا میکردید. نمونه متن bash زیر یک آزمایش ابزار دقیق را با مهلت دو دقیقهای اجرا میکند و گزارش میدهد که آیا اجرای آزمایش با موفقیت تکمیل شده است یا نه:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
echo "Test matrix successfully finished"
else
echo "Test matrix exited abnormally with non-zero exit code: " $?
fi
کدهای خروج دستورگان
Test Lab چندین کد خروج ارائه میدهد که میتوانید از آنها برای درک بهتر نتایج آزمایشهایی که بااستفاده از اسکریپتها یا فایلهای دستهای اجرا میکنید استفاده کنید.
کدهای خروج اسکریپتنویسی برای Test Lab
| کد خروج | یادداشتها |
|---|---|
| 0 | همه اجراهای آزمایشی موفق بودند. |
| 1 | خطای عمومی رخ داد. علل احتمالی عبارتاند از: نام فایلی که وجود ندارد یا خطای HTTP/شبکه. |
| 2 | آزمایش بهدلیل ارائه فرمانها یا آرگومانهای ناشناخته متوقف شد. |
| 10 | یک یا چند مورد آزمایشی (کلاسهای آزمایششده یا روشهای کلاس) در اجرای آزمایشی قبول نشد. |
| 15 | Firebase Test Lab بهدلیل خطایی غیرمنتظره نتوانست تشخیص دهد که ماتریس آزمایشی موفق بوده است یا ناموفق. |
| ۱۸ | محیط آزمایشی برای این اجرای آزمایشی بهدلیل ابعاد آزمایشی ناسازگار پشتیبانی نمیشود. اگر سطح API Android انتخابشده توسط نوع دستگاه انتخابشده پشتیبانی نشود، ممکن است این خطا رخ دهد. |
| 19 | ماتریس آزمایشی توسط کاربر لغو شد. |
| 20 | خطای زیرساخت آزمایشی رخ داد. |