Araç testlerini kullanmaya başlayın

Bu kılavuzda, Firebase Test Lab'ü kullanarak bir enstrümantasyon testinin nasıl hazırlanacağı ve çalıştırılacağı açıklanmaktadır. Bu kılavuzu kullanmak için Espresso veya UI Automator Android test çerçevelerini kullanan bir araç testi (sizin tarafınızdan veya ekibiniz tarafından yazılmış) gerekir. Enstrümantasyon testleri, fiziksel cihazlarda 45 dakikaya, sanal cihazlarda ise 60 dakikaya kadar çalışabilir.

Sonraki adımlarda, uygulamanızın APK'sını ve testinizin APK'sını Firebase'e yüklersiniz.

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

Firebase Test Lab, Espresso test çerçevesi kullanılarak yazılan testler gibi enstrümantasyon testleri çalıştırırken AndroidX'in ScreenCapture ile çektiğiniz 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 testlab-instr-lib kullanılarak nasıl işleneceği açıklanmaktadır.

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

Örnek bir uygulama deneyin

NotePad örnek uygulamasını indirin bu işlevi deneyin. Ekran görüntüsü alma özelliği Not Defteri projesine zaten dahil edilmiştir.

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

  1. Test projenizin kök düzeyi ayarları Gradle dosyasında (settings.gradle.kts veya settings.gradle), Google'ın Maven deposunu ekleyin her repositories bölümüne:

    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. Modül (uygulama düzeyi) Gradle dosyanıza (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/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. Bunun yerine, AndroidJUnitRunner'da işlemciyi bağımsız değişken olarak da belirtebilirsiniz (nasıl yapılacağıyla ilgili talimatlar için AndroidJUnitRunner referans dokümanlarına 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> öğesine aşağıdaki satırları ekleyin:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. AndroidManifest.xml dosyanızda, uygulamanız için sistem izinlerini belirtin. <manifest> etiketi içine aşağıdaki satırları ekleyerek yapabilirsiniz. Test amaçlı olarak Android 10 (API düzeyi 29) veya sonraki sürümlerde, WRITE_EXTERNAL_STORAGE (uygulamanız, İYS'yi kullanmak için bu izni cihaza ekran görüntüsü yazar).

    <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üsü alma

Testinizde ekran görüntüsü almak istediğiniz herhangi bir noktada Screenshot.capture() yöntemini seçin. Bu işlem sonucunda bir ScreenCapture nesnesi oluşturulur. ScreenCapture nesnesinde process() çağrısı yaptığınızda, AndroidManifest.xml'inize kayıtlı ScreenCaptureProcessor kullanılarak işlenir. Hiçbir işleyici kaydedilmemişse BasicScreenCaptureProcessor değerinin kullanıldığını unutmayın. FirebaseScreenCaptureProcessor'ü kaydettiğiniz için ekran görüntüleriniz FirebaseScreenCaptureProcessor üzerinden işlenir ve testinizi Firebase Test Lab ile çalıştırdığınızda sonuçlarınızla birlikte size sunulur.

ScreenCapture oluşturmanın örnek kullanım alanları:

  • Bir API Derlemesi'nde Tam Ekran Görüntüsü alın.VERSION_CODES.JELLY_BEAN_MR2 ve yukarıda:

    Screenshot.capture()
    
  • Etkinliğin herhangi bir API seviyesinde ScreenCapture'sini alın. Bu seçeneğin, Build.VERSION_CODES.JELLY_BEAN_MR2 sürümünden eski sürümlere sahip cihazlar için tek seçenek olduğunu unutmayın.

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

Ekran Görüntüsü'nün işlenmesi için örnek kullanım alanları

  • FirebaseScreenCaptureProcessor aracılığıyla bir ScreenCapture işlemi gerçekleştirin:

    Screenshot.capture().process();
    
  • Belirli bir ScreenCaptureProcessor üzerinden ScreenCapture işleyin (bu, ödeme işleyiciyi kaydetme adımını atlamanıza olanak tanır):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • ScreenCapture öğesinin adını ve biçimini ayarlayın ve kayıtlı işleyiciyi 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 (bkz. Uygulamanızı test etme bakın).

  2. APK dosyalarını Test Lab kontrol paneline yükleyin (Firebase konsolunun en önemli parçası.)

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

