Check out what’s new from Firebase at Google I/O 2022. Learn more

ابدأ باختبارات الأجهزة

يصف هذا الدليل كيفية تحضير اختبار الأجهزة وتشغيله باستخدام Firebase Test Lab. لاستخدام هذا الدليل ، ستحتاج إلى اختبار للأجهزة (مكتوب بواسطتك أو بواسطة فريقك) يستخدم أطر عمل اختبار Espresso أو UI Automator Android. يمكن أن تستغرق اختبارات الأجهزة ما يصل إلى 45 دقيقة على الأجهزة المادية وما يصل إلى 60 دقيقة على الأجهزة الافتراضية .

في الخطوات اللاحقة ، ستقوم بتحميل APK لتطبيقك و APK اختبارك إلى Firebase.

(اختياري) أضف مكتبة لقطات الشاشة إلى تطبيقك

يتضمن Firebase Test Lab مكتبة (testlab-instr-lib) يمكنك استخدامها لمعالجة أي لقطات شاشة تلتقطها باستخدام ScreenCapture في AndroidX عند إجراء اختبارات الأجهزة ، مثل الاختبارات المكتوبة باستخدام إطار عمل اختبار Espresso . يصف هذا القسم كيفية إنشاء كائنات ScreenCapture بمكتبة AndroidX وكيفية معالجتها باستخدام testlab-instr-lib.

بعد تشغيل اختبار الأجهزة ، يمكنك عرض لقطات الشاشة الملتقطة في وحدة تحكم Firebase.

جرب تطبيقًا نموذجيًا

قم بتنزيل تطبيق نموذج NotePad لتجربة هذه الوظيفة. تم دمج القدرة على التقاط لقطات شاشة بالفعل في مشروع NotePad.

الخطوة 1. أضف مكتبة لقطات الشاشة إلى مشروعك

  1. في ملف Gradle الخاص بالمشروع الاختباري (على مستوى المشروع) ( build.gradle ) ، أضف مستودع Google Maven إلى كل قسم من أقسام المستودعات:

    buildscript {
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
      }
    
      dependencies {
        // ...
    
        // Check that you have the following line (if not, add it):
        classpath 'com.google.gms:google-services:4.3.8'  // Google Services plugin
      }
    }
    
    allprojects {
      // ...
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
        // ...
      }
    }
  2. في ملف Gradle (على مستوى التطبيق) الوحدة النمطية الخاصة بك (عادةً app/build.gradle ) ، أضف تبعية لمكتبة لقطة شاشة Test Lab.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation 'com.google.firebase:testlab-instr-lib:0.2'
      // ...
    }
  3. في ملف AndroidManifest.xml الخاص باختبارك ، قم بتسجيل FirebaseScreenCaptureProcessor في علامة البيانات الوصفية داخل عنصر <instrumentation> . يمكنك أيضًا تحديد المعالج كوسيطة في AndroidJUnitRunner بدلاً من ذلك (انظر الوثائق المرجعية AndroidJUnitRunner للحصول على إرشادات حول كيفية القيام بذلك).

    <instrumentation
      // Check that you have the following line (if not, add it):
      android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner
      android:targetPackage="com.your.package.name">
    
    // Add the following:
    <meta-data
      android:name="screenCaptureProcessors"
      android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" />
    </instrumentation>
    ...
    
  4. في ملف AndroidManifest.xml لتطبيقك ، أضف الأسطر التالية داخل عنصر <manifest> :

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. في ملف AndroidManifest.xml الخاص بك ، حدد أذونات النظام لتطبيقك عن طريق إضافة الأسطر التالية داخل علامة <manifest> . إذا كنت تختبر على Android 10 (مستوى API 29) أو أعلى ، فقم بحذف إذن WRITE_EXTERNAL_STORAGE (لا يتطلب تطبيقك هذا الإذن لقراءة لقطات الشاشة وكتابتها على الجهاز).

    <manifest ... >
        <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        ...
    </manifest>

الخطوة 2. خذ لقطات شاشة أثناء الاختبار

في أي مرحلة من الاختبار حيث تريد التقاط لقطة شاشة ، اتصل بطريقة Screenshot.capture() من مكتبة AndroidX. ينتج عن هذا كائن ScreenCapture . عند استدعاء process() على كائن ScreenCapture ، تتم معالجته باستخدام ScreenCaptureProcessor المسجل في AndroidManifest.xml . لاحظ أنه يتم استخدام BasicScreenCaptureProcessor إذا لم يتم تسجيل أي معالجات. نظرًا لأنك سجلت FirebaseScreenCaptureProcessor ، ستتم معالجة لقطات الشاشة الخاصة بك عبر FirebaseScreenCaptureProcessor وستكون متاحة لك مع نتائجك عند تشغيل اختبارك باستخدام Firebase Test Lab.

أمثلة على حالات الاستخدام لإنشاء ScreenCapture :

  • خذ لقطة شاشة كاملة على إصدار API.VERSION_CODES.JELLY_BEAN_MR2 وما فوق:

    Screenshot.capture()
    
  • خذ لقطة شاشة ScreenCapture على أي مستوى من مستويات واجهة برمجة التطبيقات. لاحظ أن هذا هو الخيار الوحيد للأجهزة التي تقل عن الإصدار Build.VERSION_CODES.JELLY_BEAN_MR2.

    @Rule
      public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
    ...
    Screenshot.capture(activityRule.getActivity());
    ...
    

