Enstrümantasyon testlerine başlayın

Bu kılavuz, Firebase Test Lab kullanılarak bir enstrümantasyon testinin nasıl hazırlanacağını ve çalıştırılacağını 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 olacaktır. Enstrümantasyon testleri, fiziksel cihazlarda 45 dakikaya kadar, sanal cihazlarda ise 60 dakikaya kadar çalıştırılabilir.

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 testlerini çalıştırırken AndroidX'in ScreenCapture'ı ile aldığınız 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 uygulamayı deneyin

Bu işlevi denemek için NotePad örnek uygulamasını indirin. Ekran görüntüsü alma özelliğ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üzeyindeki ayarlar Gradle dosyasında ( settings.gradle.kts veya settings.gradle ), her repositories bölümüne Google'ın Maven deposunu ekleyin:

    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ün (uygulama düzeyi) Gradle dosyasına (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle ), Test Laboratuvarı için bir bağımlılık ekleyin 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 içindeki bir meta veri etiketine kaydedin. Bunun yerine işlemciyi AndroidJUnitRunner'da bir argüman olarak da belirtebilirsiniz (nasıl yapılacağına ilişkin talimatlar için AndroidJUnitRunner referans 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ındaki <manifest> öğesinin içine aşağıdaki 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ın sistem izinlerini belirtin. Android 10 (API düzeyi 29) veya üzeri bir sürümde test yapıyorsanız WRITE_EXTERNAL_STORAGE iznini atlayın (uygulamanız, ekran görüntülerini cihaza okumak ve yazmak için bu izne ihtiyaç duymaz).

    <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 ekran görüntüsü almak istediğiniz herhangi bir noktasında 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ı ScreenCaptureProcessor kullanılarak işlenir. Hiçbir işlemci kayıtlı değilse BasicScreenCaptureProcessor kullanıldığını unutmayın. FirebaseScreenCaptureProcessor kaydettiğinizden beri, ekran görüntüleriniz FirebaseScreenCaptureProcessor aracılığıyla işlenecek ve Firebase Test Lab ile testinizi çalıştırdığınızda sonuçlarınızla birlikte kullanımınıza sunulacaktır.

ScreenCapture oluşturmaya yönelik örnek kullanım durumları:

  • API Build.VERSION_CODES.JELLY_BEAN_MR2 ve üzeri sürümlerde tam ScreenCapture çekin:

    Screenshot.capture()
    
  • Etkinliğin ScreenCapture herhangi bir API düzeyinde alın. Build.VERSION_CODES.JELLY_BEAN_MR2'nin altındaki cihazlar için tek seçeneğin bu olduğunu unutmayın.

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

ScreenCapture'ın işlenmesine yönelik örnek kullanım durumları

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

    Screenshot.capture().process();
    
  • Belirli bir ScreenCaptureProcessor aracılığıyla ScreenCapture işleyin (bu, işlemciyi kaydetmeyi atlamanıza olanak tanır):

    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 kontrol paneline 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 çekilen 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 ve 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 Laboratuvarı için Orkestratör'ü etkinleştirmek üzere enstrümantasyon testi kurulumunda Ek seçenekler > Orkestratörle Çalıştır öğesine tıklayın.

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

  • Paylaşılan durum yok. Her test kendi enstrümantasyon örneğinde çalışır, böylece testler arasında paylaşılan bir durum birikmez.
  • İzole çökmeler. Bir test çökerse yalnızca o enstrümantasyon sonlandırılır ve paketinizdeki diğer testler çalışmaya devam edebilir.

Orchestrator'ı kullandığınızda her testin kendi enstrümantasyon örneğini çalıştırdığını, bunun da uygulama sürecinin her test senaryosundan sonra yeniden başlatıldığı anlamına geldiğini unutmayın. Bunun sonucunda ortaya çıkan artan çalışma süreleri , kota kullanımınızı veya faturalanan sürenizi etkileyebilir ve cihazlarınızın zaman aşımı sınırlarını aşmanıza neden olabilir. Uygulamanızın başlangıç ​​süresini kısaltırsanız bu ek yük de kısalır.

Orkestratör için ek seçenekler ayarlamak üzere 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

Parçalamayı etkinleştir

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

Örneğin, seçtiğiniz her cihaz için N parça oluşturursanız Test Lab, N adet özdeş cihazı çalıştırır ve her cihazda testlerin bir alt kümesini çalıştırır. Bu, parçalanmış test senaryolarının cihaz başına birden fazla test yürütülmesiyle sonuçlanabileceği anlamına gelir. Bununla birlikte, parçalanmayan test senaryoları cihaz başına bir test yürütülmesiyle sonuçlanır. Test Laboratuvarı kavramlarını öğrenmek için bkz. Anahtar kavramlar .

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

  1. Alet testi 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 , AndroidJUnitRunner'ın yerleşik parçalama mekanizmasından yararlanarak parçalarınızı uygular. Boş parçaların (atanan test senaryoları olmayan parçalar) döndürülmesi karşılığında ücret alınmasını önlemek için oluşturduğunuz parça sayısı, toplam test senaryosu sayısından az olmalıdır. Her test senaryosunun ne kadar süre çalıştırılacağına bağlı olarak, genellikle parça başına 2-10 test senaryosu atamak iyi bir fikirdir.

Faturalandırma hakkında daha fazla bilgi için Kullanım, kotalar ve faturalandırma konusunu okuyun.