استكشاف الأخطاء وإصلاحها في Test Lab & الأسئلة الشائعة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تقدّم هذه الصفحة مساعدة في تحديد المشاكل وحلّها وإجابات عن الأسئلة الشائعة
حول إجراء الاختبارات باستخدام Firebase Test Lab. ويتم أيضًا تسجيل المشاكل المعروفة. إذا لم تتمكّن من العثور على ما
تبحث عنه أو كنت بحاجة إلى مساعدة إضافية، يمكنك الانضمام إلى قناة #test-lab
على
Slack في Firebase أو التواصل مع فريق دعم
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" غير مفعّلة لمشروعك
أو لمؤسستك.
إذا تم تنفيذ الإجراء قبل أكثر من 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 Test Lab تقدّم حصصًا بدون تكلفة للاختبار على الأجهزة ولاستخدام
واجهات برمجة تطبيقات Cloud. يُرجى العلم أنّ حصة الاختبار تستخدم خطة أسعار Firebase العادية،
بينما لا تستخدم حصص Cloud API.
الحصة الاختبارية
يتم تحديد حصص الاختبار حسب عدد الأجهزة المستخدَمة لإجراء الاختبارات.
تتضمّن خطة Firebase Spark حصة ثابتة للاختبار بدون أي تكلفة للمستخدمين. بالنسبة إلى
خطة 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 (بين مفتوحة بالكامل ومغلقة بالكامل).
أمّا الوضعيات، فهي تتألف من اتجاه جهاز معيّن وحالة folded
(قابلة للطي). على سبيل المثال، وضع "التثبيت على سطح مستوٍ"، وهو حالة HALF_OPENED في الاتجاه الأفقي، أو وضعية الكتاب، أي HALF_OPENED في الاتجاه العمودي.
على عكس منتجات Firebase الأخرى، لا تحتاج إلى إضافة Test Lab
SDK لاستخدام Test Lab. إذا لم يكن لديك تطبيق، يمكنك
تنزيل حزمة APK على الإنترنت أو إنشاء تطبيق وحزمة APK اختبارية من أحد
عيّنات مستودع AndroidX على GitHub.
تجدر الإشارة إلى أنّك تحتاج فقط إلى
ملف APK الخاص بالتطبيق لإجراء اختبار Robo، في حين يتطلب اختبار الأدوات كلاً من
التطبيق وحزمة APK الاختبارية التي تم إنشاؤها من رمز المصدر. لمزيد من المعلومات، يُرجى الاطّلاع على الاختبارات الآلية.
اختبار اختلاف لقطات الشاشة هو الاختبار الذي تستند فيه تأكيدات الاختبار إلى مقارنة لقطات الشاشة التي تم الحصول عليها أثناء إجراء الاختبار بالصور الذهبية التي تمثّل السلوك المتوقع. قد تكون هذه الاختبارات أكثر حساسية على بعض أنواع الأجهزة مقارنةً بأنواع أخرى. ننصحك باستهداف أجهزة محاكي
Arm (*.arm) لإجراء هذه الأنواع من الاختبارات. تستخدم أجهزة محاكاة الذراع صورًا
مماثلة جدًا أو مماثلة للمحاكيات "العامة" في "استوديو Android".
ننصحك أيضًا بالاطّلاع على مكتبات الاختبار التي يمكن أن تساعد في جعل اختبارات لقطات الشاشة أكثر فعّالية في حال حدوث تغييرات متوقّعة.
هل يعدّل Test Lab الأجهزة الافتراضية؟
نعم. يتم تعديل الأجهزة الافتراضية عند إجراء التغييرات التالية:
تعديلات على الصور الحالية
إيقاف مستويات واجهة برمجة التطبيقات السابقة
تمت إضافة مستويات جديدة لواجهة برمجة تطبيقات Android
كيف يمكنني تفعيل تقارير التغطية؟
لتفعيل تقارير التغطية، أضِف coverage=true إلى
حقل environmentVariables.
إذا كنت تستخدم أداة "تنسيق اختبارات Android"، عليك تقديم دليل لتخزين نتائج التغطية:
أين يمكنني العثور على تفاصيل الجهاز، مثل درجة الدقة
وواجهات التطبيق الثنائية (ABI) المتوافقة وما إلى ذلك؟
تتوفّر معلومات تفصيلية عن الأجهزة من خلال واجهة برمجة التطبيقات، ويمكن الوصول إليها
من خلال عميل gcloud باستخدام
الأمر describe:
gcloud firebase test android models describe MODEL
المشكلات المعروفة
اختبارات CAPTCHA لتسجيل الدخول
لا يمكن لاختبار Robo تخطّي شاشات تسجيل الدخول التي تتطلّب
إجراءً إضافيًا من المستخدم بخلاف إدخال بيانات الاعتماد لتسجيل الدخول، على سبيل المثال،
إكمال اختبار CAPTCHA.
توافق إطار عمل واجهة المستخدم
يعمل اختبار Robo بشكل أفضل مع التطبيقات التي تستخدم عناصر واجهة المستخدم من إطار عمل واجهة المستخدم في Android (بما في ذلك كائنات View وViewGroup وWebView). إذا كنت تستخدِم اختبار Robo لتشغيل التطبيقات التي تستخدِم إطارات عمل أخرى لواجهة المستخدم، بما في ذلك التطبيقات التي تستخدِم محرّك ألعاب Unity، قد ينتهي الاختبار بدون استكشاف ما بعد الشاشة الأولى.
تاريخ التعديل الأخير: 2024-11-18 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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"]],["تاريخ التعديل الأخير: 2024-11-18 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]