آزمایش را با gcloud CLI شروع کنید

این راهنما نحوه اجرای تست ابزار دقیق، Robo یا Game Loop را با استفاده از gcloud CLI توضیح می‌دهد.

برای فهرست کاملی از دستورات gcloud که می‌توانید با برنامه Android خود در Test Lab استفاده کنید، از مستندات مرجع برای gcloud firebase test android دیدن کنید.

قبل از شروع

اگر قبلاً این کار را نکرده‌اید، Firebase را به پروژه Android خود اضافه کنید .

مرحله 1. gcloud CLI را راه اندازی کنید

  1. Google Cloud SDK را دانلود کنید
  2. این شامل ابزار gcloud CLI است.

  3. اطمینان حاصل کنید که نصب شما به روز است:
    gcloud components update
    
  4. با استفاده از حساب Google خود به gcloud CLI وارد شوید:
    gcloud auth login
    
  5. پروژه Firebase خود را در gcloud تنظیم کنید، جایی که PROJECT_ID شناسه پروژه Firebase شما است:
    gcloud config set project PROJECT_ID
    

مرحله 2. دستگاه های آزمایشی موجود را بررسی کنید

از دستورات 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 شامل نسخه های سیستم عامل پشتیبانی شده توسط دستگاه است.

    خروجی نمونه

    gcloud firebase test android models list output

  • models describe : اطلاعات بیشتری در مورد یک Android MODEL_ID خاص دریافت کنید.

    gcloud firebase test android models describe MODEL_ID

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

  • versions list : لیستی از نسخه های سیستم عامل فعلی موجود برای آزمایش را دریافت کنید.

    gcloud firebase test android versions list

    می‌توانید از شناسه یکی از دو ستون اول خروجی فرمان ( OS_VERSION_ID و VERSION ) برای اجرای آزمایش‌های بعدی بر روی نسخه سیستم عامل Android استفاده کنید. اگر نسخه‌های سیستم‌عامل Android را برای آزمایش مشخص نکرده‌اید، از پیش‌فرض ذکر شده در زیر ستون TAGS استفاده می‌شود.

    خروجی نمونه

    gcloud android versions list

  • locales list : فهرست کنونی زبان‌های موجود برای آزمایش را دریافت کنید.

    gcloud firebase test android versions list

    اولین ستون خروجی فرمان، LOCALE ، حاوی شناسه‌ای است که می‌توانید بعداً برای اجرای آزمایش‌ها در برابر یک منطقه استفاده کنید. اگر زبان‌هایی را برای آزمایش تعیین نکرده‌اید، زبان انگلیسی به‌عنوان محلی پیش‌فرض استفاده می‌شود.

مرحله 3. آزمون خود را اجرا کنید

اکنون که دامنه مدل‌های دستگاه، زبان‌های محلی و نسخه‌های سیستم‌عامل موجود برای آزمایش برنامه خود را می‌دانید، می‌توانید دستگاه‌ها را با استفاده از دستور 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 برای اجرای تست‌های اسپرسو برنامه Notepad در تنظیمات دستگاه اندرویدی خود استفاده کنید. از نوع تست 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 نسخه 1.1 یا بالاتر نیاز دارد. برای فعال کردن آن، gcloud firebase test android run با استفاده کنید
--use-orchestrator . برای غیرفعال کردن آن از پرچم --no-use-orchestrator استفاده کنید.

همچنین می‌توانید با استفاده از پرچم‌های اضافی که در بالا نشان داده نشده‌اند، نحوه اجرای تست‌های ابزار دقیق را Test Lab کنترل کنید. برای مثال، می‌توانید از پرچم --test-targets برای آزمایش یک کلاس یا روش کلاسی که توسط APK آزمایشی شما استفاده می‌شود، استفاده کنید. همچنین می‌توانید با استفاده از پرچم --num-flaky-test-attempts ، که تعداد دفعاتی را که یک یا چند مورد از آزمایش‌های آن یک یا چند مورد آزمایشی آن اجرا می‌شود، باید مجدداً انجام شود، متوجه شوید که آیا آزمون شما شکست خورده واقعاً پوسته‌دار بوده است یا خیر. به هر دلیلی شکست بخورد برای کسب اطلاعات بیشتر، اجرای تست gcloud firebase android را ببینید.

گزارش های پوشش کد برای تست های ابزار دقیق

Test Lab از ابزارهای گزارش پوشش کد EMMA و JaCoCo پشتیبانی می کند. اگر هر یک از ابزارها را در بیلد برنامه خود ادغام کرده اید، می توانید با اجرای gcloud firebase test android run با برخی آرگومان های اضافی، یک گزارش پوشش کد برای تست های Test Lab دریافت کنید. اگر 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 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 پیدا کنید:

  1. پیوند کنسول Firebase را که ابزار gcloud در بالای جدول نتیجه آزمایش در ترمینال شما چاپ کرده است، باز کنید.
  2. روی یک اجرای آزمایشی از لیست موجود در آن پیوند کلیک کنید تا صفحه جزئیات آن اجرا باز شود.
  3. روی Test Results کلیک کنید تا به سطل Cloud Storage با نتایج آزمایش آن اجرا بروید.
  4. برای مشاهده گزارش پوشش کد خود artifacts/coverage.ec باز کنید.

نتایج آزمایش خود را تجزیه و تحلیل کنید

پس از چند دقیقه، یک خلاصه اولیه از نتایج آزمایش شما توسط ابزار gcloud چاپ می شود:

Command test results

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

ورود سفارشی و ورودی متن با تست Robo

تست Robo به طور خودکار صفحات ورود به سیستم را تکمیل می کند که از یک حساب Google برای احراز هویت استفاده می کنند، مگر اینکه از پارامتر --no-auto-google-login استفاده کنید. همچنین می‌تواند صفحه‌های ورود سفارشی را با استفاده از اعتبارنامه‌های حساب آزمایشی که ارائه می‌دهید تکمیل کند. همچنین می توانید از این پارامتر برای ارائه متن ورودی سفارشی برای سایر فیلدهای متنی مورد استفاده توسط برنامه خود استفاده کنید.

برای تکمیل فیلدهای متنی در برنامه خود، از پارامتر --robo-directives استفاده کنید و فهرستی از جفت‌های key-value جدا شده با کاما ارائه دهید، که در آن key ، نام منبع Android عنصر UI هدف و value آن رشته متن است. . همچنین می‌توانید از این پرچم استفاده کنید تا به Robo بگویید عناصر رابط کاربری خاص را نادیده بگیرد (مثلاً دکمه "خروج"). فیلدهای EditText پشتیبانی می شوند اما فیلدهای متنی در عناصر WebView UI پشتیبانی نمی شوند.

به عنوان مثال، می توانید از پارامتر زیر برای ورود سفارشی استفاده کنید:

--robo-directives username_resource=username,password_resource=password

دستورات و پرچم های موجود

Test Lab gcloud CLI دارای چندین دستور و پرچم در دسترس است که به شما امکان می دهد آزمایش هایی را با مشخصات مختلف اجرا کنید:

  • پرچم ارکستراتور تست اندروید : پرچمی برای فعال کردن ارکستراتور، ابزاری که به شما امکان می‌دهد هر یک از آزمایش‌های برنامه خود را با فراخوانی Instrumentation اجرا کنید. Test Lab همیشه آخرین نسخه ارکستراتور را اجرا می کند.

  • پرچم‌های تست حلقه بازی : مجموعه‌ای از پرچم‌های پیکربندی که یک "حالت نمایشی" را برای شبیه‌سازی اقدامات بازیکن در برنامه‌های بازی فعال و کنترل می‌کند. درباره اجرای تست های Game Loop با Test Lab بیشتر بیاموزید.

  • پرچم یکنواخت شاردینگ (در بتا) : پرچمی که تعداد خرده‌هایی را که می‌خواهید موارد آزمایشی را به طور مساوی در آنها توزیع کنید، مشخص می‌کند. خرده ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم اشتراک دستی (در بتا) : پرچمی که گروهی از بسته‌ها، کلاس‌ها و/یا موارد آزمایشی را برای اجرا در یک قطعه (گروهی از موارد آزمایشی) مشخص می‌کند. خرده ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم پروفایل‌های ترافیک شبکه (در نسخه بتا) : پرچمی که مشخص می‌کند آزمایش‌های شما از کدام نمایه شبکه با دستگاه‌های فیزیکی استفاده می‌کنند. نمایه های شبکه انواع شرایط شبکه را تقلید می کنند و به شما امکان می دهند عملکرد برنامه خود را در شبکه های غیر قابل اعتماد یا غیرقابل پیش بینی آزمایش کنید.

اسکریپت دستورات 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 نتوانست تشخیص دهد که آیا ماتریس آزمایش موفق شد یا ناموفق.
18 محیط تست برای اجرای این تست به دلیل ابعاد تست ناسازگار پشتیبانی نمی شود. اگر سطح API انتخاب شده Android توسط نوع دستگاه انتخاب شده پشتیبانی نشود، ممکن است این خطا رخ دهد.
19 ماتریس تست توسط کاربر لغو شد.
20 یک خطای زیرساخت آزمایشی رخ داد.
،

این راهنما نحوه اجرای تست ابزار دقیق، Robo یا Game Loop را با استفاده از gcloud CLI توضیح می‌دهد.

برای فهرست کاملی از دستورات gcloud که می‌توانید با برنامه Android خود در Test Lab استفاده کنید، از مستندات مرجع برای gcloud firebase test android دیدن کنید.

قبل از شروع

اگر قبلاً این کار را نکرده‌اید، Firebase را به پروژه Android خود اضافه کنید .

مرحله 1. gcloud CLI را راه اندازی کنید

  1. Google Cloud SDK را دانلود کنید
  2. این شامل ابزار gcloud CLI است.

  3. اطمینان حاصل کنید که نصب شما به روز است:
    gcloud components update
    
  4. با استفاده از حساب Google خود به gcloud CLI وارد شوید:
    gcloud auth login
    
  5. پروژه Firebase خود را در gcloud تنظیم کنید، جایی که PROJECT_ID شناسه پروژه Firebase شما است:
    gcloud config set project PROJECT_ID
    

