ابدأ الاختبار باستخدام 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. قم بتسجيل الدخول إلى gcloud CLI باستخدام حساب Google الخاص بك:
    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
    

    يحتوي الإخراج على العلامة التجارية لطراز الجهاز، والشركة المصنعة، وإصدارات نظام التشغيل، ومستويات واجهة برمجة التطبيقات المدعومة، والواجهات الثنائية للتطبيقات المدعومة (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، قم بتشغيل المثال التالي للأمر:

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 ضمنية إذا لم يتم تحديد قيمة --type .
  • لمساعدتك في تحديد مصفوفات الاختبار وتحديد موقعها في وحدة تحكم 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"
  • تكون معلمة --type Instrumentation ضمنية إذا تم تحديد APK اختباري باستخدام --test .
  • لمساعدتك في تحديد مصفوفات الاختبار وتحديد موقعها في وحدة تحكم 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 v1.1 أو أعلى. لتمكينه، استخدم gcloud firebase test android run مع ملف
--use-orchestrator . لتعطيله، استخدم علامة --no-use-orchestrator .

يمكنك أيضًا التحكم في كيفية قيام Test Lab بإجراء اختبارات الأجهزة الخاصة بك باستخدام علامات إضافية غير موضحة أعلاه. على سبيل المثال، يمكنك استخدام علامة --test-targets لاختبار فئة واحدة أو طريقة فئة يستخدمها APK الاختباري الخاص بك. يمكنك أيضًا معرفة ما إذا كان اختبارك الذي فشل كان غير مستقر بالفعل أم لا باستخدام علامة --num-flaky-test-attempts ، التي تحدد عدد المرات التي يجب إعادة محاولة تنفيذ الاختبار فيها في حالة واحدة أو أكثر من حالات الاختبار الخاصة به تفشل لأي سبب من الأسباب. لمعرفة المزيد، راجع اختبار gcloud firebase android run .

تقارير تغطية الكود لاختبارات الأجهزة

يدعم Test Lab أدوات إعداد التقارير عن تغطية التعليمات البرمجية EMMA و JaCoCo . إذا كانت لديك أي من الأداتين مدمجتين في تصميم تطبيقك، فيمكنك الحصول على تقرير تغطية التعليمات البرمجية لاختبارات Test Lab عن طريق تشغيل gcloud firebase test android run مع بعض الوسائط الإضافية. إذا لم يتم تمكين 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. انقر فوق نتائج الاختبار للانتقال إلى مجموعة التخزين السحابي مع نتائج اختبار التنفيذ.
  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 لعنصر واجهة المستخدم المستهدف، value هي السلسلة النصية . يمكنك أيضًا استخدام هذه العلامة لإخبار Robo بتجاهل عناصر واجهة مستخدم محددة (على سبيل المثال، زر "تسجيل الخروج"). يتم دعم حقول EditText ولكن ليس الحقول النصية في عناصر واجهة مستخدم WebView .

على سبيل المثال، يمكنك استخدام المعلمة التالية لتسجيل الدخول المخصص:

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

الأوامر والأعلام المتاحة

يحتوي Test Lab gcloud CLI على العديد من الأوامر والأعلام المتاحة التي تتيح لك إجراء اختبارات بمواصفات مختلفة:

برمجة أوامر gcloud باستخدام Test Lab

يمكنك استخدام البرامج النصية لـ Shell أو الملفات الدفعية لأتمتة أوامر اختبار تطبيقات الهاتف المحمول التي قد تقوم بتشغيلها باستخدام سطر أوامر 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 بيئة الاختبار لتنفيذ الاختبار هذا غير مدعومة بسبب عدم توافق أبعاد الاختبار. قد يحدث هذا الخطأ إذا كان مستوى Android API المحدد غير مدعوم بنوع الجهاز المحدد.
19 تم إلغاء مصفوفة الاختبار من قبل المستخدم.
20 حدث خطأ في البنية الأساسية للاختبار.