تحديد المشاكل وحلّها في مركز الاختبار الافتراضي والأسئلة الشائعة
تقدّم هذه الصفحة مساعدة في تحديد المشاكل وحلّها وإجابات عن الأسئلة الشائعة حول إجراء الاختبارات باستخدام مركز الاختبار الافتراضي لمنصة Firebase. كما يتم توثيق
المشكلات المعروفة. إذا لم تتمكن من العثور على ما
تبحث عنه أو كنت بحاجة إلى مساعدة إضافية، يمكنك الانضمام إلى #test-lab
channel على Firebase Slack أو التواصل مع فريق دعم
Firebase.
تحديد المشاكل وحلّها
لماذا يستغرق تنفيذ الاختبار وقتًا طويلاً؟
عند اختيار جهاز عالي السعة في كتالوج مركز الاختبار الافتراضي، قد تبدأ الاختبارات بشكل أسرع. عندما يكون الجهاز منخفضًا، قد يستغرق إجراء الاختبارات وقتًا أطول. إذا كان عدد الاختبارات التي تم استدعاؤها أكبر بكثير من سعة الأجهزة المحددة، يمكن أن يستغرق إنهاء الاختبارات وقتًا أطول.
قد تستغرق الاختبارات التي يتم إجراؤها على أي مستوى من مستويات سعة الجهاز وقتًا أطول بسبب
العوامل التالية:
عدد الزيارات، ما يؤثّر في مدى توفّر الجهاز وسرعة الاختبار
أعطال في الأجهزة أو البنية الأساسية، قد تحدث في أي وقت لمعرفة ما إذا كانت هناك بنية أساسية تم الإبلاغ عنها لاستخدامها في Test Lab، يمكنك الاطّلاع على لوحة البيانات الخاصة بحالة Firebase.
لمزيد من المعلومات حول سعة الأجهزة في Test Lab، يمكنك الاطّلاع على معلومات سعة الأجهزة في نظامَي التشغيل Android وiOS.
لماذا أتلقى نتائج اختبار غير حاسمة؟
عادةً ما تحدث نتائج الاختبار غير الحاسمة إما بسبب عمليات الاختبار الملغاة أو أخطاء البنية الأساسية.
تحدث أخطاء البنية الأساسية بسبب مشاكل داخلية في مركز الاختبار الافتراضي، مثل أخطاء الشبكة أو السلوكيات غير المتوقعة للأجهزة. بعد أن يوقف مركز الاختبار الافتراضي عمليات الاختبار التي تؤدي إلى حدوث أخطاء في البنية الأساسية عدة مرات قبل الإبلاغ عن نتيجة غير حاسمة، يمكنك إيقاف عمليات إعادة المحاولة هذه باستخدام الدالة
failFast.
أعِد المحاولة في مركز الاختبار الافتراضي للتأكّد من أنّه قابل للتكرار.
حاوِل إجراء الاختبار على جهاز أو نوع جهاز مختلف، إذا كان ذلك منطبقًا.
في حال استمرار المشكلة، يمكنك التواصل مع فريق Test Lab في
قناة#test-lab على
Firebase Slack.
لماذا جعلت عملية التقسيم اختباراتي
أطول؟
ويمكن أن يؤدي التقسيم إلى أجزاء إلى إجراء اختباراتك لفترة أطول عندما يتجاوز عدد الأجزاء التي حدّدتها عدد الأجهزة المتاحة للاستخدام في Test Lab. لتجنب هذا الموقف،
حاول التبديل إلى جهاز مختلف. لمزيد من المعلومات
حول اختيار جهاز مختلف، يُرجى الاطّلاع على
سعة الجهاز.
لماذا يستغرق بدء
اختباري وقتًا طويلاً؟
عند إرسال طلب اختبار، يتم أولاً التحقّق من صحة تطبيقك وإعادة توقيعه وما إلى ذلك استعدادًا لإجراء الاختبارات على أحد الأجهزة. عادةً ما تكتمل هذه العملية في أقل من بضع ثوانٍ، ولكنها يمكن أن تتأثر بعوامل مثل حجم تطبيقك.
بعد الانتهاء من إعداد التطبيق، تتم جدولة عمليات تنفيذ الاختبارات وتظل في قائمة انتظار
إلى أن يصبح الجهاز جاهزًا لتشغيله. إلى أن تنتهي جميع عمليات التنفيذ الاختبارية، ستكون حالة المصفوفة "في انتظار المراجعة" (بغض النظر عمّا إذا كانت عمليات تنفيذ الاختبار في قائمة الانتظار أو قيد التشغيل بشكل نشط).
لماذا يستغرق إنهاء
اختباري وقتًا طويلاً؟
بعد انتهاء تنفيذ الاختبار، يتم تنزيل عناصر الاختبار من الجهاز ومعالجتها وتحميلها إلى Cloud Storage. يمكن أن تتأثر مدة هذه الخطوة
بحجم الأدوات وحجمها.
التطبيق لا يعرض البيانات ولا يمكنه تحديد مكان لقطات الشاشة
يتم تخزين عناصر التنفيذ التجريبية (مثل لقطات الشاشة وملفات السجلّ) في
Google Cloud Storage ويتم عرضها مباشرةً في وحدة تحكُّم Firebase. إذا تم تنفيذ الاختبار خلال آخر 90 يومًا، تحقّق من أنّك قد عينت أدوارًا على مستوى المشروع (مالك المشروع أو محرر المشروع أو مُشاهد المشروع).
يُرجى أيضًا التأكّد من عدم تفعيل Cloud Inspect Logging
لمشروعك أو مؤسستك.
إذا تم تنفيذ عملية التنفيذ قبل أكثر من 90 يومًا، من المرجّح أنّه تم حذف عناصر الاختبار تلقائيًا. يمكنك التحقّق من إعدادات حزمة النتائج بالنقر على علامة التبويب نتائج الاختبار في لوحة بيانات Test Lab. يتم تكوين حزمة النتائج التلقائية
للاحتفاظ بالكائنات لمدة 90 يومًا.
للاحتفاظ بعناصر الاختبار لفترة أطول، شغِّل الأمر
gcloud firebase test android run مع العلامة --results-bucket وأدخِل
اسم حزمة النتائج. لمزيد من المعلومات، يُرجى الانتقال إلى
مستندات gcloud firebase test android run المرجعية.
لماذا أحصل على نتائج جزئية أو غير متوفّرة لاختبارات الأدوات؟
عند إجراء اختبارات قياس حالة التطبيق، قد تظهر لك أخطاء في الاختبار تشير إلى نتائج جزئية تحتوي على رسائل مثل 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 حصصًا بدون تكلفة للاختبار على الأجهزة واستخدام
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 Console (يُرجى العلم أنّ معظم الحدود مضبوطة على الحد الأقصى بشكل تلقائي)، أو
يمكنك طلب حصص أعلى من واجهة برمجة التطبيقات من خلال ملء نموذج طلب في
Google Cloud Console أو من خلال التواصل مع
فريق دعم Firebase.
كيف أعرف ما إذا كانت الزيارات التي تصل إلى خادمي الخلفية واردة من Test Lab؟
من الخلفية، يمكنك تحديد ما إذا كانت الزيارات واردة من أجهزة اختبار مستضافة على Firebase
من خلال التحقق من عنوان IP المصدر مقابل
نطاقات IP التابعة لنا.
هل يعمل Test Lab مع
VPC-SC؟
لا يعمل مركز الاختبار الافتراضي مع VPC-SC الذي يحظر
نسخ التطبيقات وعناصر الاختبار الأخرى بين مساحة التخزين الداخلية في Test Lab وحزم نتائج المستخدمين.
كيف يمكنني اكتشاف الاختبارات غير المستقرة في مركز الاختبار الافتراضي؟
لرصد السلوك غير المستقر في اختباراتك، ننصحك باستخدام الخيار
--num-flaky-test-attempts
. يتم احتساب عمليات إعادة تشغيل Deflake أو احتسابها ضمن حصتك اليومية تمامًا كما يتم احتساب عمليات التنفيذ التجريبية العادية.
يرجى الإحاطة علمًا بالتالي:
تتم إعادة تنفيذ الاختبار بأكمله مرة أخرى عند رصد تعذُّر. ولا يتوفر أي دعم لإعادة محاولة استخدام حالات الاختبار التي لم تنجح فقط.
تتم جدولة عمليات إعادة المحاولة من خلال رصد الأخطاء الإملائية في الوقت نفسه، ولكن لا يتم ضمان تشغيلها بالتوازي، مثلاً عندما يتجاوز عدد الزيارات عدد الأجهزة المتاحة.
هل يتوافق 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، يُرجى الاطّلاع على مقالة الاختبار على
الأجهزة المتاحة.
كيف يمكنني اكتشاف اختبار جارٍ
في مركز الاختبار الافتراضي؟
إذا كنت تختبر تطبيقك في Firebase أو تُجري اختبارات لإعداد
تقرير إطلاق تجريبي
في Play Console، يمكنك معرفة ما إذا كان يتم إجراء اختبار
على جهاز مستضاف في Firebase من خلال البحث عن خاصية النظام
firebase.test.lab في ملف MainActivity. ويمكنك بعد ذلك تنفيذ عبارات إضافية استنادًا إلى القيمة المنطقية للسمة testLabSetting. لمزيد من المعلومات، يُرجى الاطّلاع على سلوكيات الاختبار المعدَّلة.
هل يتيح برنامج Test Lab
استخدام Appium أو Flutter/FlutterDriver أو ReactNative/Jest أو الخيار؟
على الرغم من أن بعض هذه العناصر ضمن خارطة الطريق لدينا، فإننا لا نستطيع حاليًا الالتزام
بدعم هذه المنصات للاختبارات وتطوير التطبيقات. ومع ذلك، إذا صمّمت تطبيقك باستخدام إطار عمل يتوافق مع Espresso (مثل Flutter)، يمكنك كتابة اختبار قياس أداء باستخدام Espresso، ثم إجراء الاختبار في مركز الاختبار الافتراضي.
هل يتيح 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) لإجراء هذه الأنواع من الاختبارات. تستخدم أجهزة محاكاة مجموعة التحكم صورًا
مماثلة جدًا أو مماثلة للمحاكيات "العامة" في "استوديو Android".
وننصحك أيضًا بالاستعانة بمكتبات الاختبار التي يمكن أن تساعد في جعل
اختبارات لقطات الشاشة أكثر فعالية في حال توفُّر تغييرات متوقعة.
هل يحدّث Test Lab الأجهزة الافتراضية؟
نعم. يتم تعديل الأجهزة الافتراضية عند إجراء التغييرات التالية:
تعديلات على الصور الحالية
إيقاف مستويات واجهة برمجة التطبيقات السابقة نهائيًا
تمت إضافة مستويات جديدة لواجهة برمجة تطبيقات Android.
كيف يمكنني تفعيل تقارير التغطية؟
لتفعيل تقارير التغطية، أضِف coverage=true إلى
الحقل environmentVariables.
إذا كنت تستخدم Android Test Orchestrator، ستحتاج إلى توفير دليل لتخزين نتائج التغطية:
أين يمكنني العثور على تفاصيل الجهاز، مثل درجة الدقة
وواجهات التطبيق الثنائية (ABI) المتوافقة وما إلى ذلك؟
تتوفر معلومات مفصَّلة حول الجهاز من خلال واجهة برمجة التطبيقات ويمكن الوصول إليها
من عميل gcloud باستخدام
الأمر "describe":
gcloud firebase test android models describe MODEL
المشكلات المعروفة
اختبارات CAPTCHA لتسجيل الدخول
لا يمكن لاختبار Robo تجاوز شاشات تسجيل الدخول التي تتطلب إجراءً إضافيًا من المستخدم غير إدخال بيانات الاعتماد لتسجيل الدخول، مثل إكمال اختبار CAPTCHA.
إتاحة إطار عمل واجهة المستخدم
يعمل اختبار Robo بشكل أفضل مع التطبيقات التي تستخدم عناصر واجهة المستخدم من إطار عمل واجهة المستخدم على Android (بما في ذلك كائنات View وViewGroup وWebView). إذا كنت تستخدم اختبار Robo للتمارين في تطبيقات تستخدم أطرًا أخرى لواجهة المستخدم،
بما في ذلك التطبيقات التي تستخدم محرّك ألعاب Unity، قد ينتهي الاختبار
بدون استكشاف ما بعد الشاشة الأولى.