مرحله 2. دستگاه های آزمایشی موجود را بررسی کنید

از دستورات 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 شامل نسخه های سیستم عامل پشتیبانی شده توسط دستگاه است.

    خروجی نمونه

    gcloud firebase test android models list output

  • models describe : اطلاعات بیشتری در مورد یک Android MODEL_ID خاص دریافت کنید.

    gcloud firebase test android models describe MODEL_ID

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

  • versions list : لیستی از نسخه های سیستم عامل فعلی موجود برای آزمایش را دریافت کنید.

    gcloud firebase test android versions list

    می‌توانید از شناسه یکی از دو ستون اول خروجی فرمان ( OS_VERSION_ID و VERSION ) برای اجرای آزمایش‌های بعدی بر روی نسخه سیستم عامل Android استفاده کنید. اگر نسخه‌های سیستم‌عامل Android را برای آزمایش مشخص نکرده‌اید، از پیش‌فرض ذکر شده در زیر ستون TAGS استفاده می‌شود.

    خروجی نمونه

    gcloud android versions list

  • locales list : فهرست کنونی زبان‌های موجود برای آزمایش را دریافت کنید.

    gcloud firebase test android versions list

    اولین ستون خروجی فرمان، LOCALE ، حاوی شناسه‌ای است که می‌توانید بعداً برای اجرای آزمایش‌ها در برابر یک منطقه استفاده کنید. اگر زبان‌هایی را برای آزمایش تعیین نکرده‌اید، زبان انگلیسی به‌عنوان محلی پیش‌فرض استفاده می‌شود.

مرحله 3. آزمون خود را اجرا کنید

اکنون که دامنه مدل‌های دستگاه، زبان‌های محلی و نسخه‌های سیستم‌عامل موجود برای آزمایش برنامه خود را می‌دانید، می‌توانید دستگاه‌ها را با استفاده از دستور 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 برای اجرای تست‌های اسپرسو برنامه Notepad در تنظیمات دستگاه اندرویدی خود استفاده کنید. از نوع تست 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 نسخه 1.1 یا بالاتر نیاز دارد. برای فعال کردن آن، gcloud firebase test android run با استفاده کنید
--use-orchestrator . برای غیرفعال کردن آن از پرچم --no-use-orchestrator استفاده کنید.

همچنین می‌توانید با استفاده از پرچم‌های اضافی که در بالا نشان داده نشده‌اند، نحوه اجرای تست‌های ابزار دقیق را Test Lab کنترل کنید. برای مثال، می‌توانید از پرچم --test-targets برای آزمایش یک کلاس یا روش کلاسی که توسط APK آزمایشی شما استفاده می‌شود، استفاده کنید. همچنین می‌توانید با استفاده از پرچم --num-flaky-test-attempts ، که تعداد دفعاتی را که یک یا چند مورد از آزمایش‌های آن یک یا چند مورد آزمایشی آن اجرا می‌شود، باید مجدداً انجام شود، متوجه شوید که آیا آزمون شما شکست خورده واقعاً پوسته‌دار بوده است یا خیر. به هر دلیلی شکست بخورد برای کسب اطلاعات بیشتر، اجرای تست gcloud firebase android را ببینید.

گزارش های پوشش کد برای تست های ابزار دقیق

Test Lab از ابزارهای گزارش پوشش کد EMMA و JaCoCo پشتیبانی می کند. اگر هر یک از ابزارها را در بیلد برنامه خود ادغام کرده اید، می توانید با اجرای gcloud firebase test android run با برخی آرگومان های اضافی، یک گزارش پوشش کد برای تست های Test Lab دریافت کنید. اگر 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 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 پیدا کنید:

  1. پیوند کنسول Firebase را که ابزار gcloud در بالای جدول نتیجه آزمایش در ترمینال شما چاپ کرده است، باز کنید.
  2. روی یک اجرای آزمایشی از لیست موجود در آن پیوند کلیک کنید تا صفحه جزئیات آن اجرا باز شود.
  3. روی Test Results کلیک کنید تا به سطل Cloud Storage با نتایج آزمایش آن اجرا بروید.
  4. برای مشاهده گزارش پوشش کد خود artifacts/coverage.ec باز کنید.

نتایج آزمایش خود را تجزیه و تحلیل کنید

پس از چند دقیقه، یک خلاصه اولیه از نتایج آزمایش شما توسط ابزار gcloud چاپ می شود:

Command test results

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

ورود سفارشی و ورودی متن با تست Robo

تست Robo به طور خودکار صفحات ورود به سیستم را تکمیل می کند که از یک حساب Google برای احراز هویت استفاده می کنند، مگر اینکه از پارامتر --no-auto-google-login استفاده کنید. همچنین می‌تواند صفحه‌های ورود سفارشی را با استفاده از اعتبارنامه‌های حساب آزمایشی که ارائه می‌دهید تکمیل کند. همچنین می توانید از این پارامتر برای ارائه متن ورودی سفارشی برای سایر فیلدهای متنی مورد استفاده توسط برنامه خود استفاده کنید.

