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
Test projenizin kök düzeyi ayarları Gradle dosyasında (
settings.gradle.kts
veyasettings.gradle
), Google'ın Maven deposunu ekleyin herrepositories
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() } } // ...
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") // ...
Testinizin
AndroidManifest.xml
dosyasındaFirebaseScreenCaptureProcessor
<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> ...
Uygulamanızın
AndroidManifest.xml
dosyasına aşağıdaki satırları,<manifest>
öğesi:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
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 birScreenCapture
işlemi gerçekleştirin:Screenshot.capture().process();
Belirli bir
ScreenCaptureProcessor
aracılığıylaScreenCapture
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
Uygulamanızı oluşturun ve APK'ları test edin (bkz. Uygulamanızı test etme bakın).
APK dosyalarını Test Lab kontrol paneline yükleyin bölümüne gidin.
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.
Testler sekmesinde tamamlanan testinizi seçin, ardından Sonuçlar sekmesini tıklayın.
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:
Araç testi kurulumunda, Ek seçenekler'i tıklayın.
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.