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

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

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

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

يشتمل مركز الاختبار الافتراضي لمنصة Firebase على مكتبة (testlab-instr-lib) والتي يمكنك استخدامها لمعالجة أي لقطات شاشة تلتقطها باستخدام AndroidX التقاط الشاشة عند إجراء اختبارات قياس حالة التطبيق، مثل الاختبارات المكتوبة باستخدام إطار عمل اختبار قهوة الإسبريسو يصف هذا القسم كيفية إنشاء عناصر 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.

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

  • التقط لقطة شاشة كاملة في إصدار واجهة برمجة التطبيقات.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. اختَر الاختبار مرة أخرى، ثم انقر على علامة التبويب لقطات الشاشة التي تظهر.

(اختياري) تفعيل ميزات الاختبار الإضافية

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

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

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

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

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

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

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

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

--environment-variables clearPackageData=true

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

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

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

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

  1. في إعداد اختبار قياس حالة التطبيق انقر على خيارات إضافية.

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

طريقة الفوترة للأجزاء التجريبية

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

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