Araç testlerini kullanmaya başlayın

Bu kılavuzda, bir araç testinin nasıl hazırlanacağı ve yürütüleceği Firebase Test Lab. Bu kılavuzu kullanmak için araç testi (siz veya ekibiniz tarafından yazılmış) Espresso veya Kullanıcı Arayüzü Otomatikleştirici Android test çerçeveleri. En fazla 45 araç testi yapılabilir. fiziki cihazlarda 60 dakikaya, sanal cihazlarda da 60 dakikaya kadar.

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

(İsteğe bağlı) Uygulamanıza ekran görüntüsü kitaplığı ekleyin

Firebase Test Lab'de, aşağıdakileri yapabileceğiniz bir kitaplık (testlab-instr-lib) vardır: AndroidX'le aldığınız ekran görüntülerini işlemek için kullanabilirsiniz. Ekran Görüntüsü araç testlerini çalıştırırken, örneğin Espresso test çerçevesi. Bu bölümde AndroidX ile ScreenCapture nesnelerinin nasıl oluşturulacağı açıklanmaktadır. kitaplığını ve testlab-instr-lib kullanarak nasıl işleyeceğini öğreneceksiniz.

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

Örnek bir uygulama deneyin

NotePad örnek uygulamasını indirin bu işlevi deneyin. Şu anda ekran görüntüsü alabilme ve NotePad projesine 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ünüz (uygulama düzeyi) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), Test Lab ekran görüntüsü kitaplığı.

    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. Ayrıca, işlemciyi bir bağımsız değişkeni yerine AndroidJUnitRunner'da AndroidJUnitRunner referans belgeleri 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ına aşağıdaki satırları, <manifest> öğesi:

     <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 kullanabilirsiniz. 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 durumda ScreenCapture nesne. ScreenCapture nesnesinde process() yöntemini çağırdığınızda nesne işlenir ScreenCaptureProcessor'ı kullanarak kayıtlı olan mevcut AndroidManifest.xml hesabınızda oturum açın. Lütfen Kayıtlı işleyen yoksa BasicScreenCaptureProcessor kullanılır. FirebaseScreenCaptureProcessor öğesini kaydettiğiniz için ekran görüntüleriniz FirebaseScreenCaptureProcessor aracılığıyla işlenecek ve kullanılabilecek istediğiniz sonuçları elde etmenizi sağlar.

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()
    
  • Herhangi bir API düzeyinde Etkinlik'ten ScreenCapture alın. Not: yalnızca Build.VERSION_CODES.JELLY_BEAN_MR2 altındaki cihazlar için geçerlidir.

    @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 aracılığıyla ScreenCapture işlemi gerçekleştirin (böylece işlemciyi kaydetme adımını atlayabilirsiniz):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • ScreenCapture öğesinin adını ve biçimini belirleyip kayıtlı işleyen:

    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 bölümüne gidin.

  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, alınan 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, ardından görünen Ekran görüntüleri sekmesini tıklayın.

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

Denemenizi Test Lab:

Orkestratörü Etkinleştir

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

Orchestrator'ı kullandığınızda aşağıdaki avantajlardan yararlanırsınız:

  • 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.
  • Yalıtılmış kilitlenmeler. Bir test kilitlenirse yalnızca bu araçlar 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 gösterim bu ek yük kısalır.

Orkestratör için ek seçenekler ayarlamak istiyorsanız şunları kullanarak belirtin: environmentVariables alanı. Örneğin, clearPackageData özelliğini kullanmak için şunu kullanın: gcloud'daki seçenek:

--environment-variables clearPackageData=true

Parçalamayı etkinleştir

Test parçalama, bir dizi testi çalıştırılan alt gruplara (kırıklar) ayırır. ayrı olarak ele alacağız. 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 Test Lab, seçtiğiniz her cihaz için N değerini 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. Bununla birlikte, parçalanmamış test durumları her biri için bir test yürütülmesiyle sonuçlanır olanak tanır. Test Lab kavramlarını öğrenmek için bkz. Temel kavramlar.

Firebase konsolunda test parçalamayı etkinleştirmek için aşağıdaki 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ümünden yararlanarak kırıklarınızı uygular parçalama mekanizması. Boş parçalar (atanmayan parçalar (atanmayan parçalar) yüklenmekten kaçınmak için test durumları), oluşturduğunuz kırık sayısı create, toplam test durumu sayısından az olmalıdır. Bu videoda her test senaryosunun çalışması uzun sürerse bu süre zarfında 2 ila 10 test örnek verilebilir.

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