Firebase Test Lab is deprecated and will be fully shut down on September 30, 2027. To
maintain your testing workflows, you can migrate to the Developer Device Platform on Google
Cloud. See the
Developer Device Platform Migration Guide
and FAQ for more
details.
تستخدم Google تكنولوجيا الذكاء الاصطناعي لترجمة المحتوى إلى لغتك المفضّلة، وقد تتضمّن بعض الأخطاء.
استكشاف الأخطاء وإصلاحها في Test Lab & الأسئلة الشائعة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تقدّم هذه الصفحة مساعدة في تحديد المشاكل وحلّها وإجابات عن الأسئلة الشائعة حول إجراء الاختبارات باستخدام Firebase Test Lab. يتم أيضًا توثيق
المشاكل المعروفة. إذا لم تتمكّن من العثور على ما تبحث عنه أو كنت بحاجة إلى مساعدة إضافية، يمكنك الانضمام إلى قناة #test-lab على Firebase Slack أو التواصل مع فريق دعم Firebase.
تحديد المشاكل وحلّها
لماذا يستغرق الاختبار وقتًا طويلاً؟
عند اختيار جهاز ذي مستوى سعة عالٍ في قائمة Test Lab، قد تبدأ الاختبارات بشكل أسرع. عندما تكون سعة الجهاز منخفضة، قد يستغرق إجراء الاختبارات وقتًا أطول. إذا كان عدد الاختبارات التي تم استدعاؤها أكبر بكثير من سعة الأجهزة المحدّدة، قد تستغرق الاختبارات وقتًا أطول حتى تنتهي.
قد تستغرق الاختبارات التي يتم إجراؤها على أي مستوى من مستويات سعة الجهاز وقتًا أطول بسبب
العوامل التالية:
عدد الزيارات، والذي يؤثر في مدى توفّر الأجهزة وسرعة الاختبار
أعطال في الأجهزة أو البنية الأساسية، والتي يمكن أن تحدث في أي وقت للتحقّق مما إذا تم الإبلاغ عن مشكلة في البنية الأساسية لخدمة Test Lab، يُرجى الاطّلاع على لوحة البيانات الخاصة بالحالة في Firebase.
لمزيد من المعلومات حول سعة الجهاز في "Test Lab"، يُرجى الاطّلاع على معلومات سعة الجهاز لنظامَي التشغيل Android وiOS.
لماذا تظهر نتائج اختبار غير حاسمة؟
تحدث نتائج الاختبار غير الحاسمة عادةً إما بسبب عمليات تشغيل الاختبار الملغاة
أو أخطاء البنية الأساسية.
تحدث أخطاء البنية الأساسية بسبب مشاكل داخلية في "Test Lab"، مثل أخطاء الشبكة أو سلوكيات الجهاز غير المتوقعة. تتوقف أداة Test Lab داخليًا عن إجراء الاختبارات التي تؤدي إلى حدوث أخطاء في البنية الأساسية عدة مرات قبل الإبلاغ عن نتيجة غير حاسمة، ولكن يمكنك إيقاف عمليات إعادة المحاولة هذه باستخدام failFast.
يُرجى إعادة إجراء الاختبار في Test Lab للتأكّد من إمكانية تكراره.
حاوِل إجراء الاختبار على جهاز أو نوع جهاز مختلفَين، إن أمكن.
إذا استمرت المشكلة، يُرجى التواصل مع فريق Test Lab في
قناة #test-lab على
Firebase Slack.
لماذا جعل التقسيم اختباراتي تستغرق
وقتًا أطول؟
يمكن أن يؤدي التقسيم إلى استغراق الاختبارات وقتًا أطول عندما يتجاوز عدد الأقسام التي حدّدتها عدد الأجهزة المتاحة للاستخدام في Test Lab. لتجنُّب هذا الموقف، حاوِل التبديل إلى جهاز آخر. لمزيد من المعلومات حول اختيار جهاز مختلف، يُرجى الاطّلاع على
سعة الجهاز:
لماذا يستغرق بدء
الاختبار وقتًا طويلاً؟
عند إرسال طلب اختبار، يتم أولاً التحقّق من صحة تطبيقك وإعادة توقيعه وما إلى ذلك
استعدادًا لإجراء الاختبارات على أحد الأجهزة. عادةً ما تكتمل هذه العملية في أقل من بضع ثوانٍ، ولكن يمكن أن تتأثر بعوامل مثل حجم تطبيقك.
بعد تجهيز تطبيقك، تتم جدولة عمليات التنفيذ التجريبي وتظل في قائمة انتظار
إلى أن يصبح الجهاز جاهزًا لتشغيلها. إلى أن تنتهي جميع عمليات التنفيذ التجريبي، ستكون حالة المصفوفة "في انتظار المراجعة" (بغض النظر عمّا إذا كانت عمليات التنفيذ التجريبي في قائمة الانتظار أو قيد التشغيل).
لماذا يستغرق الاختبار وقتًا طويلاً حتى ينتهي؟
بعد انتهاء تنفيذ الاختبار، يتم تنزيل عناصر الاختبار من الجهاز ومعالجتها وتحميلها إلى Cloud Storage. يمكن أن تتأثر مدة هذه الخطوة
بكمية وحجم البيانات.
تحديد المشاكل وحلّها على أجهزة Android
التطبيق لا يعرض البيانات ولا يمكنه تحديد مكان لقطات الشاشة
يتم تخزين عناصر تنفيذ الاختبار (مثل لقطات الشاشة وملفات السجلّ) في
Google Cloud Storage ويتم عرضها مباشرةً في وحدة تحكّم Firebase. إذا تم إجراء التنفيذ التجريبي خلال آخر 90 يومًا، تأكَّد من أنّك منحت أدوارًا على مستوى المشروع (مالك المشروع أو محرِّر المشروع أو مُشاهد المشروع).
يُرجى أيضًا التأكّد من عدم تفعيل Cloud Audit Logging لمشروعك
أو مؤسستك.
إذا تم تنفيذ الاختبار قبل أكثر من 90 يومًا، من المرجّح أنّه تم حذف عناصر الاختبار تلقائيًا. يمكنك التحقّق من إعدادات مجموعة النتائج من خلال النقر على علامة التبويب نتائج الاختبار في لوحة بيانات "Test Lab". يتم ضبط حزمة النتائج التلقائية
للاحتفاظ بالعناصر لمدة 90 يومًا.
لماذا أتلقّى نتائج جزئية أو ناقصة لإطار اختبار قياس الأداء؟
عند إجراء اختبارات لقياس حالة التطبيق، قد تظهر لك أخطاء في الاختبار تشير إلى نتائج جزئية تحتوي على رسائل مثل Test run failed to complete. Expected
x tests, received y (حيث تكون قيمة y أقل من x).
يعني هذا الخطأ أنّ Test Lab لم يتمكّن من تحليل أداة Logcat بحثًا عن علامات بدء أو انتهاء إطار الاختبار التي يتم إنشاؤها عادةً بواسطة AndroidJUnitRunner.
في ما يلي الأسباب الشائعة لهذه المشكلة:
وصف المشكلة
الحل المحتمل
لم يتم تشغيل إطار الاختبار بسبب انتهاء المهلة. إذا كانت المدة الإجمالية للاختبارات أطول من المهلة التي حدّدتها أو أطول من الحد الأقصى للمهلة، تلغي أداة Test Lab بقية أُطر الاختبار.
يمكنك زيادة مهلة المصفوفة للتأكّد من إمكانية إكمال جميع الاختبارات.
قسِّم الاختبارات إذا لم تكن قد فعلت ذلك من قبل، بحيث يتم تشغيل مجموعة فرعية من الاختبارات في كل جزء وإكمالها في فترة زمنية أقصر.
إذا سبق لك تفعيل التقسيم، يمكنك زيادة عدد الأقسام.
تعذّر إكمال إطار الاختبار بسبب الخروج منه قبل الأوان أو توقّفه.
قد يتم إنهاء إطار الاختبار قبل الأوان بسبب استثناء لم يتم رصده أو
خطأ في التأكيد. قد تعلق أُطر الاختبار في حلقة لا نهائية أو قد لا تتمكّن من المتابعة، على سبيل المثال، إذا لم يعرض التطبيق العرض الصحيح ولم يتمكّن إطار الاختبار من تنفيذ الإجراء على واجهة المستخدم.
تحقَّق من الفيديو وlogcat لمعرفة مكان توقُّف
الاختبار.
تعطّل مشغّل اختبار مخصّص (بما في ذلك AndroidJUnitRunner الموسّع)
بشكل غير متوقع أو كتب علامات بداية أو نهاية غير متوقعة لإطار الاختبار في
logcat.
تحقَّق من رمز مشغّل الاختبار.
تمت كتابة سجلات زائدة في logcat، ما أدى إلى تجاوز سعة المخزن المؤقت
أو تعطُّل عملية logcat.
يجب تقليل عمليات الكتابة إلى logcat.
تعطّل التطبيق قيد الاختبار.
تصحيح أخطاء تطبيقك
الأسئلة الشائعة
ما هي الحصص المجانية
في Test Lab؟ ماذا أفعل إذا نفدت المساحة؟
يوفّر Firebase Test Lab حصصًا بدون تكلفة للاختبار على الأجهزة واستخدام
Cloud APIs. يُرجى العِلم أنّ حصة الاختبار تستخدم خطة أسعار Firebase العادية،
في حين أنّ حصص Cloud API لا تستخدمها.
الحصة المخصّصة للاختبار
يتم تحديد حصص الاختبار حسب عدد الأجهزة المستخدَمة لإجراء الاختبارات.
تتضمّن خطة Spark في Firebase حصة اختبار ثابتة بدون أي تكلفة على المستخدمين. بالنسبة إلى خطة Blaze، قد تزيد حصصك إذا زاد استخدامك لـ Google Cloud بمرور الوقت. إذا بلغت حصة الاختبار، انتظِر حتى اليوم التالي أو انتقِل إلى خطة Blaze إذا كنت تستخدم حاليًا خطة Spark.
إذا كنت مشتركًا في خطة Blaze، يمكنك طلب زيادة الحصة.
لمزيد من المعلومات، يُرجى الاطّلاع على اختبار حصة الاستخدام.
تتضمّن Cloud Testing API حدَّين للحصة: عدد الطلبات في اليوم لكل مشروع، وعدد الطلبات كل 100 ثانية لكل مشروع. يمكنك مراقبة
استخدامك في
وحدة تحكّم Google Cloud.
حصة Cloud Tool Results API
تتضمّن واجهة Cloud Tool Results API حدَّين للحصة: عدد طلبات البحث في اليوم لكل مشروع، وعدد طلبات البحث كل 100 ثانية لكل مشروع. يمكنك مراقبة
استخدامك في
وحدة تحكّم Google Cloud.
يُرجى الاطّلاع على حصص Cloud API لـ Test Lab
لمزيد من المعلومات حول حدود واجهة برمجة التطبيقات. إذا بلغت حصة واجهة برمجة التطبيقات:
إرسال طلب لزيادة الحصص من خلال
تعديل حصصك
مباشرةً في وحدة تحكّم Google Cloud (يُرجى العِلم أنّ معظم الحدود يتم ضبطها على
الحدّ الأقصى تلقائيًا)، أو
يمكنك طلب زيادة حصص واجهة برمجة التطبيقات من خلال ملء نموذج طلب في وحدة تحكّم Google Cloud أو من خلال التواصل مع فريق دعم Firebase.
كيف يمكنني معرفة ما إذا كانت الزيارات التي تصل إلى الخلفية تأتي من Test Lab؟
من الخلفية، يمكنك تحديد ما إذا كانت الزيارات واردة من أجهزة اختبار مستضافة على Firebase من خلال التحقّق من عنوان IP المصدر مقارنةً بنطاقات عناوين IP.
هل يتوافق Test Lab مع
VPC-SC؟
لا تعمل خدمة Test Lab مع VPC-SC، ما يؤدي إلى حظر
نسخ التطبيقات والعناصر الأخرى الخاصة بالاختبار بين مساحة التخزين الداخلية في Test Lab
وحِزم نتائج المستخدمين.
كيف يمكنني رصد الاختبارات غير الموثوقة في
Test Lab؟
لرصد السلوك غير المستقر في اختباراتك، ننصحك باستخدام الخيار
--num-flaky-test-attempts
. تتم فوترة عمليات إعادة التشغيل لإصلاح المشاكل المتقطّعة أو احتسابها ضمن حصتك اليومية مثل
عمليات التنفيذ التجريبي العادية.
يرجى الإحاطة علمًا بالتالي:
يتم تشغيل عملية تنفيذ الاختبار بالكامل مرة أخرى عند رصد أي عطل. لا تتوفّر إمكانية إعادة محاولة تنفيذ إطارات الاختبار التي تعذّر تنفيذها فقط.
تتم جدولة عمليات إعادة المحاولة لإصلاح الاختبارات غير الثابتة في الوقت نفسه، ولكن لا يمكن ضمان تشغيلها بالتوازي، على سبيل المثال، عندما يتجاوز عدد الزيارات عدد الأجهزة المتاحة.
الأسئلة الشائعة حول أجهزة iOS
هل يتوافق Test Lab مع
Appium أو Flutter/FlutterDriver أو ReactNative/Jest أو Cucumber؟
ومع أنّ بعض هذه العناصر مدرَجة في خطتنا، لا يمكننا حاليًا الالتزام بإتاحة منصات الاختبار وتطوير التطبيقات هذه.
أين يمكنني العثور على تفاصيل الجهاز،
مثل درجة الدقة وما إلى ذلك؟
تتوفّر معلومات مفصّلة عن الجهاز من خلال واجهة برمجة التطبيقات ويمكن الوصول إليها
من عميل gcloud باستخدام
أمر describe:
gcloud firebase test ios models describe MODEL
هل يمكنني استخدام التقسيم مع اختبارات iOS؟
لا تتوفّر ميزة التقسيم بشكلٍ تلقائي في Test Lab لأجهزة iOS. ومع ذلك، يمكنك استخدام برنامج Flank لتقسيم أُطر اختبار iOS.
يتم ذلك من خلال ضبط مفتاح OnlyTestIdentifiers وقيمه في ملف .xctestrun.
لمزيد من التفاصيل، يُرجى الاطّلاع على صفحة man الخاصة بـ "xcodebuild.xctestrun".
لماذا لا تظهر الفيديوهات في نتائج اختبار iOS؟
في الإصدار 18 من نظام التشغيل iOS أو الإصدارات الأحدث، لا يمكننا عرض الفيديوهات في النتائج.
الأسئلة الشائعة المتعلّقة بنظام التشغيل Android
هل يتوافق Test Lab مع
الأجهزة القابلة للارتداء؟
نعم. يتوافق تطبيق "Test Lab" مع ساعة Google Pixel Watch. يمكنك الآن إجراء اختبارات على تطبيق Wear OS المستقل على ساعات Google Pixel Watch. لمزيد من المعلومات حول أجهزة Test Lab، يُرجى الاطّلاع على مقالة الاختبار على الأجهزة المتاحة.
هل يتوافق Test Lab مع
أحدث أجهزة Google؟
نعم. يتوافق تطبيق "Test Lab" مع جهازَي Google Pixel Tablet وGoogle Pixel Fold. يمكنك إجراء الاختبارات على أجهزتك الفعلية المستقلة.
لمزيد من المعلومات حول أجهزة Test Lab، يُرجى الاطّلاع على مقالة الاختبار على الأجهزة المتاحة.
كيف يمكنني رصد اختبار قيد التشغيل
في Test Lab؟
إذا كنت تختبر تطبيقك في Firebase أو تُجري اختبارات
لتقرير الإطلاق التجريبي
في Play Console، يمكنك اكتشاف ما إذا كان يتم إجراء اختبار
على جهاز مستضاف على Firebase من خلال التحقّق من سمة النظام
firebase.test.lab في ملف MainActivity. يمكنك بعد ذلك تنفيذ عبارات إضافية
استنادًا إلى القيمة المنطقية لـ testLabSetting. لمزيد من المعلومات، يُرجى الاطّلاع على سلوكيات الاختبار المعدَّلة.
هل يتوافق Test Lab مع Appium أو Flutter/FlutterDriver أو ReactNative/Jest أو Cucumber؟
ومع أنّ بعض هذه العناصر مدرَجة في خطتنا، لا يمكننا حاليًا الالتزام بإتاحة منصات الاختبار وتطوير التطبيقات هذه. ومع ذلك، إذا أنشأت تطبيقك باستخدام إطار عمل متوافق مع Espresso (مثل Flutter)، يمكنك كتابة اختبار لقياس حالة التطبيق باستخدام Espresso ثم إجراء الاختبار في Test Lab.
هل تتيح منصة Test Lab
اختبار التطبيقات التي تم إخفاء رموزها البرمجية، على سبيل المثال، باستخدام ProGuard أو R8؟
لا يتيح Test Lab صراحةً التعتيم أو إزالة التعتيم. وعلى الرغم من أنّ التطبيق سيعمل على الأرجح، ستظهر أي بيانات مخفية للتطبيق، مثل تتبُّع تسلسل استدعاء الدوال البرمجية، على أنّها مخفية في السجلّات.
هل يمكنني استخدام جهازي القابل للطي في
أوضاع مختلفة أثناء الاختبار على Test Lab؟
يمكن أن تكون الأجهزة القابلة للطي في حالات طي مختلفة، مثل FLAT (مفتوح بالكامل) أو HALF_OPENED (بين المفتوح بالكامل والمغلق تمامًا).
من ناحية أخرى، تتكوّن الأوضاع من اتجاه معيّن للجهاز وحالة قابلة للطي. على سبيل المثال، وضعية سطح الطاولة، وهي حالة HALF_OPENED في الاتجاه الأفقي، أو وضعية الكتاب، وهي حالة HALF_OPENED في الاتجاه العمودي.
على عكس منتجات Firebase الأخرى، لا تحتاج إلى إضافة حزمة تطوير برامج (SDK) لمنصة Firebase لاستخدام Test Lab. إذا لم يكن لديك تطبيق، يمكنك تنزيل حزمة APK على الإنترنت أو إنشاء تطبيق وحزمة APK تجريبية من أحد النماذج في مستودع AndroidX GitHub.
ملاحظة: تحتاج فقط إلى ملف APK الخاص بتطبيقك لإجراء اختبار Robo، بينما يتطلّب اختبار لقياس حالة التطبيق كلاً من التطبيق وحزمة APK للاختبار يتم إنشاؤهما من الرمز المصدر. لمزيد من المعلومات،
يمكنك الاطّلاع على الاختبارات الآلية.
اختبار الاختلاف في لقطات الشاشة هو اختبار يستند إلى مقارنة صور الشاشة التي تم الحصول عليها أثناء إجراء الاختبار بالصور الذهبية التي تمثّل السلوك المتوقّع. وقد تكون هذه الاختبارات أكثر هشاشة على بعض أنواع الأجهزة من غيرها. ننصح باستهداف أجهزة محاكاة Arm (*.arm) لإجراء هذه الأنواع من الاختبارات. تستخدم أجهزة محاكاة Arm صورًا مشابهة جدًا أو مطابقة لمحاكيات "استوديو Android" العامة.
ننصحك أيضًا بالاطّلاع على مكتبات الاختبار التي يمكن أن تساعد في جعل
اختبارات لقطات الشاشة أكثر فعالية في ظل التغييرات المتوقعة.
هل يحدّث Test Lab الأجهزة الافتراضية؟
نعم. يتم تعديل الأجهزة الافتراضية عند إجراء التغييرات التالية:
التعديلات على الصور الحالية
إيقاف مستويات واجهة برمجة التطبيقات السابقة نهائيًا
تمت إضافة مستويات جديدة لواجهة برمجة تطبيقات Android
كيف يمكنني تفعيل تقارير التغطية؟
لتفعيل تقارير التغطية، أضِف coverage=true إلى
حقل environmentVariables.
إذا كنت تستخدم "منسّق الاختبارات من Android"، عليك توفير دليل لتخزين نتائج التغطية:
أين يمكنني العثور على تفاصيل الجهاز، مثل
درجة الدقة وواجهات التطبيق الثنائية (ABI) المتوافقة وما إلى ذلك؟
تتوفّر معلومات مفصّلة عن الجهاز من خلال واجهة برمجة التطبيقات ويمكن الوصول إليها
من عميل gcloud باستخدام
الأمر describe:
gcloud firebase test android models describe MODEL
كيف يمكنني تسجيل الدخول إلى تطبيق Wear OS بدون هاتف؟
إذا كان تطبيقك يتيح ميزة "تسجيل الدخول باستخدام حساب Google"، من المفترض أن يعمل ذلك تلقائيًا مع حساب
اختباري. وإذا كان تطبيقك يتطلّب عادةً هاتفًا لتسجيل الدخول، يمكنك إنشاء تنويعة تصميم تتخطّى تسجيل الدخول وتستخدم رمزًا مميزًا مضمّنًا في إصدار الاختبار، أو قراءة الملفات على القرص التي يتم عادةً إرسالها باستخدام --other-files option. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تسجيل الدخول المخصّص وإدخال النص باستخدام اختبارات Robo.
المشكلات المعروفة
اختبارات CAPTCHA لتسجيل الدخول
لا يمكن لاختبار Robo تجاوز شاشات تسجيل الدخول التي تتطلّب
إجراءً إضافيًا من المستخدم بخلاف إدخال بيانات الاعتماد لتسجيل الدخول، على سبيل المثال،
إكمال اختبار CAPTCHA.
المشاكل المعروفة في iOS
تسجيل الدخول تلقائيًا
لا تتوفّر ميزة تسجيل الدخول تلقائيًا باستخدام حساب Google
في اختبارات Robo لنظام التشغيل iOS+ (إصدار تجريبي).
المشاكل المعروفة المتعلّقة بنظام التشغيل Android
دعم إطار عمل واجهة المستخدم
يعمل اختبار Robo بشكل أفضل مع التطبيقات التي تستخدم عناصر في واجهة المستخدم من إطار عمل واجهة مستخدم Android (بما في ذلك عناصر View وViewGroup وWebView). إذا كنت تستخدم اختبار Robo لتشغيل التطبيقات التي تستخدم أُطر عمل أخرى لواجهة المستخدم، بما في ذلك التطبيقات التي تستخدم محرّك ألعاب Unity، قد يخرج الاختبار بدون استكشاف ما بعد الشاشة الأولى.
تاريخ التعديل الأخير: 2026-10-16 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2026-10-16 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]