برای تکمیل فیلدهای متنی در برنامه خود، از پارامتر --robo-directives استفاده کنید و فهرستی از جفت‌های key-value جدا شده با کاما ارائه دهید، که در آن key ، نام منبع Android عنصر UI هدف و value آن رشته متن است. . همچنین می‌توانید از این پرچم استفاده کنید تا به Robo بگویید عناصر رابط کاربری خاص را نادیده بگیرد (مثلاً دکمه "خروج"). فیلدهای EditText پشتیبانی می شوند اما فیلدهای متنی در عناصر WebView UI پشتیبانی نمی شوند.

به عنوان مثال، می توانید از پارامتر زیر برای ورود سفارشی استفاده کنید:

--robo-directives username_resource=username,password_resource=password

دستورات و پرچم های موجود

Test Lab gcloud CLI دارای چندین دستور و پرچم در دسترس است که به شما امکان می دهد آزمایش هایی را با مشخصات مختلف اجرا کنید:

  • پرچم ارکستراتور تست اندروید : پرچمی برای فعال کردن ارکستراتور، ابزاری که به شما امکان می‌دهد هر یک از آزمایش‌های برنامه خود را با فراخوانی Instrumentation اجرا کنید. Test Lab همیشه آخرین نسخه ارکستراتور را اجرا می کند.

  • پرچم‌های تست حلقه بازی : مجموعه‌ای از پرچم‌های پیکربندی که یک "حالت نمایشی" را برای شبیه‌سازی اقدامات بازیکن در برنامه‌های بازی فعال و کنترل می‌کند. درباره اجرای تست های Game Loop با Test Lab بیشتر بیاموزید.

  • پرچم یکنواخت شاردینگ (در بتا) : پرچمی که تعداد خرده‌هایی را که می‌خواهید موارد آزمایشی را به طور مساوی در آنها توزیع کنید، مشخص می‌کند. خرده ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم اشتراک دستی (در بتا) : پرچمی که گروهی از بسته‌ها، کلاس‌ها و/یا موارد آزمایشی را برای اجرا در یک قطعه (گروهی از موارد آزمایشی) مشخص می‌کند. خرده ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم پروفایل‌های ترافیک شبکه (در نسخه بتا) : پرچمی که مشخص می‌کند آزمایش‌های شما از کدام نمایه شبکه با دستگاه‌های فیزیکی استفاده می‌کنند. نمایه های شبکه انواع شرایط شبکه را تقلید می کنند و به شما امکان می دهند عملکرد برنامه خود را در شبکه های غیر قابل اعتماد یا غیرقابل پیش بینی آزمایش کنید.

اسکریپت نویسی دستورات 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 نتوانست تشخیص دهد که آیا ماتریس آزمایش موفق شد یا ناموفق.
18 محیط تست برای اجرای این تست به دلیل ابعاد تست ناسازگار پشتیبانی نمی شود. اگر سطح API انتخاب شده Android توسط نوع دستگاه انتخاب شده پشتیبانی نشود، ممکن است این خطا رخ دهد.
19 ماتریس تست توسط کاربر لغو شد.
20 یک خطای زیرساخت آزمایشی رخ داد.
،

این راهنما نحوه اجرای تست ابزار دقیق، Robo یا Game Loop را با استفاده از gcloud CLI توضیح می‌دهد.

برای فهرست کاملی از دستورات gcloud که می‌توانید با برنامه Android خود در Test Lab استفاده کنید، از مستندات مرجع برای gcloud firebase test android دیدن کنید.

قبل از شروع

اگر قبلاً این کار را نکرده‌اید، Firebase را به پروژه Android خود اضافه کنید .

مرحله 1. gcloud CLI را راه اندازی کنید

  1. Google Cloud SDK را دانلود کنید
  2. این شامل ابزار gcloud CLI است.

  3. مطمئن شوید که نصب شما به روز است:
    gcloud components update
    
  4. با استفاده از حساب Google خود به gcloud CLI وارد شوید:
    gcloud auth login
    
  5. پروژه Firebase خود را در gcloud تنظیم کنید، جایی که PROJECT_ID شناسه پروژه Firebase شما است:
    gcloud config set project PROJECT_ID
    

مرحله 2. دستگاه های آزمایشی موجود را بررسی کنید

از دستورات 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 شامل نسخه های سیستم عامل پشتیبانی شده توسط دستگاه است.

    خروجی نمونه

    gcloud firebase test android models list output

  • models describe : اطلاعات بیشتری در مورد یک Android MODEL_ID خاص دریافت کنید.

    gcloud firebase test android models describe MODEL_ID

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

  • versions list : لیستی از نسخه های سیستم عامل فعلی موجود برای آزمایش را دریافت کنید.

    gcloud firebase test android versions list

    می‌توانید از شناسه یکی از دو ستون اول خروجی فرمان ( OS_VERSION_ID و VERSION ) برای اجرای آزمایش‌های بعدی بر روی نسخه سیستم عامل Android استفاده کنید. اگر نسخه‌های سیستم‌عامل Android را برای آزمایش مشخص نکرده‌اید، از پیش‌فرض ذکر شده در زیر ستون TAGS استفاده می‌شود.

    خروجی نمونه

    gcloud android versions list

  • locales list : فهرست کنونی زبان‌های موجود برای آزمایش را دریافت کنید.

    gcloud firebase test android versions list

    اولین ستون خروجی فرمان، LOCALE ، حاوی شناسه‌ای است که می‌توانید بعداً برای اجرای آزمایش‌ها در برابر یک منطقه استفاده کنید. اگر زبان‌هایی را برای آزمایش تعیین نکرده‌اید، زبان انگلیسی به‌عنوان محلی پیش‌فرض استفاده می‌شود.

مرحله 3. آزمون خود را اجرا کنید

اکنون که دامنه مدل‌های دستگاه، زبان‌های محلی و نسخه‌های سیستم‌عامل موجود برای آزمایش برنامه خود را می‌دانید، می‌توانید دستگاه‌ها را با استفاده از دستور 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 برای اجرای تست‌های اسپرسو برنامه Notepad در تنظیمات دستگاه اندرویدی خود استفاده کنید. از نوع تست 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 نسخه 1.1 یا بالاتر نیاز دارد. برای فعال کردن آن، gcloud firebase test android run با استفاده کنید
--use-orchestrator . برای غیرفعال کردن آن از پرچم --no-use-orchestrator استفاده کنید.

همچنین می‌توانید با استفاده از پرچم‌های اضافی که در بالا نشان داده نشده‌اند، نحوه اجرای تست‌های ابزار دقیق را Test Lab کنترل کنید. برای مثال، می‌توانید از پرچم --test-targets برای آزمایش یک کلاس یا روش کلاسی که توسط APK آزمایشی شما استفاده می‌شود، استفاده کنید. همچنین می‌توانید با استفاده از پرچم --num-flaky-test-attempts ، که تعداد دفعاتی را که یک یا چند مورد از آزمایش‌های آن یک یا چند مورد آزمایشی آن اجرا می‌شود، باید مجدداً انجام شود، متوجه شوید که آیا آزمون شما شکست خورده واقعاً پوسته‌دار بوده است یا خیر. به هر دلیلی شکست بخورد برای کسب اطلاعات بیشتر، اجرای تست gcloud firebase android را ببینید.

گزارش های پوشش کد برای تست های ابزار دقیق

Test Lab از ابزارهای گزارش پوشش کد EMMA و JaCoCo پشتیبانی می کند. اگر هر یک از ابزارها را در بیلد برنامه خود ادغام کرده اید، می توانید با اجرای gcloud firebase test android run با برخی آرگومان های اضافی، یک گزارش پوشش کد برای تست های Test Lab دریافت کنید. اگر 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 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 پیدا کنید:

  1. پیوند کنسول Firebase را که ابزار gcloud در بالای جدول نتیجه آزمایش در ترمینال شما چاپ کرده است، باز کنید.
  2. روی یک اجرای آزمایشی از لیست موجود در آن پیوند کلیک کنید تا صفحه جزئیات آن اجرا باز شود.
  3. روی Test Results کلیک کنید تا به سطل Cloud Storage با نتایج آزمایش آن اجرا بروید.
  4. برای مشاهده گزارش پوشش کد خود artifacts/coverage.ec باز کنید.

نتایج آزمایش خود را تجزیه و تحلیل کنید

پس از چند دقیقه، یک خلاصه اولیه از نتایج آزمایش شما توسط ابزار gcloud چاپ می شود:

Command test results

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

ورود سفارشی و ورودی متن با تست Robo

تست Robo به طور خودکار صفحات ورود به سیستم را تکمیل می کند که از یک حساب Google برای احراز هویت استفاده می کنند، مگر اینکه از پارامتر --no-auto-google-login استفاده کنید. همچنین می‌تواند صفحه‌های ورود سفارشی را با استفاده از اعتبارنامه‌های حساب آزمایشی که ارائه می‌دهید تکمیل کند. همچنین می توانید از این پارامتر برای ارائه متن ورودی سفارشی برای سایر فیلدهای متنی مورد استفاده توسط برنامه خود استفاده کنید.

برای تکمیل فیلدهای متنی در برنامه خود، از پارامتر --robo-directives استفاده کنید و فهرستی از جفت‌های key-value جدا شده با کاما ارائه دهید، که در آن key ، نام منبع Android عنصر UI هدف و value آن رشته متن است. . همچنین می‌توانید از این پرچم استفاده کنید تا به Robo بگویید عناصر رابط کاربری خاص را نادیده بگیرد (مثلاً دکمه "خروج"). فیلدهای EditText پشتیبانی می شوند اما فیلدهای متنی در عناصر WebView UI پشتیبانی نمی شوند.

