بدء استخدام اختبارات قياس حالة التطبيق

يوضّح هذا الدليل كيفية إعداد اختبار أداة قياس الأداء وتنفيذه باستخدام Firebase Test Lab. لاستخدام هذا الدليل، ستحتاج إلى اختبار قياس حالة التطبيق (التي تكتبها أنت أو فريقك) والتي تستخدم إسبريسو أو أداة 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 لإعدادات مستوى الجذر لمشروعك التجريبي (settings.gradle.kts أو settings.gradle)، أضِف مستودع Maven من Google. إلى كل قسم repositories:

    pluginManagement {
        repositories {
            // Add the following line:
            google() // Google's Maven repository
            mavenCentral()
            gradlePluginPortal()
        }
    }
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            // Add the following line:
            google() // Google's Maven repository
            mavenCentral()
        }
    }
    // ...
    
  2. في ملف Gradle الخاص بالوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/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 (المستوى 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، تتم معالجته. باستخدام معالج لقطات الشاشة المسجَّل في AndroidManifest.xml يُرجى العلم أنّه يتم استخدام BasicScreenCaptureProcessor إذا لم يتم تسجيل أي معالجات. بما أنّك سجّلت FirebaseScreenCaptureProcessor، سيتم حفظ لقطات الشاشة الخاصة بك تتم معالجتها عبر FirebaseScreenCaptureProcessor وستكون متاحة. لك مع نتائجك عند إجراء الاختبار باستخدام "Firebase Test Lab".

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

  • التقاط لقطة شاشة كاملة على إصدار واجهة برمجة التطبيقات Build.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:

تفعيل الأوركسترا

منسّق الاختبارات من Android هي أداة تشغّل كل اختبار من اختبارات أدوات تطبيقك على حدة. يستخدم Test Lab دائمًا أحدث إصدار من Orchestrator.

لتفعيل Orchestrator لـ Test Lab، في اختبار الأدوات عملية الإعداد انقر على خيارات إضافية >. التشغيل مع Orchestrator:

عند استخدام Orchestrator، يمكنك الاستفادة مما يلي:

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

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

لتعيين خيارات إضافية لـ Orchestrator، حددها عبر حقل environmentVariables. على سبيل المثال، لاستخدام clearPackageData، استخدِم هذا الخيار في gcloud:

--environment-variables clearPackageData=true

تفعيل عملية التقسيم إلى أجزاء

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

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

لتفعيل تقسيم الاختبار في وحدة تحكّم Firebase، اتّبِع الخطوات التالية:

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

  2. في القسم التقسيم، أدخِل عدد الأجزاء التي تريد تنفيذها.

الفوترة للشظايا الاختبارية

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

للحصول على مزيد من المعلومات حول الفوترة، يُرجى الاطّلاع على الاستخدام والحصص والفوترة.