أمثلة على حالات الاستخدام لمعالجة لقطة الشاشة

  • معالجة ScreenCapture عبر FirebaseScreenCaptureProcessor :

    Screenshot.capture().process();
    
  • قم ScreenCapture عبر معالج ScreenCaptureProcessor المحدد (يسمح لك هذا بتخطي تسجيل المعالج):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • قم بتعيين اسم وتنسيق ScreenCapture ومعالجته باستخدام المعالج المسجل:

    Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
    

الخطوة 3. قم ببناء الاختبار وتشغيله

  1. أنشئ تطبيقك واختبر ملفات APK (راجع اختبار التطبيق للحصول على الإرشادات).

  2. قم بتحميل ملفات APK إلى لوحة معلومات Test Lab بوحدة تحكم Firebase.

  3. أخيرًا ، قم بإجراء الاختبار الخاص بك.

الخطوة 4. اعرض لقطات الشاشة الاختبارية

بعد اكتمال الاختبار ، يمكنك عرض أي لقطات شاشة تم التقاطها في وحدة تحكم Firebase.

  1. في علامة التبويب الاختبارات ، حدد الاختبار المكتمل ، ثم انقر فوق علامة التبويب النتائج .

  2. حدد الاختبار مرة أخرى ، ثم انقر فوق علامة التبويب لقطات الشاشة التي تظهر.

(اختياري) قم بتمكين ميزات الاختبار الإضافية

يمكنك تمكين الميزات التالية في اختبارك قبل تشغيله باستخدام Test Lab:

تمكين Orchestrator

Android Test Orchestrator هي أداة تدير كل اختبار من اختبارات الأجهزة في تطبيقك بشكل مستقل. يستخدم Test Lab دائمًا أحدث إصدار من Orchestrator.

لتمكين Orchestrator لـ Test Lab ، في إعداد اختبار الأجهزة ، انقر فوق خيارات إضافية > Run with Orchestrator .

مزايا وعيوب

  • المنفعة: لا دولة مشتركة. يتم تشغيل كل اختبار في مثيله الخاص بالأجهزة بحيث لا تتراكم الحالة المشتركة عبر الاختبارات.
  • الفائدة: حوادث متفرقة. في حالة تعطل أحد الاختبارات ، يتم إنهاء هذه الأجهزة فقط ولا يزال من الممكن تشغيل الاختبارات الأخرى في مجموعتك.
  • العيب: أوقات تشغيل أطول . يدير كل اختبار مثيله الخاص بالأجهزة ، مما يعني أن عملية الاختبار تستغرق وقتًا أطول قليلاً بشكل عام. إذا لم يتم تحديده ، فمن المحتمل أن تؤثر أوقات التشغيل المتزايدة على استخدام حصتك أو وقت الفوترة وقد يؤدي إلى تجاوز حدود مهلة أجهزتك.

تمكين التجزئة

تجزئة الاختبار يقسم مجموعة من الاختبارات إلى مجموعات فرعية (أجزاء) يتم تشغيلها بشكل منفصل. يقوم Test Lab تلقائيًا بتشغيل كل جزء بالتوازي باستخدام أجهزة متعددة ويكمل مجموعة الاختبارات بأكملها في وقت أقل.

كيف يعمل اختبار التجزئة

لنفترض أنك أنشأت N أجزاء. لكل جهاز تحدده ، يقوم Test Lab بتدوير N من الأجهزة المماثلة وتشغيل مجموعة فرعية من الاختبارات على كل جهاز. هذا يعني أن حالات الاختبار المجزأة يمكن أن تؤدي إلى عمليات تنفيذ اختبار متعددة لكل جهاز ، على عكس حالات الاختبار غير المجزأة ، والتي تؤدي دائمًا إلى تنفيذ اختبار واحد لكل جهاز (للحصول على نظرة عامة سريعة على المفاهيم الأساسية في Test Lab ، راجع المفاهيم الأساسية ).

يمكنك تمكين تجزئة التجزئة في وحدة تحكم Firebase:

  1. في إعداد اختبار الأجهزة ، انقر فوق خيارات إضافية .

  2. في قسم "المشاركة" ، أدخل عدد الأجزاء التي تريد تشغيلها.

إعداد الفواتير لاختبار القطع

ينفذ Test Lab شظاياك من خلال الاستفادة من آلية التجزئة المضمنة في AndroidJUnitRunner. لتجنب فرض رسوم على تدوير الأجزاء الفارغة (الأجزاء بدون حالات اختبار مخصصة) ، يجب أن يكون عدد الأجزاء التي تقوم بإنشائها أقل من إجمالي عدد حالات الاختبار. اعتمادًا على المدة التي تستغرقها كل حالة اختبار للتشغيل ، من الجيد عادةً تعيين 2-10 حالات اختبار لكل جزء.

لمزيد من المعلومات حول الفوترة ، اقرأ الاستخدام والحصص والفواتير .