Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Enstrümantasyon testlerine başlayın

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bu kılavuz, Firebase Test Lab kullanılarak bir enstrümantasyon testinin nasıl hazırlanacağını ve yürütüleceğini açıklamaktadır. Bu kılavuzu kullanmak için Espresso veya UI Automator Android test çerçevelerini kullanan bir enstrümantasyon testine (siz veya ekibiniz tarafından yazılmış) ihtiyacınız olacak. Enstrümantasyon testleri, fiziksel cihazlarda 45 dakikaya kadar ve sanal cihazlarda 60 dakikaya kadar sürebilir.

Daha sonraki adımlarda, uygulamanızın APK'sını ve testinizin APK'sını Firebase'e yükleyeceksiniz.

(İsteğe bağlı) Ekran görüntüsü kitaplığını uygulamanıza ekleyin

Firebase Test Lab, Espresso test çerçevesi kullanılarak yazılan testler gibi enstrümantasyon testleri çalıştırırken AndroidX'in ScreenCapture ile aldığınız tüm ekran görüntülerini işlemek için kullanabileceğiniz bir kitaplık (testlab-instr-lib) içerir. Bu bölümde, AndroidX kitaplığıyla ScreenCapture nesnelerinin nasıl oluşturulacağı ve bunların testlab-instr-lib kullanılarak nasıl işleneceği açıklanmaktadır.

Enstrümantasyon testiniz çalıştırıldıktan sonra, yakalanan ekran görüntülerini Firebase konsolunda görüntüleyebilirsiniz.

Örnek bir uygulama deneyin

Bu işlevi denemek için NotePad örnek uygulamasını indirin. Ekran görüntüsü alma yeteneği zaten NotePad projesine dahil edilmiştir.

1. Adım. Ekran görüntüsü kitaplığını projenize ekleyin

  1. Test projenizin kök düzeyinde (proje düzeyinde) Gradle dosyasında ( build.gradle ), her depo bölümüne Google'ın Maven deposunu ekleyin:

    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. Modül (uygulama düzeyinde) Gradle dosyanızda (genellikle app/build.gradle ), Test Lab ekran görüntüsü kitaplığı için bir bağımlılık ekleyin.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation 'com.google.firebase:testlab-instr-lib:0.2'
      // ...
    }
  3. Testinizin AndroidManifest.xml dosyasında, FirebaseScreenCaptureProcessor <instrumentation> öğesi içindeki bir meta veri etiketine kaydedin. İşlemciyi bunun yerine AndroidJUnitRunner'da bağımsız değişken olarak da belirtebilirsiniz (nasıl yapılacağına ilişkin talimatlar için AndroidJUnitRunner başvuru belgelerine bakın).

    <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. Uygulamanızın AndroidManifest.xml dosyasında, <manifest> öğesinin içine şu satırları ekleyin:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. AndroidManifest.xml dosyanızda, <manifest> etiketinin içine aşağıdaki satırları ekleyerek uygulamanız için sistem izinlerini belirtin. Android 10 (API seviye 29) veya üzerinde test yapıyorsanız, WRITE_EXTERNAL_STORAGE iznini atlayın (uygulamanız, ekran görüntülerini okumak ve cihaza yazmak için bu izni gerektirmez).

    <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. Adım. Testiniz sırasında ekran görüntüleri alın

Testinizin herhangi bir noktasında ekran görüntüsü almak istediğinizde, AndroidX kitaplığından Screenshot.capture() yöntemini çağırın. Bu, bir ScreenCapture nesnesi üretir. ScreenCapture nesnesinde process() öğesini çağırdığınızda, AndroidManifest.xml dosyanızda kayıtlı olan ScreenCaptureProcessor kullanılarak işlenir. Kayıtlı işlemci yoksa BasicScreenCaptureProcessor kullanıldığını unutmayın. FirebaseScreenCaptureProcessor kaydettirdiğiniz için, ekran görüntüleriniz FirebaseScreenCaptureProcessor aracılığıyla işlenecek ve Firebase Test Lab ile testinizi yaptığınızda sonuçlarınızla birlikte size sunulacaktır.

Bir ScreenCapture oluşturmak için örnek kullanım durumları:

  • API Build.VERSION_CODES.JELLY_BEAN_MR2 ve üzeri sürümlerde tam bir ScreenCapture yapın:

    Screenshot.capture()
    
  • Herhangi bir API düzeyinde Aktivitenin ScreenCapture alın. Bunun, Build.VERSION_CODES.JELLY_BEAN_MR2 altındaki cihazlar için tek seçenek olduğunu unutmayın.

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