به عنوان مثال، می توانید از پارامتر زیر برای ورود سفارشی استفاده کنید:

--robo-directives username_resource=username,password_resource=password

دستورات و پرچم های موجود

Test Lab gcloud CLI دارای چندین دستور و پرچم در دسترس است که به شما امکان می دهد آزمایش هایی را با مشخصات مختلف اجرا کنید:

  • پرچم ارکستراتور تست اندروید : پرچمی برای فعال کردن ارکستراتور، ابزاری که به شما امکان می‌دهد هر یک از آزمایش‌های برنامه خود را با فراخوانی Instrumentation اجرا کنید. Test Lab همیشه آخرین نسخه ارکستراتور را اجرا می کند.

  • پرچم‌های تست حلقه بازی : مجموعه‌ای از پرچم‌های پیکربندی که یک "حالت نمایشی" را برای شبیه‌سازی اقدامات بازیکن در برنامه‌های بازی فعال و کنترل می‌کند. درباره اجرای تست های Game Loop با Test Lab بیشتر بیاموزید.

  • پرچم Sharding یکنواخت (در بتا) : پرچمی که تعداد قسمتهایی را که می خواهید موارد آزمایشی را به طور مساوی توزیع کنید ، مشخص می کند. این قسمت ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم Sharding Manual (در بتا) : پرچمی که گروهی از بسته ها ، کلاس ها و/یا موارد آزمایش را برای اجرای در یک قسمت (گروهی از موارد آزمون) مشخص می کند. این قسمت ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم پروفایل ترافیک شبکه (در بتا) : پرچمی که مشخص می کند آزمایشات شما از تست های شما با دستگاه های فیزیکی استفاده می کند. پروفایل های شبکه انواع مختلفی از شرایط شبکه را تقلید می کنند و به شما امکان می دهند عملکرد برنامه خود را بر روی شبکه های غیرقابل اعتماد یا غیرقابل پیش بینی آزمایش کنید.

دستورات 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/Network.
2 آزمایش خارج شد زیرا دستورات یا استدلال های ناشناخته ارائه شده است.
10 یک یا چند مورد آزمون (کلاس های آزمایش شده یا روش کلاس) در یک اجرای آزمون نمی گذرد.
15 Firebase Test Lab به دلیل خطای غیر منتظره نمی تواند تعیین کند که ماتریس آزمون عبور کرده یا شکست خورده است.
18 محیط آزمون برای این اجرای آزمایش به دلیل ابعاد آزمون ناسازگار پشتیبانی نمی شود. اگر سطح API Android انتخاب شده توسط نوع دستگاه انتخاب شده پشتیبانی نشود ، این خطا ممکن است رخ دهد.
19 ماتریس تست توسط کاربر لغو شد.
20 یک خطای زیرساخت آزمایشی رخ داده است.
،

این راهنما نحوه اجرای یک ساز ، Robo یا Test Loop Game را با استفاده از GCLOUD CLI شرح می دهد.

برای لیست کاملی از دستورات gcloud می توانید با برنامه Android خود در Test Lab استفاده کنید ، به اسناد مرجع برای gcloud firebase test android مراجعه کنید.

قبل از شروع

اگر قبلاً این کار را نکرده اید ، Firebase را به پروژه Android خود اضافه کنید .

مرحله 1. gcloud cli را تنظیم کنید

  1. Google Cloud SDK را بارگیری کنید
  2. این شامل ابزار Gcloud CLI است.

  3. اطمینان حاصل کنید که نصب شما به روز است:
    gcloud components update
    
  4. با استفاده از حساب Google خود وارد GCLOUD CLI شوید:
    gcloud auth login
    
  5. پروژه Firebase خود را در Gcloud تنظیم کنید ، جایی که PROJECT_ID شناسه پروژه Firebase شماست:
    gcloud config set project PROJECT_ID
    

مرحله 2 دستگاه های تست موجود را بررسی کنید

برای مشاهده دستگاه های تست و محلی که برای آزمون شما در دسترس هستند ، از دستورات GCloud زیر استفاده کنید.

