شروع به کار با آزمایش‌های ابزار دقیق

این راهنما نحوه آماده‌سازی و اجرای آزمایش ابزار دقیق بااستفاده از Firebase Test Lab را شرح می‌دهد. برای استفاده از این راهنما، به آزمایش ابزار دقیق (نوشته‌شده توسط شما یا تیمتان) نیاز دارید که از Espresso یا UI Automator چارچوب‌های آزمایش Android استفاده می‌کند. آزمایش‌های ابزار دقیق می‌توانند تا ۴۵ دقیقه در دستگاه‌های فیزیکی و تا ۶۰ دقیقه در دستگاه‌های مجازی اجرا شوند.

در مراحل بعدی، فایل APK برنامه و فایل APK آزمایشتان را در Firebase بارگذاری خواهید کرد.

(اختیاری) افزودن کتابخانه نماگرفت به برنامه

Firebase Test Lab شامل کتابخانه‌ای (testlab-instr-lib) است که می‌توانید از آن برای پردازش هر نماگرفتی که با ScreenCapture در AndroidX می‌گیرید استفاده کنید. این کتابخانه هنگام اجرای آزمایش‌های ابزار دقیق، مثل آزمایش‌هایی که بااستفاده از چارچوب آزمایش Espresso نوشته شده‌اند، کاربرد دارد. این بخش نحوه ایجاد کردن اشیای ScreenCapture با کتابخانه AndroidX و نحوه پردازش آن‌ها بااستفاده از testlab-instr-lib را شرح می‌دهد.

پس‌از اجرای آزمون ابزار دقیق، می‌توانید نماگرفت‌های ضبط‌شده را در کنسول Firebase مشاهده کنید.

امتحان کردن برنامه نمونه

برای امتحان کردن این عملکرد، برنامه نمونه NotePad را بارگیری کنید. قابلیت گرفتن نماگرفت ازقبل در پروژه «دفترچه» گنجانده شده است.

