با تست های ابزار دقیق شروع کنید

این راهنما نحوه آماده سازی و اجرای تست ابزار دقیق با استفاده از Firebase Test Lab را شرح می دهد. برای استفاده از این راهنما، به یک تست ابزار دقیق (نوشته شده توسط شما یا تیمتان) نیاز دارید که از چارچوب های تست اندروید Espresso یا UI Automator استفاده می کند. تست های ابزار دقیق می توانند تا 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 (سطح 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 :

  • یک ScreenCapture کامل در یک API Build.VERSION_CODES.JELLY_BEAN_MR2 و بالاتر بگیرید:

    Screenshot.capture()
    
  • یک ScreenCapture از فعالیت در هر سطح API بگیرید. توجه داشته باشید که این تنها گزینه برای دستگاه‌هایی است که زیر Build.VERSION_CODES.JELLY_BEAN_MR2 هستند.

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

موارد استفاده مثال برای پردازش یک ScreenCapture

  • پردازش یک 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. در تب Tests ، آزمون تکمیل شده خود را انتخاب کنید، سپس روی برگه Results کلیک کنید.

  2. دوباره تست خود را انتخاب کنید، سپس روی تب Screenshots که ظاهر می شود کلیک کنید.

(اختیاری) ویژگی های تست اضافی را فعال کنید

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

ارکستراتور را فعال کنید

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

برای فعال کردن ارکستراتور برای Test Lab ، در تنظیمات تست ابزار دقیق، روی گزینه‌های اضافی > اجرا با ارکستراتور کلیک کنید.

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

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

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

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

--environment-variables clearPackageData=true

اشتراک گذاری را فعال کنید

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

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

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

  1. در تنظیم تست ابزار دقیق، روی گزینه های اضافی کلیک کنید.

  2. در قسمت Sharding تعداد خرده هایی را که می خواهید اجرا کنید وارد کنید.

صورتحساب برای قطعات آزمایشی

Test Lab با استفاده از مکانیزم اشتراک گذاری داخلی AndroidJUnitRunner، قطعات شما را پیاده سازی می کند. برای جلوگیری از پرداخت هزینه برای چرخاندن خرده‌های خالی (تکه‌های بدون موارد تست اختصاص‌یافته)، تعداد خرده‌هایی که ایجاد می‌کنید باید کمتر از تعداد کل موارد تست باشد. بسته به مدت زمانی که هر تست مورد طول می کشد تا اجرا شود، معمولاً ایده خوبی است که 2 تا 10 مورد آزمایشی را به ازای هر خرده اختصاص دهید.

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