استكشاف الأخطاء وإصلاحها في 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. يمكن أن تتأثر مدة هذه الخطوة بكمية العناصر وحجمها.
التطبيق لا يعرض البيانات ويتعذّر العثور على لقطات الشاشة
يتم تخزين عناصر تنفيذ الاختبار (مثل لقطات الشاشة وملفات السجلّ) في
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 API. يُرجى العِلم أنّ حصة الاختبار تستخدم خطة الأسعار العادية في 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
. تتم محاسبة عمليات إعادة تشغيل الاختبارات غير المستقرة أو يتم احتسابها ضمن حصتك اليومية مثل عمليات تنفيذ الاختبارات العادية.
يرجى الإحاطة علمًا بالتالي:
يتم تنفيذ الاختبار بأكمله مرة أخرى عند رصد حدوث خطأ. لا تتوفّر إمكانية إعادة محاولة تنفيذ حالات الاختبار التي تعذّر تنفيذها فقط.
يتم تحديد موعد تنفيذ عمليات إعادة المحاولة لإصلاح المشاكل في الوقت نفسه، ولكن لا يمكن ضمان تنفيذها بالتوازي، مثلاً، عندما يتجاوز عدد الزيارات عدد الأجهزة المتاحة.
هل يتوافق تطبيق Test Lab مع الأجهزة القابلة للارتداء؟
نعم. تتوافق شبكة Test Lab مع ساعة Google Pixel Watch. يمكنك الآن إجراء اختبارات على تطبيق Wear المستقل على ساعات 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 Test Orchestrator، عليك توفير دليل لتخزين نتائج التغطية:
أين يمكنني العثور على تفاصيل الجهاز، مثل الدقة وواجهات التطبيق الثنائية المتوافقة وما إلى ذلك؟
تتوفّر معلومات تفصيلية عن الجهاز من خلال واجهة برمجة التطبيقات ويمكن الوصول إليها من عميل gcloud باستخدام الأمر describe:
gcloud firebase test android models describe MODEL
المشكلات المعروفة
اختبارات CAPTCHA لتسجيل الدخول
لا يمكن لاختبار Robo تجاوز شاشات تسجيل الدخول التي تتطلّب إجراءً إضافيًا من المستخدمين بخلاف إدخال بيانات الاعتماد لتسجيل الدخول، مثل إكمال اختبار CAPTCHA.
توافق إطار واجهة المستخدم
يعمل اختبار Robo بشكل أفضل مع التطبيقات التي تستخدم عناصر واجهة المستخدم من إطار عمل واجهة مستخدم Android (بما في ذلك الكائنات View وViewGroup وWebView). إذا كنت تستخدم اختبار Robo لتشغيل تطبيقات تستخدم أُطر عمل أخرى لواجهة المستخدم، بما في ذلك التطبيقات التي تستخدم محرك ألعاب Unity، قد يتوقف الاختبار بدون استكشاف ما بعد الشاشة الأولى.