يصف هذا الدليل كيفية تشغيل اختبار الأجهزة أو Robo أو Game Loop باستخدام gcloud CLI .
للحصول على قائمة كاملة بأوامر gcloud
التي يمكنك استخدامها مع تطبيق Android الخاص بك في Test Lab، تفضل بزيارة الوثائق المرجعية gcloud firebase test android
.
قبل ان تبدأ
إذا لم تكن قد قمت بذلك بالفعل، فأضف Firebase إلى مشروع Android الخاص بك .
الخطوة 1. قم بإعداد gcloud CLI
- قم بتنزيل Google Cloud SDK
- تأكد من تحديث التثبيت:
gcloud components update
- قم بتسجيل الدخول إلى gcloud CLI باستخدام حساب Google الخاص بك:
gcloud auth login
- قم بتعيين مشروع Firebase الخاص بك في gcloud، حيث PROJECT_ID هو معرف مشروع Firebase الخاص بك:
gcloud config set project PROJECT_ID
يتضمن ذلك أداة gcloud CLI.
الخطوة 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
على إصدارات نظام التشغيل التي يدعمها الجهاز.
مثال الإخراج
- يحتوي العمود
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 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:
- افتح رابط وحدة تحكم Firebase الذي طبعته أداة
gcloud
أعلى جدول نتائج الاختبار في جهازك الطرفي. - انقر فوق تنفيذ اختباري من القائمة الموجودة على هذا الرابط لفتح صفحة تفاصيل التنفيذ.
- انقر فوق نتائج الاختبار للانتقال إلى مجموعة التخزين السحابي مع نتائج اختبار التنفيذ.
- افتح
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 : مجموعة من أعلام التكوين التي تعمل على تمكين "الوضع التجريبي" والتحكم فيه لمحاكاة إجراءات اللاعب في تطبيقات اللعبة. تعرف على المزيد حول تشغيل اختبارات Game Loop باستخدام Test Lab .
علامة المشاركة الموحدة (في الإصدار التجريبي) : علامة تحدد عدد الأجزاء التي تريد توزيع حالات الاختبار عليها بالتساوي. يتم تشغيل القطع بالتوازي على أجهزة منفصلة.
علامة المشاركة اليدوية (في النسخة التجريبية) : علامة تحدد مجموعة من الحزم و/أو الفئات و/أو حالات الاختبار لتشغيلها في جزء (مجموعة من حالات الاختبار). يتم تشغيل القطع بالتوازي على أجهزة منفصلة.
علامة ملفات تعريف حركة مرور الشبكة (في الإصدار التجريبي) : علامة تحدد ملف تعريف الشبكة الذي تستخدمه اختباراتك مع الأجهزة الفعلية. تحاكي ملفات تعريف الشبكة مجموعة متنوعة من ظروف الشبكات، مما يسمح لك باختبار أداء تطبيقك على شبكات غير موثوقة أو لا يمكن التنبؤ بها.
برمجة أوامر 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 | حدث خطأ في البنية الأساسية للاختبار. |