استكشاف الأخطاء وإصلاحها في 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.
حصة 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، قد يخرج الاختبار بدون استكشاف ما بعد الشاشة الأولى.