مرحله ۱. افزودن کتابخانه نماگرفت به پروژه

  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 (سطح 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>

مرحله ۲. درطول آزمایش نماگرفت بگیرید

در هر نقطه‌ای از آزمایشتان که می‌خواهید نماگرفت بگیرید، متد Screenshot.capture() را از کتابخانه AndroidX فراخوانی کنید. این کار باعث تولید ScreenCapture شیء می‌شود. وقتی process() را در شیء ScreenCapture فراخوانی می‌کنید، این فراخوانی بااستفاده از ScreenCaptureProcessor که در AndroidManifest.xml شما ثبت شده است پردازش می‌شود. توجه داشته باشید که اگر پردازشگری ثبت نشده باشد، از BasicScreenCaptureProcessor استفاده می‌شود. ازآنجایی‌که FirebaseScreenCaptureProcessor را ثبت کرده‌اید، نماگرفت‌های شما ازطریق FirebaseScreenCaptureProcessor پردازش خواهد شد و وقتی آزمایشتان را با Firebase Test Lab اجرا می‌کنید، همراه با نتایجتان برای شما دردسترس خواهد بود.

موارد استفاده نمونه برای ایجاد ScreenCapture:

  • گرفتن «ضبط صفحه» کامل در API Build.VERSION_CODES.JELLY_BEAN_MR2 و بالاتر:

    Screenshot.capture()
    
  • در هر سطح API، از «فعالیت» 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();
    

مرحله ۳. ساختن و اجرای آزمایش

  1. برنامه و فایل‌های APK آزمایشی خود را بسازید (برای دستورالعمل‌ها، به آزمایش کردن برنامه مراجعه کنید).

  2. در کنسول Firebase، به DevOps و تعامل > آزمایشگاه تست بروید، سپس فایل‌های APK را بارگذاری کنید.

  3. درنهایت، آزمایش خود را اجرا کنید.

مرحله ۴. مشاهده نماگرفت‌های آزمایش

پس‌از تکمیل آزمایش، می‌توانید نماگرفت‌هایی را که گرفته شده است مشاهده کنید:

  1. در کنسول Firebase، به DevOps و تعامل > آزمایشگاه تست بروید.

  2. در زبانه آزمایش‌ها، آزمایش تکمیل‌شده خود را انتخاب کنید، سپس روی زبانه نتایج کلیک کنید.

  3. آزمایش خود را دوباره انتخاب کنید، سپس روی برگه نماگرفت‌ها که ظاهر می‌شود کلیک کنید.

(اختیاری) فعال کردن ویژگی‌های آزمایشی اضافی

می‌توانید ویژگی‌های زیر را در آزمایشتان قبل‌از اجرا کردن آن با Test Lab فعال کنید:

فعال کردن «هماهنگ‌کننده»

Android Test Orchestrator ابزاری است که هریک از آزمون‌های ابزار دقیق برنامه شما را به‌طور مستقل اجرا می‌کند. ‫Test Lab همیشه از جدیدترین نسخه Orchestrator استفاده می‌کند.

برای فعال کردن «هماهنگ‌کننده» برای Test Lab، در راه‌اندازی آزمایش ابزار دقیق، روی گزینه‌های اضافی > اجرا با «هماهنگ‌کننده» کلیک کنید.

وقتی از «هماهنگ‌کننده» استفاده می‌کنید، از مزایای زیر بهره‌مند می‌شوید:

  • وضعیت مشترکی وجود ندارد. هر آزمایش در نمونه ابزاربندی خود اجرا می‌شود، بنابراین وضعیت مشترک در آزمایش‌ها جمع نمی‌شود.
  • خرابی‌های مجزا. اگر آزمایشی ازکار بیفتد، فقط آن ابزار دقیق متوقف می‌شود و آزمایش‌های دیگر در مجموعه شما همچنان می‌توانند اجرا شوند.

به‌خاطر داشته باشید که وقتی از Orchestrator استفاده می‌کنید، هر آزمایش نمونه ابزاربندی خود را اجرا می‌کند، یعنی فرایند برنامه پس‌از هر مورد آزمایشی مجدداً راه‌اندازی می‌شود. افزایش زمان‌های اجرای حاصل ممکن است بر استفاده از سهمیه یا زمان صورت‌حساب شما تأثیر بگذارد و ممکن است باعث شود از محدودیت‌های زمان انتظار دستگاه‌هایتان فراتر بروید. اگر زمان راه‌اندازی برنامه را کاهش دهید، این سربار کاهش می‌یابد.

برای تنظیم گزینه‌های اضافی برای «هماهنگ‌کننده»، آن‌ها را ازطریق فیلد environmentVariables مشخص کنید. برای مثال، برای استفاده از clearPackageData، از این گزینه در gcloud استفاده کنید:

--environment-variables clearPackageData=true

فعال کردن تکه‌تکه کردن

آزمایش تکه‌تکه کردن مجموعه آزمایش‌ها را به زیرگروه‌هایی (تکه‌ها) تقسیم می‌کند که به‌صورت جداگانه در انزوا اجرا می‌شوند. ‫Test Lab به‌طور خودکار هر تکه را به‌صورت موازی بااستفاده از چند دستگاه اجرا می‌کند و مجموعه کامل آزمایش‌ها را در زمان کمتری تکمیل می‌کند.

برای مثال، اگر N تکه ایجاد کنید، برای هر دستگاهی که انتخاب می‌کنید، Test Lab دستگاه‌های یکسان N را راه‌اندازی می‌کند و زیرمجموعه‌ای از آزمایش‌ها را در هر دستگاه اجرا می‌کند. این یعنی که موارد آزمایشی تکه‌تکه می‌تواند منجر به اجرای چند آزمایش در هر دستگاه شود. بااین‌حال، چارچوب‌های تست غیرتکه‌تکه منجر به یک اجرای تست در هر دستگاه می‌شود. برای آشنایی با مفاهیم Test Lab، مفاهیم کلیدی را ببینید.

برای فعال کردن تکه‌تکه کردن آزمایش در کنسول Firebase، این مراحل را دنبال کنید:

  1. در راه‌اندازی آزمایش ابزار دقیق، روی گزینه‌های اضافی کلیک کنید.

  2. در بخش تکه‌تکه کردن، تعداد تکه‌هایی را که می‌خواهید اجرا کنید وارد کنید.

صدور صورت‌حساب برای خرده‌های آزمایشی

‫Test Lab با بهره‌گیری از سازوکار داخلی تکه‌تکه‌سازی در AndroidJUnitRunner تکه‌های شما را پیاده‌سازی می‌کند. برای جلوگیری از کسر هزینه برای ایجاد خرده‌واحد خالی (خرده‌واحد بدون تخصیص مورد آزمون)، تعداد خرده‌واحدی که ایجاد می‌کنید باید کمتر از تعداد کل موارد آزمون باشد. بسته به اینکه اجرای هر مورد آزمایشی چقدر طول می‌کشد، معمولاً بهتر است ۲ تا ۱۰ مورد آزمایشی به هر تکه اختصاص دهید.

برای اطلاعات بیشتر درباره صورت‌حساب، کاربرد، سهمیه‌ها، و صورت‌حساب را بخوانید.