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. Enstrümantasyon testleri, fiziksel cihazlarda 45 dakikaya, sanal cihazlarda ise 60 dakikaya kadar çalışabilir.

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, aşağıdakileri yapabileceğiniz bir kitaplık (testlab-instr-lib) içerir 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 kontrol edebilirsiniz.

Örnek uygulamayı deneme

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, <manifest> etiketine aşağıdaki satırları ekleyerek uygulamanız için sistem izinlerini belirtin. 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'ü 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ı:

  • API Build.VERSION_CODES.JELLY_BEAN_MR2 ve sonraki sürümlerde tam ekran görüntüsü alın:

    Screenshot.capture()
    
  • Etkinliğin herhangi bir API seviyesinde ScreenCapture'sini 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ü işleme 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 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 (Firebase konsolunun en önemli parçası.)

  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 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:

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 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ğı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 sayıda parça oluşturursanız Test Lab, seçtiğiniz her cihaz için N tane aynı cihaz oluşturur 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. Enstrümantasyon 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, kırıklarınızı AndroidJUnitRunner'ın yerleşik kırma mekanizması. Boş parçalar (atanmış test durumu olmayan parçalar) oluşturmak için ödeme almamak üzere oluşturduğunuz parça sayısı 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.