Bu kılavuz, Firebase Test Lab kullanılarak bir enstrümantasyon testinin nasıl hazırlanacağını ve yürütüleceğini 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 olacak. Enstrümantasyon testleri, fiziksel cihazlarda 45 dakikaya kadar ve sanal cihazlarda 60 dakikaya kadar sürebilir.
Daha 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 testleri çalıştırırken AndroidX'in ScreenCapture ile aldığınız tüm 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 uygulama deneyin
Bu işlevi denemek için NotePad örnek uygulamasını indirin. Ekran görüntüsü alma yeteneği zaten NotePad projesine dahil edilmiştir.
1. Adım. Ekran görüntüsü kitaplığını projenize ekleyin
Test projenizin kök düzeyindeki ayarlar Gradle dosyasında (
settings.gradle.kts
veyasettings.gradle
), herrepositories
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() } } // ...
Modül (uygulama düzeyinde) Gradle dosyanıza (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") // ...
Testinizin
AndroidManifest.xml
dosyasında,FirebaseScreenCaptureProcessor
<instrumentation>
öğesi içindeki bir meta veri etiketine kaydedin. İşlemciyi bunun yerine AndroidJUnitRunner'da bağımsız değişken olarak da belirtebilirsiniz (nasıl yapılacağına ilişkin talimatlar için AndroidJUnitRunner başvuru 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> ...
Uygulamanızın
AndroidManifest.xml
dosyasında,<manifest>
öğesinin içine şu satırları ekleyin:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
AndroidManifest.xml
dosyanızda,<manifest>
etiketinin içine aşağıdaki satırları ekleyerek uygulamanız için sistem izinlerini belirtin. Android 10 (API seviye 29) veya üzerinde test yapıyorsanız,WRITE_EXTERNAL_STORAGE
iznini atlayın (uygulamanız, ekran görüntülerini okumak ve cihaza yazmak için bu izni gerektirmez).<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 herhangi bir noktasında ekran görüntüsü almak istediğinizde, 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ı olan ScreenCaptureProcessor kullanılarak işlenir. Kayıtlı işlemci yoksa BasicScreenCaptureProcessor
kullanıldığını unutmayın. FirebaseScreenCaptureProcessor
kaydettirdiğiniz için, ekran görüntüleriniz FirebaseScreenCaptureProcessor
aracılığıyla işlenecek ve Firebase Test Lab ile testinizi yaptığınızda sonuçlarınızla birlikte size sunulacaktır.
Bir ScreenCapture
oluşturmak için örnek kullanım durumları:
API Build.VERSION_CODES.JELLY_BEAN_MR2 ve üzeri sürümlerde tam bir ScreenCapture yapın:
Screenshot.capture()
Herhangi bir API düzeyinde Aktivitenin
ScreenCapture
alın. Bunun, Build.VERSION_CODES.JELLY_BEAN_MR2 altındaki cihazlar için tek seçenek olduğunu unutmayın.@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
Bir ScreenCapture işlemek için örnek kullanım durumları
FirebaseScreenCaptureProcessor
aracılığıyla birScreenCapture
işleyin:Screenshot.capture().process();
Belirli bir
ScreenCaptureProcessor
aracılığıyla birScreenCapture
işleyin (bu, işlemcinin kaydını atlamanıza izin verir):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
Uygulamanızı oluşturun ve APK'ları test edin (talimatlar için Uygulamanızı test etme bölümüne bakın).
APK dosyalarını Firebase konsolunun Test Lab panosuna yükleyin.
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 çekilmiş tüm ekran görüntülerini görüntüleyebilirsiniz.
Testler sekmesinde, tamamladığınız testi seçin ve ardından Sonuçlar sekmesine tıklayın.
Testinizi tekrar seçin, 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 Lab için Orchestrator'ı etkinleştirmek için, enstrümantasyon test kurulumunda, Ek seçenekler > Orchestrator ile ç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, bu nedenle 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ı unutmayın; bu, uygulama sürecinin her test senaryosundan sonra yeniden başlatıldığı anlamına gelir. Artan çalışma süreleri , kota kullanımınızı veya fatura 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 kısalır.
Orchestrator 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, birden fazla cihaz kullanarak otomatik olarak her bir parçacığı paralel 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 özdeş cihazı döndürür ve her cihazda testlerin bir alt kümesini çalıştırır. Bu, bölünmüş test senaryolarının cihaz başına birden çok test yürütmesiyle sonuçlanabileceği anlamına gelir. Ancak parçalanmamış test senaryoları, cihaz başına bir test yürütmesiyle sonuçlanır. Test Lab kavramlarını öğrenmek için bkz. Anahtar kavramlar .
Firebase konsolunda test paylaşımını etkinleştirmek için şu adımları izleyin:
Enstrümantasyon test kurulumunda, Ek seçenekler 'e tıklayın.
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, parçalarınızı AndroidJUnitRunner'ın yerleşik parçalama mekanizmasından yararlanarak uygular. Boş parçaları (atanan test senaryoları olmayan kırıklar) döndürmek için ücretlendirilmekten kaçınmak için, oluşturduğunuz parça sayısının toplam test senaryosu sayısından az olması gerekir. Her bir test senaryosunun çalıştırılmasının ne kadar sürdüğüne bağlı olarak, parça başına 2-10 test senaryosu atamak genellikle iyi bir fikirdir.
Faturalama hakkında daha fazla bilgi için Kullanım, kotalar ve faturalandırma bölümünü okuyun.