Firebase Test Lab هو خدمة سحابية من Google للاختبار الآلي للتطبيقات المحمولة على أجهزة حقيقية موجودة في مراكز بيانات Google. يتيح Test Lab تشغيل اختبارات الأدوات واختبارات لقطات الشاشة واختبارات الروبوت على مئات تكوينات الأجهزة بإصدارات مختلفة من Android وiOS دون الحاجة إلى صيانة مزرعة أجهزة خاصة بك. وفقًا لـ Firebase Documentation, 2026، اختبار الروبوت من Firebase يمر تلقائيًا عبر جميع شاشات التطبيق، مكتشفًا الأعطال وANR ومشاكل واجهة المستخدم دون كتابة سطر واحد من كود الاختبار. تدعم الخدمة التكامل مع أنظمة CI/CD وتوفر تقارير مفصلة مع فيديوهات وسجلات.
النقاط الرئيسية
Firebase Test Lab هو البنية التحتية السحابية من Google للاختبار الآلي للتطبيقات المحمولة على أجهزة مادية موجودة في مراكز البيانات العالمية من Google. على عكس المحاكيات على الجهاز المحلي، يقوم Test Lab بتشغيل الاختبارات على أجهزة Android حقيقية وأجهزة iOS بإصدارات مختلفة من أنظمة التشغيل ودقات الشاشة وأحجام الذاكرة ومستويات API. تقوم الخدمة بمعالجة نتائج الاختبار تلقائيًا، وتوفر فيديوهات التنفيذ ولقطات شاشة للخطوات وسجلات مفصلة.
تتطلب صيانة مزرعة أجهزة خاصة بك استثمارًا رأسماليًا كبيرًا في شراء وصيانة الأجهزة المادية. Firebase Test Lab يوفر الوصول إلى آلاف الأجهزة بنظام الدفع حسب الاستخدام مع حد مجاني على خطة Spark. يقوم Test Lab بتحديث مجموعة الأجهزة تلقائيًا إلى الطرازات الحالية، بما في ذلك أحدث الأجهزة الرائدة Google Pixel وSamsung Galaxy وXiaomi وiPhone. تُجرى الاختبارات بالتوازي على أجهزة متعددة، مما يقلل من الوقت الإجمالي للتحقق من التطبيق.
لنظام Android، يدعم Test Lab الاختبار على الأجهزة بمستويات API من 21 إلى أحدث إصدار ثابت من Android. دعم iOS يشمل أجهزة iPhone وiPad حقيقية بإصدارات iOS من 15 إلى أحدث إصدار ثابت. اختبار الروبوت وXCTest متاحان لنظام iOS. يمكن تشغيل كل اختبار على أجهزة مادية أو محاكيات — للحصول على أدق النتائج، توصي Google باستخدام الأجهزة المادية لأنها تكشف المشكلات المتعلقة بالمستشعرات والكاميرا وواجهات الشبكة.
Firebase Test Lab يدعم عدة أنواع من الاختبارات، كل منها يحل مهمته الخاصة في دورة التطوير: اختبارات الروبوت للتحقق السريع من الاستقرار، واختبارات الأدوات للتحقق الوظيفي، واختبارات لقطات الشاشة لاكتشاف الانحدارات البصرية. يعتمد اختيار نوع الاختبار على مرحلة التطوير وأهداف التشغيل المحدد.
اختبارات الروبوت هي ميزة فريدة من Firebase Test Lab لا تتطلب كتابة كود اختبار. Firebase Crawler يستكشف التطبيق تلقائيًا: يجد جميع عناصر واجهة المستخدم التفاعلية، وينقر عليها، ويملأ النماذج ببيانات الاختبار، وينتقل بين الشاشات ويسجل أي أعطال (crash، ANR، استثناءات). تكتشف اختبارات الروبوت ما يصل إلى 80% من الأخطاء الحرجة دون سطر واحد من كود الاختبار، مما يجعلها أداة مثالية لتقييم الاستقرار الأساسي للتطبيق في المراحل المبكرة من التطوير.
اختبارات الأدوات هي اختبارات يكتبها المطور باستخدام أطر Espresso (Android) أو XCTest (iOS). يقوم Test Lab بتشغيل APK مع الاختبارات على الجهاز المستهدف ويجمع نتائج التنفيذ. يمكن أن تكون الاختبارات بسيطة (التحقق من عرض العناصر) أو معقدة (سيناريوهات شاملة: تسجيل الدخول، إضافة إلى السلة، إتمام الشراء). يدعم Firebase Test Lab Android Test Orchestrator لعزل الاختبارات عن بعضها البعض، مما يمنع تأثير اختبار فاشل على الآخرين.
تُستخدم اختبارات لقطات الشاشة لاكتشاف الانحدارات البصرية في التطبيق. Game loop هو نوع اختبار خاص يمرر قائمة من السيناريوهات إلى التطبيق عبر intent، ويجب على التطبيق تنفيذ هذه السيناريوهات والتقاط لقطات شاشة للشاشات الرئيسية. يجمع Test Lab لقطات الشاشة من جميع الأجهزة في المصفوفة ويسمح بمقارنتها بالصور المرجعية لاكتشاف الاختلافات. هذا النوع من الاختبارات شائع بشكل خاص في تطبيقات الألعاب للتحقق من العرض على وحدات معالجة رسومات مختلفة.
| نوع الاختبار | الكود | ما يتحقق منه | متى يستخدم |
|---|---|---|---|
| اختبار الروبوت | غير مطلوب | Crash، ANR، استثناءات | تحقق سريع من الاستقرار |
| اختبار الأدوات | Espresso / XCTest | وظائف السيناريوهات | اختبار الانحدار |
| اختبار لقطة الشاشة | Game loop | انحدارات بصرية | التحقق من واجهة المستخدم على أجهزة مختلفة |
مصفوفة الاختبار في Firebase Test Lab هي مجموعة من تكوينات الأجهزة التي يتم تنفيذ الاختبار المحدد عليها. يتضمن كل تكوين طراز الجهاز وإصدار نظام التشغيل واتجاه الشاشة (عمودي/أفقي) والإعدادات الإقليمية (اللغة). يتم تشغيل الاختبار بالتوازي على جميع التكوينات المحددة، مما يقلل بشكل كبير من إجمالي وقت التنفيذ مقارنة بالتشغيل المتسلسل على كل جهاز.
توصي Google بتضمين أجهزة ذات خصائص مختلفة في المصفوفة: طراز رائد (Google Pixel، Samsung Galaxy S)، جهاز اقتصادي (Moto G، Xiaomi Redmi)، جهاز بأحدث إصدار API مدعوم من التطبيق. المصفوفة المثلى تتضمن 5–10 تكوينات تغطي جميع إصدارات نظام التشغيل التي يدعمها التطبيق. لنظام iOS، يتم اختيار طرازات iPhone وiPad من أجيال مختلفة (مثل iPhone SE، iPhone 14، iPad Air) بإصدارات مختلفة من iOS.
يقوم Test Lab بتوزيع الاختبارات تلقائيًا عبر الأجهزة المحددة، وتشغيل كل اختبار على كل تكوين. وقت التنفيذ للمصفوفة بأكملها يساوي وقت تنفيذ أبطأ اختبار على أبطأ جهاز — جميع الاختبارات الأخرى تعمل بالتوازي. إذا فشل اختبار واحد على جميع الأجهزة، يوقف Test Lab تنفيذه على التكوينات المتبقية لتوفير الموارد. يتم تجميع النتائج حسب الاختبار وحسب الجهاز، مما يسمح بالتحديد السريع لما إذا كان الخطأ خاصًا بتكوين معين.
اختبار الروبوت هو ميزة رائدة في Firebase Test Lab تتيح لك استكشاف التطبيق تلقائيًا دون كتابة اختبار واحد. يقوم Firebase Crawler (الروبوت) بتحليل التسلسل الهرمي لواجهة المستخدم للتطبيق، ويجد جميع العناصر التفاعلية (الأزرار، حقول النص، القوائم، القوائم) ويتفاعل معها، محاكيًا سلوك المستخدم الحقيقي. يكون اختبار الروبوت فعالاً بشكل خاص في المراحل المبكرة من التطوير، عندما لم تُكتب الاختبارات بعد، أو للتحقق من الكود القديم.
لتشغيل اختبار الروبوت، ما عليك سوى تحميل APK أو IPA إلى Firebase Console واختيار خيار Robo test. يمكن للروبوت تسجيل الدخول تلقائيًا إلى التطبيق من خلال بيانات اعتماد مكونة مسبقًا (تسجيل الدخول/كلمة المرور) للوصول إلى الشاشات المخفية وراء المصادقة. يمكنك أيضًا تعيين عمق الاستكشاف (max depth) للحد من عدد خطوات الروبوت، أو تحديد عناصر محددة يجب على الروبوت النقر عليها بالأولوية.
<!-- res/xml/robo_directives.xml -->
<!-- سيملأ الروبوت حقلي تسجيل الدخول وكلمة المرور -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
لا تحل اختبارات الروبوت محل الاختبار اليدوي واختبارات الأدوات المكتوبة للسيناريوهات المعقدة. الروبوت لا يستطيع التحقق من منطق الأعمال: فهو ينقر على جميع العناصر بالتسلسل، لكنه لا يعرف ما إذا كانت النتيجة صحيحة. أيضًا، لا يمكن للروبوت التفاعل مع طرق العرض المخصصة التي لا ترث من ViewGroup القياسي، ولا يتعامل مع WebView. لهذه الحالات، يجب استخدام اختبارات الأدوات أو Game loop.
تكامل Firebase Test Lab مع أنظمة CI/CD يسمح بتشغيل الاختبارات تلقائيًا مع كل push إلى المستودع. يدعم Test Lab مهام Gradle لنظام Android وFastlane لكلتا المنصتين. يشمل إعداد خط أنابيب CI/CD بناء التطبيق، تحميل APK/IPA إلى Google Cloud Storage، تشغيل الاختبارات عبر Firebase CLI واستلام التقارير مرة أخرى إلى نظام CI لعرض حالة البناء.
توفر Google المكون الإضافي gcloud-test-lab لـ Gradle، الذي يؤتمت تحميل وتنفيذ الاختبارات. مهمة assembleAndroidTest تبني APK مع الاختبارات، ومهام gcloud تحمله إلى Test Lab وتشغل المصفوفة. يتم إرجاع نتائج الاختبار إلى Gradle كـ pass/fail، مما يسمح بتكامل Test Lab مع أي خط أنابيب CI يدعم Gradle. يتم استخدام حساب خدمة Firebase بصلاحيات Test Lab للمصادقة.
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
يوفر Fastlane المكون الإضافي firebase_test_lab للتكامل مع اختبارات iOS وAndroid. lane Fastlane يقوم بالبناء، ويشغل الاختبارات ويعالج النتائج. لـ XCTest على iOS، يتطلب Test Lab ملف xctestrun، الذي يتم إنشاؤه تلقائيًا عند بناء هدف الاختبار. يمكن لـ Fastlane أيضًا تحميل نتائج الاختبار إلى Slack أو تطبيقات المراسلة الأخرى لإخطار الفريق بحالة الاختبار بعد كل تشغيل.
بعد اكتمال الاختبارات، يوفر Firebase Test Lab تقريرًا شاملاً متاحًا في Firebase Console وعبر gcloud CLI. يتضمن التقرير ملخصًا موجزًا (عدد الاختبارات الناجحة والفاشلة والتي تم تخطيها)، ومعلومات مفصلة عن كل اختبار على كل جهاز، وفيديوهات التنفيذ، ولقطات شاشة للخطوات الرئيسية وسجلات الجهاز (logcat لنظام Android، سجل النظام لـ iOS). للاختبارات الفاشلة، يتوفر stack trace مع موقع الخطأ الدقيق.
بالنسبة لاختبار الروبوت، يختلف التقرير عن تقرير اختبار الأدوات: بدلاً من pass/fail لكل حالة اختبار، يُظهر التقرير إحصائيات الاستكشاف. المقاييس الرئيسية — عدد الشاشات التي تم العثور عليها وزيارتها، وعدد تفاعلات الروبوت (النقرات، التمرير، إدخال النص)، والأعطال وANR المكتشفة، والمسار الذي تم اجتيازه عبر التطبيق. يتيح فيديو تنفيذ الروبوت تقييمًا بصريًا للشاشات التي تم اختبارها والتي بقيت غير مغطاة.
يتم تخزين نتائج الاختبار في Google Cloud Storage في الحاوية المرتبطة بالمشروع. البيانات متاحة للتصدير والتكامل مع أنظمة التحليل الخارجية. للتخزين طويل الأمد ومقارنة النتائج بين عمليات التشغيل، يُوصى بإعداد تصدير BigQuery أو استخدام واجهة برمجة تطبيقات Firebase Test Lab للحصول على النتائج برمجيًا. توفر Google إمكانية تنزيل أرشيف ZIP مع المجموعة الكاملة من النتائج لكل تشغيل اختبار.
الأسئلة الشائعة
خطة Spark تتضمن 10 اختبارات Robo يوميًا و5 ساعات من اختبارات الأدوات شهريًا مجانًا. خطة Blaze تُفوتر حسب الوقت: ~1 دولار أمريكي لكل ساعة جهاز لاختبارات Robo و~5 دولارات أمريكية لاختبارات الأدوات. تعتمد التكلفة الدقيقة على المنطقة ونوع الجهاز.
الأجهزة المادية تعطي نتائج أكثر دقة، بما في ذلك مشكلات المستشعرات والكاميرا ونظام تحديد المواقع والبلوتوث والأداء الحقيقي. المحاكيات تبدأ بشكل أسرع وأرخص، لكنها لا تكشف المشكلات المتعلقة بميزات الأجهزة. توصي Google باستخدام الأجهزة المادية للاختبارات قبل الإصدار.
أنشئ ملف XML robo_directives.xml بحقول إدخال (تسجيل الدخول، كلمة المرور) وأزرار للنقر. قم بتحميل الملف مع APK عند بدء الاختبار عبر Firebase Console أو CLI. سيقوم الروبوت بتنفيذ الإجراءات المحددة قبل بدء الاستكشاف.
نعم، يدعم Firebase Test Lab iOS منذ عام 2024. اختبارات Robo (الاستكشاف التلقائي) وXCTest (اختبارات الأدوات) متاحة على أجهزة iPhone وiPad الحقيقية. مطلوب ملف IPA مع هدف اختبار للتحميل.
استخدم Firebase CLI في GitHub Actions: قم بإعداد المصادقة عبر Service Account JSON، وقم بتثبيت gcloud SDK، وقم بتنفيذ الأمر firebase test android run مع APK والتكوينات. نتائج الاختبار متاحة عبر Firebase Console أو gcloud CLI.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا