Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

این راهنما نحوه آماده سازی و اجرای یک تست ابزار دقیق با استفاده از 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 در سطح ریشه (سطح پروژه) پروژه آزمایشی خود ( build.gradle )، مخزن Maven Google را به هر بخش مخازن اضافه کنید:

    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 )، یک وابستگی برای کتابخانه اسکرین شات آزمایشگاه تست اضافه کنید.

    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 به طور خودکار هر قطعه را با استفاده از چندین دستگاه به صورت موازی اجرا می کند و کل مجموعه آزمایش ها را در زمان کمتری کامل می کند.

تقسیم بندی تست چگونه کار می کند

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

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

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

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

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

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

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

،

این راهنما نحوه آماده سازی و اجرای یک تست ابزار دقیق با استفاده از 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 در سطح ریشه (سطح پروژه) پروژه آزمایشی خود ( build.gradle )، مخزن Maven Google را به هر بخش مخازن اضافه کنید:

    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 )، یک وابستگی برای کتابخانه اسکرین شات آزمایشگاه تست اضافه کنید.

    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 به طور خودکار هر قطعه را با استفاده از چندین دستگاه به صورت موازی اجرا می کند و کل مجموعه آزمایش ها را در زمان کمتری کامل می کند.

تقسیم بندی تست چگونه کار می کند

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

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

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

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

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

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

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