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 حصصًا بدون تكلفة للاختبار على الأجهزة ولاستخدام واجهات برمجة التطبيقات على السحابة الإلكترونية. يُرجى العِلم أنّ حصة الاختبار تستخدم خطة أسعار Firebase العادية، بينما لا تستخدم حصص Cloud API هذه الخطة.
حصص الاختبار
يتم تحديد حصص الاختبارات حسب عدد الأجهزة المستخدَمة لإجراء الاختبارات.
تتضمّن خطة Spark من Firebase حصة اختبار ثابتة بدون أي تكلفة على المستخدمين. بالنسبة إلى خطة Blaze، قد تزيد حصصك إذا زاد استخدامك لخدمة Google Cloud بمرور الوقت. إذا بلغت حصة الاختبار، عليك الانتظار حتى اليوم التالي أو الترقية إلى خطة Blaze إذا كنت تستخدم خطة Spark حاليًا.
إذا كنت تستخدم خطة Blaze، يمكنك طلب زيادة الحصة.
لمزيد من المعلومات، يُرجى الاطّلاع على حصة الاختبار.
تتضمّن واجهة برمجة التطبيقات Cloud Testing API حدّين للحصة: الطلبات في اليوم لكل مشروع، والطلبات كل 100 ثانية لكل مشروع. يمكنك مراقبة استخدامك في Google Cloud console.
حصة Cloud Tool Results API
تتضمّن واجهة برمجة التطبيقات Cloud Tool Results API حدّين للحصة المسموح بها: طلبات البحث في اليوم لكل مشروع، وطلبات البحث كل 100 ثانية لكل مشروع. يمكنك مراقبة استخدامك في Google Cloud console.
يُرجى الاطّلاع على حصص Cloud API في Test Lab
للحصول على مزيد من المعلومات حول حدود واجهة برمجة التطبيقات. في حال بلوغ حصة واجهة برمجة التطبيقات:
يمكنك إرسال طلب للحصول على حصص أعلى من خلال
تعديل حصصك
مباشرةً في وحدة تحكّم Google Cloud (يُرجى العِلم أنّه يتم ضبط معظم الحدود على
الحدّ الأقصى تلقائيًا)، أو
يمكنك طلب حصص أعلى من واجهة برمجة التطبيقات من خلال ملء نموذج طلب في وحدة تحكّم Google Cloud أو عن طريق التواصل مع فريق دعم Firebase.
كيف يمكنني معرفة ما إذا كانت الزيارات التي تصل إلى الخلفية تأتي من Test Lab؟
من الخلفية، يمكنك تحديد ما إذا كانت الزيارات واردة من أجهزة اختبار مستضافة على Firebase من خلال التحقّق من عنوان IP المصدر ومقارنته بنطاقات IP.
هل تعمل Test Lab مع عناصر التحكّم في خدمة سحابة VPC؟
لا تتوافق Test Lab مع VPC-SC، التي تمنع نسخ التطبيقات وغيرها من عناصر الاختبار بين وحدة التخزين الداخلية في Test Lab وحِزم نتائج المستخدمين.
كيف يمكنني رصد الاختبارات غير الموثوقة في Test Lab؟
لرصد السلوك غير الثابت في اختباراتك، ننصحك باستخدام الخيار
--num-flaky-test-attempts
. يتم تحصيل رسوم مقابل عمليات إعادة تشغيل Deflake أو احتسابها ضمن حصتك اليومية مثل عمليات تنفيذ الاختبار العادية.
يرجى الإحاطة علمًا بالتالي:
يتم تنفيذ الاختبار بأكمله مرة أخرى عند رصد خطأ. لا تتوفّر إمكانية إعادة محاولة تنفيذ حالات الاختبار التي تعذّر تنفيذها فقط.
يتم تحديد موعد عمليات إعادة المحاولة لإصلاح المشاكل في الوقت نفسه، ولكن لا يمكن ضمان تنفيذها بالتوازي، مثلاً عندما تتجاوز حركة البيانات عدد الأجهزة المتاحة.
الأسئلة الشائعة الخاصة بنظام التشغيل 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 Studio "العامة".
ننصحك أيضًا بالبحث عن مكتبات اختبار يمكن أن تساعد في جعل اختبارات لقطات الشاشة أكثر فعالية في حال حدوث تغييرات متوقّعة.
هل يحدّث Test Lab الأجهزة الافتراضية؟
نعم. يتم تعديل الأجهزة الافتراضية عند إجراء التغييرات التالية:
تعديلات على الصور الحالية
إيقاف مستويات واجهة برمجة التطبيقات السابقة نهائيًا
إضافة مستويات جديدة لواجهة برمجة تطبيقات Android
كيف يمكنني تفعيل تقارير التغطية؟
لتفعيل تقارير التغطية، أضِف coverage=true إلى الحقل environmentVariables.
إذا كنت تستخدم "منسّق الاختبارات من Android"، عليك توفير دليل
لتخزين نتائج التغطية:
أين يمكنني العثور على تفاصيل الجهاز، مثل الدقة وواجهات التطبيق الثنائية المتوافقة وما إلى ذلك؟
تتوفّر معلومات مفصّلة عن الجهاز من خلال واجهة برمجة التطبيقات ويمكن الوصول إليها من عميل 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-07 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-07 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]