4. Adım. Test ekran görüntülerini görüntüleme

Testiniz tamamlandıktan sonra, alınan tüm ekran görüntülerini Firebase konsolunda görüntüleyebilirsiniz.

  1. Testler sekmesinde tamamlanan testinizi seçin, ardından Sonuçlar sekmesini tıklayın.

  2. Testinizi tekrar seçin ve görünen Ekran görüntüleri sekmesini tıklayın.

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

Denemenizi Test Lab:

Orchestrator'ı etkinleştirme

Android Test Orkestratörü uygulamanızın araç 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 Orkestratör'ü etkinleştirmek üzere araç testinde kurulum, Ek seçenekler'i tıklayın > Orkestratör ile birlikte çalıştırın.

Orchestrator'ı kullandığınızda aşağıdakilerden yararlanabilirsiniz:

  • Paylaşılan durum yok. Her test kendi içinde çalışır araç örneğine sahip olmalıdır. Böylece paylaşılan bir durum, testler arasında birikmez.
  • Tekil kilitlenmeler. Bir test kilitlenirse yalnızca ilgili enstrümantasyon sonlandırılır ve paketinizdeki diğer testler çalışmaya devam edebilir.

Orchestrator'ı kullandığınızda her testin kendi kendine çalışacağını unutmayın. Bu, uygulama işleminin yeniden başlatıldığı anlamına gelir. her test durumunda yardımcı olabilir. Sonuç olarak artan çalışma süreleri kota kullanımını veya faturalandırılma süresini ve dolayısıyla cihazlarınızın kapasitesini zaman aşımı sınırlarını belirler. Uygulamanızın bu ek yük kısalır.

Orchestrator için ek seçenekler ayarlamak istiyorsanız bunları environmentVariables alanı aracılığıyla belirtin. Örneğin, clearPackageData kullanmak için gcloud'da şu seçeneği kullanın:

--environment-variables clearPackageData=true

Bölme işlemini etkinleştirme

Test bölme, bir grup testi izole olarak ayrı ayrı çalışan alt gruplara (parçalara) ayırır. Test Lab her kırığı paralel olarak otomatik olarak çalıştırır ve tüm testleri daha kısa sürede tamamlar.

Örneğin, N parça oluşturursanız seçtiğiniz her cihaz için Test Lab, N döndürür. tam olarak aynı cihazlarda test eder ve her cihazda testlerin bir alt kümesini çalıştırır. Bunun anlamı şudur: test durumlarının cihaz başına birden fazla test yürütmesi ile sonuçlanabileceğini bildiriyor. Ancak, bölümlenmemiş test durumları cihaz başına bir test işlemiyle sonuçlanır. Test Lab kavramlarını öğrenmek için Temel kavramlar.

Firebase konsolunda test parçalamayı etkinleştirmek için şu adımları izleyin:

  1. Araç testi kurulumunda, Ek seçenekler'i tıklayın.

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

Test parçaları için faturalandırma

Test Lab, AndroidJUnitRunner'ın yerleşik bölümleme mekanizmasından yararlanarak parçalarınızı uygular. Boş parçalar (atanmayan parçalar) döndürüldüğünde ücret alınmasını önlemek için test durumları), oluşturduğunuz kırık sayısı create, toplam test durumu sayısından az olmalıdır. Her test senaryosunun çalıştırılmasının ne kadar sürdüğüne bağlı olarak, genellikle her bölüme 2-10 test senaryosu atamak iyi bir fikirdir.

Faturalandırma hakkında daha fazla bilgi için Kullanım, kotalar ve faturalandırma başlıklı makaleyi inceleyin.