به عنوان یک گزینه ، می توانید برنامه Notepad نمونه را نیز بارگیری کنید تا بلافاصله دستورات را اجرا کنید. با استفاده از app-debug-unaligned.apk و تست های ابزار دقیق پرونده app-debug-test-unaligned.apk ، که در NotePad/app/build/outputs/apk/ قرار دارند.

  • models list : یک لیست فعلی از دستگاه های اندرویدی را برای آزمایش در مقابل خود دریافت کنید.

    gcloud firebase test android models list

    در خروجی فرمان:

    • ستون MODEL_ID شامل شناسه ای است که بعداً می توانید برای اجرای تست ها در مدل دستگاه استفاده کنید.
    • ستون OS_VERSION_ID شامل نسخه های سیستم عامل پشتیبانی شده توسط دستگاه است.

    خروجی نمونه

    gcloud firebase test android models list output

  • models describe : اطلاعات بیشتری در مورد یک MODEL_ID خاص Android_id دریافت کنید.

    gcloud firebase test android models describe MODEL_ID

    خروجی شامل مارک مدل دستگاه ، تولید کننده ، نسخه های سیستم عامل ، سطح API پشتیبانی شده ، رابط های باینری برنامه پشتیبانی شده (ABI) ، تاریخ انتشار و اینکه آیا دستگاه فیزیکی است یا مجازی است.

  • versions list : لیستی از نسخه های موجود در سیستم عامل موجود را برای آزمایش در مقابل دریافت کنید.

    gcloud firebase test android versions list

    می توانید از هر یک از دو ستون اول خروجی فرمان ( OS_VERSION_ID و VERSION ) از یک شناسه استفاده کنید تا بعداً تست ها را در برابر نسخه سیستم عامل Android اجرا کنید. اگر نسخه های سیستم عامل Android را برای تست در برابر آن مشخص نکنید ، از پیش فرض ذکر شده در زیر ستون TAGS استفاده می شود.

    خروجی نمونه

    gcloud android versions list

  • locales list : لیست فعلی محلی های موجود برای آزمایش در برابر آن را دریافت کنید.

    gcloud firebase test android versions list

    ستون اول خروجی فرمان ، LOCALE ، حاوی شناسه ای است که می توانید بعداً برای اجرای تست ها در برابر محلی استفاده کنید. اگر محلی را برای آزمایش در برابر آن مشخص نکنید ، انگلیسی به عنوان محلی پیش فرض استفاده می شود.

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

اکنون که طیف وسیعی از مدل های دستگاه ، محلی و نسخه های سیستم عامل را برای آزمایش برنامه خود می دانید ، می توانید دستگاه هایی را با استفاده از دستور 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 robo اگر مقدار NO --type مشخص شده باشد ضمنی است.
  • برای کمک به شما در شناسایی و پیدا کردن ماتریس های تست خود در کنسول Firebase ، می توانید از پرچم --client-details matrixLabel="Example matrix label" اختیاری استفاده کنید.
  • با تایپ کردن می توانید مجموعه کاملی از گزینه های خط فرمان برای تست های اجرا را مشاهده کنید: gcloud help firebase test android run .

به عنوان جایگزینی برای مشخص کردن این آرگومان ها در خط فرمان ، می توانید آرگومان های خود را به صورت اختیاری در یک فایل آرگومان با فرمت YAML مشخص کنید. برای یادگیری نحوه استفاده از این ویژگی gcloud topic arg-files اجرا کنید.

برای یادگیری نحوه بررسی نتایج آزمون از آزمون ROBO ، به تجزیه و تحلیل نتایج آزمون خود مراجعه کنید.

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

اکنون از ابزار خط فرمان gcloud استفاده کنید تا تست های اسپرسو برنامه 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"
  • پارامتر ابزار --type اگر APK تست با --test مشخص شده باشد ضمنی است.
  • برای کمک به شما در شناسایی و پیدا کردن ماتریس های تست خود در کنسول Firebase ، می توانید از پرچم --client-details matrixLabel="Example matrix label" اختیاری استفاده کنید.
  • با تایپ کردن gcloud help firebase test android run می توانید مجموعه کاملی از گزینه های خط فرمان را برای تست های اجرا مشاهده کنید.

به عنوان جایگزینی برای مشخص کردن این آرگومان ها در خط فرمان ، می توانید آرگومان های خود را به صورت اختیاری در یک فایل آرگومان با فرمت YAML مشخص کنید. برای یادگیری نحوه استفاده از این ویژگی gcloud topic arg-files اجرا کنید.

GCLOUD CLI از ارکستر تست اندرویدی پشتیبانی می کند. Orchestrator به AndroidJunitrunner v1.1 یا بالاتر نیاز دارد. برای فعال کردن آن ، gcloud firebase test android run با استفاده از آن استفاده کنید
--use-orchestrator . برای غیرفعال کردن آن از پرچم- --no-use-orchestrator استفاده کنید.

همچنین می توانید نحوه آزمایش Test Lab تست خود را با استفاده از پرچم های اضافی که در بالا نشان داده نشده است ، کنترل کنید. به عنوان مثال ، شما می توانید از پرچم --test-targets برای آزمایش یک کلاس واحد یا یک روش کلاس استفاده شده توسط APK تست خود استفاده کنید. همچنین می توانید دریابید که آیا آزمایش شما که شکست خورده است در واقع پوسته پوسته شده است یا نه با استفاده از پرچم --num-flaky-test-attempts Flag ، که تعداد دفعاتی را که یک آزمون در صورت یک یا چند مورد از آزمون آن مجدداً مورد استفاده قرار می گیرد ، مشخص می کند. به هر دلیلی شکست بخورید. برای کسب اطلاعات بیشتر ، به آزمایش Android Run Gcloud Firebase مراجعه کنید.

گزارش های پوشش کد برای تست های ابزار دقیق

Test Lab از ابزارهای گزارش پوشش کد پشتیبانی می کند اما اما و جاککو . اگر هر دو ابزار را برای برنامه خود در ساخت خود ادغام کرده اید ، می توانید با اجرای 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 نیز استفاده می کنید ، متغیرهای محیط خود را به شرح زیر تغییر دهید:

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 پیدا کنید:

  1. پیوند کنسول Firebase را باز کنید که ابزار gcloud چاپ شده در بالای جدول نتیجه آزمایش در ترمینال شما.
  2. برای باز کردن صفحه جزئیات آن اجرای ، روی یک نمایش آزمایشی از لیست در آن پیوند کلیک کنید.
  3. روی نتایج تست کلیک کنید تا با نتایج آزمون آن اجرای به سطل Cloud Storage بروید.
  4. برای دیدن گزارش پوشش کد artifacts/coverage.ec باز کنید.

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

بعد از چند دقیقه ، خلاصه ای از نتایج آزمایش شما توسط ابزار GCloud چاپ می شود:

Command test results

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

ورود به سیستم سفارشی و ورودی متن با تست Robo

تست Robo به طور خودکار صفحه های ورود به سیستم را که از یک حساب Google برای تأیید اعتبار استفاده می کنند ، تکمیل می کند ، مگر اینکه از پارامتر- --no-auto-google-login استفاده کنید. همچنین می تواند صفحه های ورود به سیستم سفارشی را با استفاده از اعتبارنامه حساب آزمایشی که ارائه می دهید تکمیل کند. همچنین می توانید از این پارامتر برای تهیه متن ورودی سفارشی برای سایر زمینه های متنی استفاده شده توسط برنامه خود استفاده کنید.

برای تکمیل زمینه های متنی در برنامه خود ، از پارامتر-- --robo-directives استفاده کنید و لیستی از همبستگی کاما از جفت های key-value را تهیه کنید ، جایی که key نام منبع Android از عنصر UI Target است ، و value رشته متن است . همچنین می توانید از این پرچم برای گفتن Robo برای نادیده گرفتن عناصر خاص UI استفاده کنید (به عنوان مثال ، دکمه "ورود به سیستم"). زمینه های EditText پشتیبانی می شوند اما زمینه های متن در عناصر UI WebView نیستند.

به عنوان مثال ، می توانید از پارامتر زیر برای ورود به سیستم سفارشی استفاده کنید:

--robo-directives username_resource=username,password_resource=password

دستورات و پرچم های موجود

Test Lab GCLOUD CLI چندین دستور و پرچم در دسترس دارد که به شما امکان می دهد تست ها را با مشخصات مختلف اجرا کنید:

  • Android Test Orchestrator Flag : پرچمی برای فعال کردن ارکستر ، ابزاری که به شما امکان می دهد هر یک از تست های برنامه خود را در دعوت خود از Instrumentation اجرا کنید. Test Lab همیشه آخرین نسخه Orchestrator را اجرا می کند.

  • پرچم های تست حلقه بازی : مجموعه ای از پرچم های پیکربندی که "حالت نمایشی" را برای شبیه سازی اقدامات پخش کننده در برنامه های بازی فعال و کنترل می کند. در مورد اجرای تست های حلقه بازی با Test Lab اطلاعات بیشتری کسب کنید.

  • پرچم Sharding یکنواخت (در بتا) : پرچمی که تعداد قسمتهایی را که می خواهید موارد آزمایشی را به طور مساوی توزیع کنید ، مشخص می کند. این قسمت ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم Sharding Manual (در بتا) : پرچمی که گروهی از بسته ها ، کلاس ها و/یا موارد آزمایش را برای اجرای در یک قسمت (گروهی از موارد آزمون) مشخص می کند. این قسمت ها به صورت موازی در دستگاه های جداگانه اجرا می شوند.

  • پرچم پروفایل ترافیک شبکه (در بتا) : پرچمی که مشخص می کند آزمایشات شما از تست های شما با دستگاه های فیزیکی استفاده می کند. پروفایل های شبکه انواع مختلفی از شرایط شبکه را تقلید می کنند و به شما امکان می دهند عملکرد برنامه خود را بر روی شبکه های غیرقابل اعتماد یا غیرقابل پیش بینی آزمایش کنید.

دستورات 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/Network.
2 آزمایش خارج شد زیرا دستورات یا استدلال های ناشناخته ارائه شده است.
10 یک یا چند مورد آزمون (کلاس های آزمایش شده یا روش کلاس) در یک اجرای آزمون نمی گذرد.
15 Firebase Test Lab به دلیل خطای غیر منتظره نمی تواند تعیین کند که ماتریس آزمون عبور کرده یا شکست خورده است.
18 محیط آزمون برای این اجرای آزمایش به دلیل ابعاد آزمون ناسازگار پشتیبانی نمی شود. اگر سطح API Android انتخاب شده توسط نوع دستگاه انتخاب شده پشتیبانی نشود ، این خطا ممکن است رخ دهد.
19 ماتریس تست توسط کاربر لغو شد.
20 یک خطای زیرساخت آزمایشی رخ داده است.