استكشاف الأخطاء وإصلاحها في Test Lab & الأسئلة الشائعة
تقدّم هذه الصفحة مساعدة في تحديد المشاكل وحلّها وإجابات عن الأسئلة الشائعة.
أسئلة حول إجراء الاختبارات باستخدام مركز الاختبار الافتراضي لمنصة Firebase. المشكلات المعروفة أيضًا
موثقة. إذا لم تتمكن من العثور على
تبحث عن المزيد من المساعدة أو تحتاج إلى مساعدة إضافية، فانضم إلى #test-lab
قناتك
Firebase Slack أو التواصل مع Firebase
والدعم.
تحديد المشاكل وحلّها
لماذا يستغرق تنفيذ الاختبار وقتًا طويلاً؟
عند اختيار جهاز ذي سعة عالية في مركز الاختبار الافتراضي
الكتالوج، فقد تبدأ الاختبارات بشكل أسرع. عندما
طاقة جهازك منخفضة، لذا قد يستغرق إجراء الاختبارات وقتًا أطول. إذا زاد عدد
الاختبارات التي تم استدعاؤها أكبر بكثير من سعة الأجهزة المحددة، والاختبارات
يمكن أن يستغرق وقتًا أطول للانتهاء.
قد تستغرق الاختبارات التي يتم إجراؤها على أي مستوى من مستويات سعة الجهاز وقتًا أطول بسبب
العوامل التالية:
عدد الزيارات، ما يؤثّر في مدى توفّر الجهاز وسرعة الاختبار
أعطال في الأجهزة أو البنية الأساسية، قد تحدث في أي وقت للتحقق
إذا تم الإبلاغ عن بنية أساسية تم الإبلاغ عنها في مركز الاختبار الافتراضي، فراجع
لوحة البيانات الخاصة بحالة Firebase.
لمزيد من المعلومات حول سعة الجهاز في مركز الاختبار الافتراضي، يُرجى الاطّلاع على سعة الجهاز.
معلومات لنظامي التشغيل Android وiOS.
لماذا أتلقى نتائج اختبار غير حاسمة؟
عادةً ما تحدث نتائج اختبار غير حاسمة إما بسبب إلغاء عمليات الاختبار
أو في البنية الأساسية.
تنتج أخطاء البنية التحتية عن مشاكل داخلية في معمل الاختبار، مثل الشبكة
الأخطاء أو سلوكيات الجهاز غير المتوقعة. إيقاف عمليات الاختبار الداخلي في Test Lab
ينتج عنها أخطاء في البنية الأساسية عدة مرات قبل الإبلاغ عن
نتيجة غير حاسمة ومع ذلك، يمكنك تعطيل عمليات إعادة المحاولات هذه باستخدام
failFast:
أعِد المحاولة في مركز الاختبار الافتراضي للتأكّد من أنّه قابل للتكرار.
حاوِل إجراء الاختبار على جهاز أو نوع جهاز مختلف، إذا كان ذلك منطبقًا.
في حال استمرار المشكلة، يُرجى التواصل مع فريق Test Lab في
#test-lab channel على
Firebase Slack
لماذا نجحت عملية التقسيم في إجراء اختباراتي
أطول؟
ويمكن أن يؤدي التقسيم إلى أجزاء إلى إجراء الاختبارات لفترة أطول عند زيادة عدد الأجزاء
المحدد يتجاوز عدد الأجهزة المتاحة للاستخدام في مركز الاختبار الافتراضي. إلى
لتجنب هذا الموقف، جرِّب التبديل إلى جهاز آخر. لمزيد من المعلومات
حول اختيار جهاز مختلف، راجع
سعة الجهاز:
لماذا يستغرق الأمر وقتًا طويلاً بالنسبة
الاختبار للبدء؟
عند إرسال طلب اختبار، يتم أولاً التحقّق من صحة تطبيقك وإعادة توقيعه وما إلى ذلك.
استعدادًا لإجراء الاختبارات على الجهاز. عادةً، تكتمل هذه العملية في
أقل من بضع ثوانٍ، لكنها قد تتأثر بعوامل مثل حجم
التطبيق.
بعد الانتهاء من إعداد التطبيق، تتم جدولة عمليات التنفيذ التجريبية وتظل في قائمة انتظار.
إلى أن يصبح الجهاز جاهزًا لتشغيله. إلى أن تنتهي جميع عمليات التنفيذ التجريبية
ستكون حالة المصفوفة "في انتظار المراجعة" (بغض النظر عما إذا كانت عمليات التنفيذ التجريبية
في قائمة الانتظار أو قيد التشغيل بشكل نشط).
لماذا يستغرق الأمر وقتًا طويلاً بالنسبة
اختباره لإنهاء العملية؟
بعد انتهاء تنفيذ الاختبار، يتم تنزيل عناصر الاختبار من
الجهاز ومعالجتها وتحميلها إلى Cloud Storage. يمكن أن تستغرق مدة هذه الخطوة
بحجم العناصر وحجمها.
التطبيق لا يعرض البيانات ولا يمكنه تحديد مكان لقطات الشاشة
يتم تخزين عناصر تنفيذ الاختبار (مثل لقطات الشاشة وملفات السجل) في
خدمة Google Cloud Storage وتعرضها مباشرةً في "وحدة تحكُّم Firebase" في حال حذف
تم تنفيذ الاختبار خلال آخر 90 يومًا، فتحقق من أنك
الأدوار التي تم تعيينها على مستوى المشروع (مالك المشروع أو محرر المشروع أو مُشاهد المشروع).
يُرجى أيضًا التأكّد من عدم تفعيل "تسجيل تدقيق Cloud" لمشروعك.
أو مؤسستك.
إذا تم التنفيذ قبل أكثر من 90 يومًا، فإن معظم
احتمالية حذف عناصر الاختبار تلقائيًا. يمكنك الاطّلاع على
إعدادات حزمة النتائج عن طريق النقر على علامة التبويب نتائج الاختبار في
لوحة بيانات Test Lab النتيجة التلقائية
تم ضبط الحزمة للاحتفاظ بالعناصر لمدة 90 يومًا.
لماذا أحصل على نتائج جزئية أو غير متوفّرة لاختبارات الأدوات؟
عند إجراء اختبارات قياس حالة التطبيق، قد تظهر لك أخطاء في الاختبار تشير إلى جزء من
النتائج التي تحتوي على رسائل مثل Test run failed to complete. Expected
x tests, received y (حيث تكون قيمة y أقل من x).
يعني هذا الخطأ أنّ مركز الاختبار الافتراضي لم يتمكّن من تحليل ملف Logcat لبدء حالة الاختبار.
أو علامات النهاية التي يتم إنشاؤها عادةً بواسطة
AndroidJUnitRunner.
في ما يلي الأسباب الشائعة لهذه المشكلة:
وصف المشكلة
الحلّ المحتمل
لم يتم تنفيذ حالة الاختبار بسبب انتهاء المهلة. إذا كان إجمالي مدة
أطول من المهلة التي حددتها أو أطول من
الحد الأقصى للمهلة،
ويلغي Test Lab بقية حالات الاختبار.
قم بزيادة مهلة المصفوفة للتأكد من إمكانية إكمال جميع الاختبارات.
قسّم الاختبارات إلى أجزاء إذا لم تكن قد فعلت ذلك بالفعل، بحيث يقوم كل جزء بإجراء
مجموعة فرعية من الاختبارات وتكملها في فترة زمنية أقصر.
إذا سبق لك تفعيل التقسيم، يمكنك زيادة عدد الأجزاء.
تعذّر إكمال حالة الاختبار لأنها خرجت مبكرًا أو تعلقت.
قد تغادر حالة الاختبار مبكرًا بسبب استثناء غير معروف أو
في تأكيد البيانات. يمكن أن تعلق حالات الاختبار في حلقة لانهائية أو قد تتعرض
تتعذّر المتابعة، على سبيل المثال، إذا لم يعرض التطبيق طريقة العرض الصحيحة
لا يمكن لحالة الاختبار تنفيذ الإجراء على واجهة المستخدم.
شاهد الفيديو وlogcat لتحديد مكان الاختبار
تَوَقَّفْنَا.
تعطّل برنامج تشغيل اختبار مخصّص (بما في ذلك تمديد AndroidJUnitRunner).
بشكل غير متوقع أو كتابة علامات بداية أو نهاية غير متوقعة لحالة الاختبار
logcat
تحقَّق من رمز برنامج تشغيل الاختبار.
تمت كتابة عدد زائد من السجلات في logcat، ما أدى إلى تجاوز سعة التخزين المؤقت.
أو تعطل عملية logcat.
تقليل عمليات الكتابة إلى logcat
تعطّل التطبيق الذي يخضع للاختبار.
تصحيح أخطاء تطبيقك
الأسئلة الشائعة
ما هي الحصص بدون تكلفة؟
لـ Test Lab؟ ماذا أفعل إذا نفدت المساحة؟
يقدّم مركز الاختبار الافتراضي لمنصة Firebase حصصًا بدون تكلفة للاختبار على الأجهزة والاستخدام.
Cloud APIs. تجدر الإشارة إلى أنّ حصة الاختبار تستخدم خطة أسعار Firebase العادية،
بينما لا يتم ذلك مع حصص Cloud API.
حصة الاختبار
يتم تحديد حصص الاختبار من خلال عدد الأجهزة المستخدمة لإجراء الاختبارات.
تتضمّن خطة Firebase Spark حصة اختبار ثابتة بدون أي تكلفة للمستخدمين. بالنسبة
خطة Blaze، قد تزيد حصصك إذا كان استخدامك لخدمة Google Cloud
يزداد بمرور الوقت. عند الوصول إلى حصة الاختبار، يُرجى الانتظار حتى
أو الترقية إلى خطة Blaze إذا كنت مشتركًا حاليًا في خطة Spark.
إذا كنت مشتركًا حاليًا في خطة Blaze، يمكنك طلب زيادة الحصة.
لمزيد من المعلومات، يُرجى مراجعة
حصة الاختبار:
توفِّر واجهة برمجة التطبيقات Cloud Testing API حدَّين للحصة، وهما: عدد الطلبات في اليوم الواحد.
ومشروعك والطلبات لكل 100 ثانية لكل مشروع. يمكنك مراقبة
الاستخدام في
وحدة تحكُّم Google Cloud
حصة واجهة برمجة التطبيقات للنتائج في Cloud Tool
تأتي واجهة برمجة تطبيقات النتائج في Cloud Tool مع حدين للحصة المسموح بها: طلبات البحث يوميًا لكل
ومشروعك وطلبات البحث لكل 100 ثانية لكل مشروع. يمكنك مراقبة
الاستخدام في
وحدة تحكُّم Google Cloud
يُرجى الاطّلاع على حصص Cloud API في Test Lab.
لمزيد من المعلومات حول حدود واجهة برمجة التطبيقات. إذا وصلت إلى حصة واجهة برمجة التطبيقات:
أرسِل طلبًا للحصول على حصص أعلى بحلول
تعديل حصصك
مباشرةً في وحدة التحكم في Google Cloud (لاحظ أن معظم الحدود تم ضبطها على
الحد الأقصى افتراضيًا)، أو
يمكنك طلب حصص أعلى من واجهة برمجة التطبيقات من خلال ملء نموذج طلب في
Google Cloud Console أو من خلال التواصل
دعم Firebase:
كيف أعرف ما إذا كان
الزيارات التي تصل إلى خادمي الخلفية هي من Test Lab؟
من الخلفية، يمكنك تحديد ما إذا كانت الزيارات تأتي من مستضافة على Firebase
اختبار الأجهزة عن طريق التحقق من عنوان IP المصدر مقابل
نطاقات IP:
هل يتوافق مركز الاختبار الافتراضي مع
هل تريد استخدام VPC-SC؟
لا يعمل مركز الاختبار الافتراضي مع سحابة VPC-SC التي تمنع
نسخ التطبيقات وعناصر الاختبار الأخرى بين قسم الاختبار الداخلي
مساحة التخزين وواجهة وحِزم النتائج.
كيف يمكنني اكتشاف الاختبارات غير المستقرة في
Test Lab؟
لاكتشاف السلوك غير المستقر في الاختبارات، ننصحك باستخدام
--عدد--عدد-محاولات غير مستقرة
الخيار. تتم فوترة عمليات إعادة تشغيل Deflake أو احتسابها ضمن حصتك اليومية تمامًا مثل
عمليات التنفيذ العادية للاختبار.
يرجى الإحاطة علمًا بالتالي:
تتم إعادة تنفيذ الاختبار بأكمله مرة أخرى عند رصد تعذُّر. لا يوجد
دعم إعادة محاولة حالات الاختبار التي تعذّر إكمالها فقط.
تتم جدولة عمليات إعادة المحاولة من خلال Deflake ليتم تشغيلها في الوقت نفسه، ولكن لا يتم ذلك
ضمان تشغيله بالتوازي، على سبيل المثال، عندما تتجاوز حركة المرور عدد
الأجهزة المتوفرة.
هل يتيح Test Lab استخدام هذا التطبيق
الأجهزة القابلة للارتداء؟
نعم. يتوافق Test Lab مع ساعة Google Pixel Watch. يمكنك الآن إجراء اختبارات على
تطبيق Wear المستقل على ساعات Google Pixel Watch. لمزيد من المعلومات حول
أجهزة Test Lab، يُرجى مراجعة القسم الاختبار على
الأجهزة المتاحة
هل يتيح مركز الاختبار الافتراضي استخدام
أحدث أجهزة Google؟
نعم. يتوافق Test Lab مع أجهزة Google Pixel Tablet وGoogle Pixel Fold. يمكنك
إجراء اختباراتك على أجهزتك الفعلية المستقلة.
لمزيد من المعلومات حول
أجهزة Test Lab، يُرجى مراجعة القسم الاختبار على
الأجهزة المتاحة
كيف يمكنني اكتشاف اختبار قيد التشغيل؟
في مركز الاختبار الافتراضي؟
إذا كنت تختبر تطبيقك في Firebase أو تجري اختبارات
تقرير الإطلاق التجريبي
في Play Console، يمكنك معرفة ما إذا كان يتم إجراء اختبار
على جهاز مستضاف على Firebase من خلال البحث عن خاصية النظام
firebase.test.lab في ملف MainActivity. يمكنك بعد ذلك تنفيذ إجراءات
العبارات بناءً على القيمة المنطقية لـ testLabSetting. لمزيد من المعلومات،
المعلومات، راجع
سلوكيات الاختبار المعدَّلة:
هل الاختبار
هل يتوافق مع Appium أو Flutter/FlutterDriver أو ReactNative/Jest أو Cucumber؟
نحن غير قادرين حاليًا على توفير بعض هذه البنود ضمن خارطة الطريق لدينا
التزام بدعم منصات الاختبار وتطوير التطبيقات هذه ومع ذلك،
إذا أنشأت تطبيقك بإطار عمل يتوافق مع Espresso (على سبيل المثال،
Flutter)، يمكنك كتابة اختبار أدوات باستخدام
إسبريسو
ثم أجرِ الاختبار في مركز الاختبار الافتراضي.
هل الاختبار
السماح باختبار التطبيقات التي تم تشويشها، مثل ProGuard أو R8)؟
لا يتيح Test Lab بشكل صريح إخفاء مفاتيح فك التشفير أو إزالة التشويش. بينما
من المحتمل أن يتم تشغيل التطبيق، وأي بيانات تم إخفاء مفاتيح فك تشفيرها، مثل عمليات تتبع تسلسل استدعاء الدوال البرمجية،
ستظهر مشفَّرة في السجلات.
هل يمكنني استخدام جهازي القابل للطي في
الحالات والأوضاع المختلفة للأجهزة القابلة للطي أثناء اختبارها على Test Lab؟
يمكن وضع الأجهزة القابلة للطيّ في عدة حالات، مثلاً FLAT (مفتوحة بالكامل) أو HALF_OPENED (بين مفتوحة بالكامل ومغلقة تمامًا).
أمّا الوضعيات، فتتضمّن اتجاهًا محدّدًا للجهاز وقابلة للطي.
الولاية. على سبيل المثال، وضع "التثبيت على سطح مستوٍ"، وهو حالة HALF_OPENED في الاتجاه الأفقي، أو وضعية الكتاب، أي HALF_OPENED في الاتجاه العمودي.
هل يمكنني تجربة Test Lab إذا لم يكن لدي
تطبيق معين؟
لا تحتاج إلى إضافة منصة Firebase على عكس منتجات Firebase الأخرى
SDK حتى تتمكن من استخدام Test Lab. إذا لم يكن لديك تطبيق، يمكنك
يمكنك تنزيل ملف APK على الإنترنت أو إنشاء تطبيق وحِزمة APK تجريبية من إحدى
النماذج في مستودع AndroidX GitHub.
لاحظ أنك تحتاج فقط إلى
ملف APK الخاص بالتطبيق لإجراء اختبار Robo، بينما يتطلب اختبار قياس حالة التطبيق العمليَن معًا
تطبيق وحِزمة APK تجريبية تم إنشاؤها من رمز المصدر لمزيد من المعلومات
الاطّلاع على الاختبارات الآلية
اختبار اختلاف لقطة الشاشة هو المكان الذي تستند فيه تأكيدات الاختبار إلى شاشة المقارنة.
الصور التي تم الحصول عليها أثناء إجراء اختبار على الصور الذهبية التي تمثل
السلوك. وقد تكون هذه الاختبارات أكثر هشاشة على بعض أنواع الأجهزة من غيرها. ننصح باستهداف
تفعيل أجهزة المحاكاة (*.arm) لهذه الأنواع من الاختبارات. استخدام أجهزة المحاكاة
الصور المشابهة أو المشابهة جدًا للمحاكيات "العامة" في "استوديو Android".
كما ننصحك بالاستعانة بمكتبات الاختبار التي يمكن أن تساعد في
تكون اختبارات لقطات الشاشة أكثر فعالية في حال توفُّر تغييرات متوقعة.
هل يحدّث Test Lab الأجهزة الافتراضية؟
نعم. يتم تعديل الأجهزة الافتراضية عند إجراء التغييرات التالية:
تعديلات على الصور الحالية
إيقاف مستويات واجهة برمجة التطبيقات السابقة نهائيًا
تمت إضافة مستويات جديدة لواجهة برمجة تطبيقات Android.
كيف يمكنني تفعيل تقارير التغطية؟
لتفعيل تقارير التغطية، أضِف coverage=true إلى
حقل environmentVariables.
إذا كنت تستخدم Android Test Orchestrator، يجب توفير دليل
تخزين نتائج التغطية:
أين يمكنني العثور على تفاصيل الجهاز، مثل
الدقة، وواجهات التطبيق الثنائية (ABI) المتوافقة، وما إلى ذلك؟
تتوفّر معلومات تفصيلية حول الجهاز من خلال واجهة برمجة التطبيقات ويمكن الوصول إليها.
من عميل gcloud باستخدام
وصف الأمر:
gcloud firebase test android models describe MODEL
المشكلات المعروفة
اختبارات CAPTCHA لتسجيل الدخول
لا يمكن لاختبار Robo تجاوز شاشات تسجيل الدخول التي تتطلب
إجراء إضافي للمستخدم بخلاف إدخال بيانات الاعتماد لتسجيل الدخول، مثل
إكمال اختبار CAPTCHA.
إتاحة إطار عمل واجهة المستخدم
يعمل اختبار Robo بشكل أفضل مع التطبيقات التي تستخدم عناصر واجهة المستخدم من واجهة مستخدم Android.
إطار العمل (بما في ذلك View وViewGroup وWebView
الأساسية). في حال استخدام اختبار Robo لتطبيقه على التطبيقات التي تستخدم واجهة مستخدم أخرى
بما في ذلك التطبيقات التي تستخدم محرك لعبة Unity، قد يتم الخروج من الاختبار
دون استكشاف ما بعد الشاشة الأولى.