Bir ScreenCapture işlemek için örnek kullanım durumları

  • FirebaseScreenCaptureProcessor aracılığıyla bir ScreenCapture işleyin:

    Screenshot.capture().process();
    
  • Belirli bir ScreenCaptureProcessor aracılığıyla bir ScreenCapture işleyin (bu, işlemcinin kaydını atlamanıza izin verir):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • ScreenCapture adını ve formatını ayarlayın ve kayıtlı işlemciyi kullanarak işleyin:

    Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
    

3. Adım. Testinizi oluşturun ve çalıştırın

  1. Uygulamanızı oluşturun ve APK'ları test edin (talimatlar için Uygulamanızı test etme bölümüne bakın).

  2. APK dosyalarını Firebase konsolunun Test Lab panosuna yükleyin.

  3. Son olarak, testinizi çalıştırın.

4. Adım. Test ekran görüntülerinizi görüntüleyin

Testiniz tamamlandıktan sonra, Firebase konsolunda çekilmiş tüm ekran görüntülerini görüntüleyebilirsiniz.

  1. Testler sekmesinde, tamamladığınız testi seçin ve ardından Sonuçlar sekmesine tıklayın.

  2. Testinizi tekrar seçin, ardından beliren Ekran Görüntüleri sekmesine tıklayın.

(İsteğe bağlı) Ek test özelliklerini etkinleştirin

Testinizi Test Lab ile çalıştırmadan önce testinizde aşağıdaki özellikleri etkinleştirebilirsiniz:

Orkestratörü Etkinleştir

Android Test Orchestrator , uygulamanızın enstrümantasyon testlerinin her birini bağımsız olarak çalıştıran bir araçtır. Test Lab, her zaman Orchestrator'ın en son sürümünü kullanır.

Test Lab için Orchestrator'ı etkinleştirmek için, enstrümantasyon test kurulumunda, Ek seçenekler > Orchestrator ile çalıştır öğesine tıklayın.

Yararlar ve zararlar

  • Fayda: Paylaşılan durum yok. Her test kendi enstrümantasyon örneğinde çalışır, böylece testler arasında paylaşılan bir durum birikmez.
  • Fayda: İzole çökmeler. Bir test çökerse, yalnızca o enstrümantasyon sonlandırılır ve paketinizdeki diğer testler çalışmaya devam edebilir.
  • Dezavantajı: Daha uzun çalışma süreleri . Her test kendi enstrümantasyon örneğini çalıştırır, yani test süreci genel olarak biraz daha uzun sürer. İşaretlenmezse, artan çalışma süreleri potansiyel olarak kota kullanımınızı veya faturalandırma sürenizi etkileyebilir ve cihazlarınızın zaman aşımı sınırlarını aşmanıza neden olabilir.

parçalamayı etkinleştir

Test parçalama, bir dizi testi ayrı ayrı çalışan alt gruplara (parçalara) böler. Test Lab, birden fazla cihaz kullanarak her parçayı otomatik olarak paralel olarak çalıştırır ve tüm test setini daha kısa sürede tamamlar.

Test parçalama nasıl çalışır?

Diyelim ki N parça oluşturdunuz. Test Lab, seçtiğiniz her cihaz için N özdeş cihazı döndürür ve her cihazda testlerin bir alt kümesini çalıştırır. Bu, parçalanmış test durumlarının, her zaman cihaz başına bir test yürütmesiyle sonuçlanan parçalanmamış test durumlarının aksine, cihaz başına birden çok test yürütmesiyle sonuçlanabileceği anlamına gelir (Test Laboratuvarı'ndaki temel kavramlara hızlı bir genel bakış için, bkz. Anahtar kavramlar ).

Firebase konsolunda test paylaşımını etkinleştirebilirsiniz:

  1. Enstrümantasyon test kurulumunda, Ek seçenekler 'e tıklayın.

  2. Parçalama bölümünde, çalıştırmak istediğiniz parça sayısını girin.

Test parçaları için faturalandırma

Test Lab, parçalarınızı AndroidJUnitRunner'ın yerleşik parçalama mekanizmasından yararlanarak uygular. Boş parçaları (atanan test senaryoları olmayan kırıklar) döndürmek için ücretlendirilmekten kaçınmak için, oluşturduğunuz parça sayısının toplam test senaryosu sayısından az olması gerekir. Her bir test senaryosunun çalıştırılmasının ne kadar sürdüğüne bağlı olarak, parça başına 2-10 test senaryosu atamak genellikle iyi bir fikirdir.

Faturalandırma hakkında daha fazla bilgi için Kullanım, kotalar ve faturalandırma bölümünü okuyun.