Test Lab'ı CI/CD sisteminize entegre edin

1. Giriş

Son Güncelleme: 2022-04-07

CI/CD sistemleriyle mobil testler nasıl çalıştırılır?

Mobil testleri çalıştırmak zor olabilir: Birçok uygulama farklı platformlarda, cihazlarda ve API sürümlerinde çalışır. Uygulama geliştiricileri, sorunları kullanıcılardan önce yakalamak için mümkün olduğunca çok sayıda yapılandırma üzerinde test yapmak ister. Ancak maliyet ve kaynak kısıtlamaları, bireysel geliştiricilerin yatırım yapabileceği test cihazlarının sayısını ve manuel bakım miktarını sınırlar. Geliştirme süreci, özellikle sürekli entegrasyon/sürekli geliştirme (CI/CD) sistemleri için ölçeklendiğinde, test sürecinin bakım maliyetini ve çabasını en aza indirirken otomatikleştirilecektir.

Firebase Test Lab, uygulamalarınızın kullanıcılarınızın cihazlarında nasıl performans gösterdiğini anlamanıza yardımcı olmak için veri merkezlerimizde çeşitli mobil fiziksel ve sanal cihazları barındırır. Ayrıca veri merkezlerimizdeki cihazlarda test çalıştırmayı düzenleyen, platformdan bağımsız bir komut satırı aracı olan Google Cloud CLI'yi de sağlıyoruz. gcloud CLI, Test Lab'in bulut tabanlı test çözümünün mevcut CI/CD iş akışlarına entegre edilmesini kolaylaştırır.

Platformlar arası destek

Test Lab, Android ve iOS uygulamaları için test çözümleri ve Unity gibi mobil oyunlar için özel destek sağlar. Test seçenekleri, Android Espresso, UI Automator ve iOS XCTest gibi popüler test çerçevelerini kapsar. Test Lab, otomatik tarayıcımız Robo'yu kullanarak testleri herhangi bir test kodu olmadan bile çalıştırabilir.

Donanım gereksinimi yok

Test Lab, fiziksel cihazları Google veri merkezlerinde, sanal cihazları ise Google Cloud'da barındırır. Tek yapmanız gereken testlerinizi Test Lab'a göndermek ve sonuçları beklemek.

Hızlı ve güvenilir

Çok sayıda eş zamanlı test senaryosunun çalıştırılması uzun zaman alabilir ve CI/CD işlemlerini engelleyebilir. Test Lab ile testleri kolayca parçalayabilir ve birden fazla cihazda paralel olarak çalıştırabilirsiniz. Ayrıca mobil testlerde sık karşılaşılan bir sorun olan pullanmayı da tespit edebilirsiniz.

Ne öğreneceksin

  • Test yapıtları nasıl oluşturulur?
  • gcloud CLI'yi kullanarak mobil test nasıl çalıştırılır?
  • Jenkins CI nasıl kurulur
  • Jenkins CI kullanılarak mobil testler nasıl çalıştırılır?
  • Testler CI sistemleriyle büyütülecek şekilde nasıl yapılandırılır?

Bu codelab, testleri çalıştırmaya odaklanır. İlgili olmayan kavramlar ve kod blokları gözden geçirilmiş ve kolayca kopyalayıp yapıştırmanız için sağlanmıştır.

İhtiyacınız olan şey

Bir şeyleri sıfırdan oluşturmayı tercih ediyorsanız, Android testi çalıştırmak için Android Studio'ya veya iOS testi çalıştırmak için XCode'a ihtiyacınız var. Veya sadece kendinizi getirin, eserleri biz sağlayacağız.

2. gcloud CLI ile bir test çalıştırın

Bir Android uygulaması APK'sı oluşturun ve APK'yı test edin

Test Lab ile bir test çalıştırmak için, bir Android uygulaması APK'sı ve donanım cihazlarında veya emülatörlerde çalıştırılacak enstrümantal testleri içeren bir test APK'sı oluşturarak başlayın. Zaten çalışan bir kod tabanınız varsa, kendi APK'larınızı oluşturabilir veya Espresso için BasicSample'ı kullanabilirsiniz.

Gradle komutlarını kullanarak APK oluşturmak için Android SDK'yı yüklemelisiniz. Android Studio'nuz makinenizde yüklü değilse, Android Studio ve Android SDK'yı yükleyin ve Android SDK dizininizle ANDROID_HOME ortamını ayarlayın. Örneğin, ~/.bash_profile dosyanıza aşağıdaki satırı ekleyin:

export ANDROID_HOME=~/Android/Sdk # For linux
export ANDROID_HOME=~/Library/Android/sdk  # For MacOS

Ardından kodu kopyalamak ve APK'ler oluşturmak için aşağıdaki komutları çalıştırın:

git clone https://github.com/android/testing-samples.git
cd testing-samples/ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

Klonla ve oluştur komutlarını çalıştırdıktan sonra, uygulama APK'sını ve test APK'sını aşağıdaki konumlarda bulabilirsiniz:

app/build/outputs/apk/debug/app-debug.apk
app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

Alternatif olarak test ve uygulama APK'larını almak için aşağıdaki seçenekleri kullanabilirsiniz:

  • Android Studio'da APK'lar oluşturmak için Android Studio'da Test Etme bölümündeki talimatları izleyin.
  • Örnek Not Defteri uygulamasını indirin. NotePad/app/build/outputs/apk/ konumunda bulunan app-debug-unaligned.apk ikili dosyasını ve app-debug-test-unaligned.apk enstrümantasyon testleri dosyasını kullanın.

Bir iOS uygulaması için çalışan kaynak kodunuz varsa, bir XCTest yazabilir ve uygulamadan ve testlerden bir zip dosyası oluşturabilirsiniz .

Test Lab ile test yapmak için gcloud KSA'yı kullanın

Bu bölümde bir Firebase projesi oluşturacak ve yerel Google Cloud SDK ortamınızı yapılandıracaksınız. Daha fazla bilgi edinmek için bkz. gcloud CLI ile test etmeye başlama .

gcloud CLI'yi kurma

  1. gcloud CLI aracını içeren Google Cloud SDK'yı indirin.
  2. Kurulumunuzun güncel olduğunu doğrulayın:
gcloud components update
  1. Google Hesabınızı kullanarak gcloud KSA'sında oturum açın:
gcloud auth login
  1. Firebase projenizi gcloud CLI'de ayarlayın; burada PROJECT_ID , Firebase proje kimliğinizdir. Proje kimliğini, şu adlandırma kuralına uygun olan Firebase Konsol URL'sinde bulabilirsiniz: https://console.firebase.google.com/project/[PROJECT_ID]/...
gcloud config set project PROJECT_ID

Firebase projeniz yoksa Firebase Konsolu'nda bir tane oluşturun.

Yerleşik APK'ları kullanarak bir test çalıştırın

Bu bölümde, Test Lab'in varsayılan cihazı olan API düzeyi 28'e sahip Pixel 3 üzerinde bir enstrümantasyon testi gerçekleştirirsiniz. Farklı bir cihaz kullanmak istiyorsanız mevcut cihazları kontrol edin .

Uygulamayı kullanarak ve Android uygulaması APK'sı oluşturun ve APK'yı test ederek oluşturduğunuz APK'ları test edin, aşağıdaki komutu kullanarak bir Android Enstrümantasyon testi çalıştırın:

gcloud firebase test android run \
  --type instrumentation \
  --app app/build/outputs/apk/debug/app-debug.apk \
  --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

Test sonuçlarını analiz edin

Aşağıdaki seçeneklerden herhangi birini kullanarak test sonuçlarını analiz edebilirsiniz:

  • gcloud özeti - testiniz bittiğinde gcloud CLI, test sonuçlarınızın temel bir özetini yazdırır.
  • gcloud çıkış kodu - test tamamlandıktan sonra, test başarılı olursa komuttan 0 değeriyle çıkılır. Test başarısız olursa komut sıfırdan farklı bir çıkış koduyla çıkar.
  • Firebase Konsolu - gcloud CLI, Firebase Konsoluna bir bağlantı yazdırır. Bağlantı, https://console.firebase.google.com/project/PROJECT_ID/testlab/... adlandırma kuralına uygundur. Daha fazla bilgi edinmek için Tek bir test yürütmesinden sonuçları yorumlama bölümüne bakın.
  • JUnit XML dosyası - gcloud CLI aşağıdakileri yazdırır:
Raw results will be stored in your Cloud Storage bucket at [https://console.developers.google.com/storage/browser/test-lab-xxxxx/xxxxx/]

test-lab-xxxxx/xxxxx test yapılarını ve sonuçlarını depolayan Bulut Depolama paketidir. Test sonuçlarını içeren JUnit XML dosyasını bulmak için bağlantıyı açın ve blueline-28-en-portrait/test_result_1.xml adresine gidin.

3. Jenkins CI ile kurulum yapın

Bu bölümde Test Lab ile testler yürütmek için popüler bir CI sistemi olan Jenkins CI'yı kullanacaksınız. Farklı bir CI sistemi kullanmak istiyorsanız Büyük test paketlerini çalıştırmaya yönelik gelişmiş en iyi uygulamalara ve Bitrise ve Circle CI gibi diğer CI sistemlerine yönelik belgelere bakın. Flank'ı gcloud CLI'ye alternatif olarak kullanabilirsiniz.

Jenkins için gcloud CLI'yi etkinleştirin

Test Lab'ı Jenkins ile kullanabilmeniz için gerekli API'leri etkinleştirmeniz ve Jenkins'in gcloud CLI ile kimlik doğrulaması yapmak için kullanabileceği bir hizmet hesabı oluşturmanız gerekir.

Jenkins için bir Google Cloud hizmet hesabı ekleyin

Hizmet hesapları, hizmet entegrasyonlarına yönelik sınırlı hesaplardır. Bu hesaplar, belirli hizmetler için ayrıntılı kontrol sunar ve spam kontrollerine veya captcha istemlerine tabi değildir; aksi takdirde CI derlemelerinizi engelleyebilirler.

Hizmet hesabı oluşturmak için şu adımları izleyin:

  1. Google Cloud Console'da Hizmet Hesapları sayfasını açın.
  2. Hizmet hesabı oluştur'u tıklayın, bir Ad ve Açıklama ekleyin ve ardından Oluştur ve devam et'i tıklayın.
  3. Bir rol seçin açılır menüsünden Temel'i ve ardından Düzenleyici'yi seçin.
  4. Devam'ı ve ardından Bitti'yi tıklayın.

Daha sonra, Jenkins'in oluşturduğunuz hizmet hesabı olarak kimlik doğrulaması yapmak için kullanabileceği bir kimlik doğrulama anahtarı oluşturup indirirsiniz.

Hizmet hesabı anahtarını oluşturmak ve indirmek için şu adımları izleyin:

  1. Google Cloud Console'daki Hizmet Hesapları sayfasında, oluşturduğunuz hesapla ilişkili e-postayı tıklayın.
  2. Anahtarlar'ı seçin, ardından Anahtar ekle ve Yeni anahtar oluştur'u tıklayın.
  3. JSON'u seçin ve ardından Oluştur'u tıklayın.
  4. Dosyayı indirmeniz istendiğinde Tamam'ı tıklayın. Dosyayı bilgisayarınızda güvenli bir yere indirin. Bu dosyaya daha sonra Jenkins'i yapılandırırken ihtiyacınız olacak.

Hizmet hesapları oluşturma hakkında daha fazla bilgi edinmek için bkz. Hizmet hesabı oluşturma .

Gerekli Google Cloud API'lerini etkinleştirin

Cloud Testing API, Google altyapısında testler çalıştırmanıza olanak tanır. Bu API'yi, gcloud CLI ile test çalıştırmayı tamamladığınızda etkinleştirdiniz. Cloud Tool Results API, test sonuçlarınıza programlı bir şekilde erişmenizi sağlar.

  1. Google Developers Console API Kitaplığı'nı açın.
  2. Firebase Konsolunun üst kısmındaki arama çubuğuna, gerekli her API'nin ( Cloud Testing API ve Cloud Tool Results API ) adını girin. İstenen API'nin genel bakış sayfası görünür.
  3. Her bir API'nin genel bakış sayfasında API'yi Etkinleştir'i tıklayın.

Jenkins'i yükleyin ve kurun

Jenkins CI'yı Linux, macOS, Windows ve diğer birçok ortama yükleyebilir ve kurabilirsiniz. Bu codelab'in belirli ayrıntıları, dosya yollarında eğik çizgilerin (/) kullanımı da dahil olmak üzere, Jenkins CI'nın Linux'ta kurulmasına ve çalıştırılmasına özeldir.

Jenkins'i Linux veya Windows çalıştıran bir bilgisayara indirip yüklemek için Jenkins'i yükleme talimatlarını izleyin. Jenkins'i yükledikten sonra, kurulumu tamamlamak ve http://localhost:8080 adresini kullanarak Jenkins kontrol paneline erişmek için aynı Jenkins kurulum talimatlarını izleyin.

Yüklü eklentileri doğrulayın

Jenkins farklı sürüm kontrol sistemlerini destekler. Bu codelab'de önceki testi çalıştırmak için Git'i kullanırsınız. gcloud CLI'yi çalıştırma konusunda daha iyi bir deneyim elde etmek için GCloud SDK Eklentisini yüklemeniz gerekir.

  1. Jenkins kontrol panelinde Jenkins'i Yönet'e ve ardından Eklentileri Yönet'e tıklayın.
  2. Git ve GCloud SDK eklentilerini arayın ve yükleyin (henüz kurulmamışsa).

Android ve Google Cloud SDK'larınızın konumunu yapılandırın

Artık Jenkins'e Google Cloud SDK'yı ve Android SDK'yı nerede bulacağını söylüyorsunuz.

Jenkins için Google Cloud ve Android SDK'larını yapılandırmak üzere şu adımları izleyin:

  1. Jenkins kontrol panelinde Jenkins'i Yönet öğesine ve ardından Genel Araç Yapılandırması öğesine tıklayın.
  2. Google Cloud SDK bölümünde Google Cloud SDK Ekle 'yi tıklayın.
  3. Ad alanına, Google Cloud SDK örneği için hatırlanması kolay bir ad girin (örneğin, GCloud-SDK).
  4. Google Cloud SDK ana dizininize girin (örneğin, /opt/google-cloud-sdk .
  5. Kaydet'i tıklayın.
  6. Kontrol Paneli > Jenkins'i Yönet > Sistemi Yapılandır öğesini açarak Android ve Google Cloud SDK'ları için sistem genelindeki özelliklerinizi yapılandırın.
  7. Ortam değişkenleri onay kutusunu seçin ve Ekle'ye tıklayın.
  8. Ad alanına ANDROID_HOME yazın. Değer alanına Android SDK'nızın konumunu girin (örneğin, /opt/Android/Sdk .
  9. Araç Konumları onay kutusuna tıklayın ve Ekle öğesine tıklayın. Ad açılır menüsünden, Genel Araç Yapılandırmasında eklediğiniz Google Cloud SDK örneğinin adını seçin.
  10. Ana alana Google Cloud SDK'nızın konumunu girin (örneğin, /opt/google-cloud-sdk .
  11. Kaydet'i tıklayın.

Hizmet hesabı kimlik bilgilerinizi Jenkins'e ekleyin

Artık Jenkins'in gcloud CLI komutlarını doğrulayabilmesi ve başarılı bir şekilde çalıştırabilmesi için gcloud CLI hizmet hesabı kimlik bilgilerinizi Jenkins'e ekleyeceksiniz.

  1. Jenkins kontrol panelinde Jenkins'i Yönet'e ve ardından Kimlik Bilgilerini Yönet'e tıklayın.
  2. Jenkins kapsamına alınan Mağazalar bölümünde (genel) alan adı bağlantısını ve ardından Kimlik Bilgisi Ekle 'yi tıklayın.
  3. Tür açılır menüsünden özel anahtardan Google Hizmet Hesabı'nı seçin.
  4. Proje Adı alanına Firebase projenizin adını girin.
  5. JSON anahtarını seçin, ardından Gözat'a tıklayın ve hizmet hesabı anahtarınızı kaydettiğiniz konuma göz atın.
  6. Oluştur'u tıklayın.

Artık Jenkins otomatik yapınızı Test Laboratuvarı için yapılandırmaya hazırsınız.

4. Jenkins CI ile Test Laboratuvarı testlerini çalıştırın

Artık Jenkins'i kurduğunuza göre, her şeyi bir araya getirelim ve aynı testi Jenkins'i kullanarak gerçekleştirelim.

Jenkins'i, otomatikleştirilmiş derlemeler çalıştıracak ve uygulamanızdaki güncellemeler her kontrol edildiğinde testler çalıştıracak şekilde yapılandırabilirsiniz. Ayrıca Jenkins'i, derlemeleri düzenli aralıklarla çalıştıracak şekilde de yapılandırabilirsiniz. Jenkins'te yapıların yapılandırılması hakkında daha fazla bilgi edinmek için bkz. Otomatik yapıların yapılandırılması .

Jenkins projenizi oluşturun ve yapılandırın

Uygulamanızın Test Lab ile sürekli entegrasyon testini yürütmek için bir proje oluşturun.

Jenkins projesi oluşturma

  1. http://localhost:8080 adresine göz atarak Jenkins kontrol panelini açın.
  2. Jenkins kontrol panelinde Yeni Öğe'ye tıklayın.
  3. Öğe adı alanına projeniz için bir ad girin ve tek bir yapı yapılandırması kullanan bir proje oluşturmak için Serbest stil projesi'ne tıklayın.
  4. Tamam'ı tıklayın. Proje konfigürasyonlarını tamamlamak için kalan bölümleri sırayla tamamlayın.

Kaynak kodu yönetimini yapılandırma

  1. Kaynak Kodu Yönetimi sekmesinden Git'i seçin.
  2. Depo URL'si alanına https://github.com/android/testing-samples.git adresini girin.

Derleme ortamını yapılandırma

Yapı Ortamı bölümü, yapı özelliklerini yapılandırmanıza olanak tanır. Aşağıdaki adımları uygulayarak Google Cloud kimlik doğrulamasını etkinleştirin:

  1. Oluşturma Ortamı sekmesinde, GCloud SDK kimlik doğrulaması onay kutusunu seçin ve Google Cloud kurulum bilgilerinizi eklerken seçtiğiniz kurulum adını seçin.
  2. Google Kimlik Bilgileri açılır menüsünden, yapılandırdığınız hizmet hesabı kimlik bilgilerini seçin.

APK paketlerini yeniden oluşturmak için Gradle oluşturma adımlarını ekleyin

  1. Derleme bölümüne ilerleyin, Derleme adımı ekle'ye tıklayın ve ardından Kabuğu çalıştır'ı seçin.
  2. Uygulamanızın ana dizininde aşağıdaki komutları çalıştırmak için bir derleme adımı ekleyin:
cd ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

Jenkins'e gcloud CLI oluşturma adımı ekleyin

Artık gcloud CLI komut satırını kullanarak Test Lab'ı çalıştırmak için Jenkins'e bir derleme adımı eklemeye hazırsınız.

gcloud CLI derleme adımını eklemek için yeni bir Kabuk derlemesini yürütme adımı ekleyin ve aşağıdaki komutu girin:

gcloud config set project PROJECT_ID
gcloud firebase test android run \
--app ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/debug/app-debug.apk
--test ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

Proje kurulumunu tamamladıktan sonra sayfanın en altına gidin ve konfigürasyonu kaydedin. Yeni projenin ana sayfasına yönlendiriliyorsunuz.

Jenkins ile testler yapın

Artık Jenkins projesini oluşturmaya ve gcloud CLI ile çalıştırdığınız manuel teste benzer bir testi çalıştırmaya hazırsınız.

Jenkins ile test yapmak için şu adımları izleyin:

  1. Derlemeyi manuel olarak tetiklemek için Şimdi Derle'ye tıklayın.
  2. Yeni yapı > Konsol Çıkışı öğesine tıklayarak ilerlemeyi ve sonuçları kontrol edin.

Hata görmüyorsanız tebrikler! Tek tıklamayla bir proje oluşturdunuz ve Pixel 2 cihazında test çalıştırdınız. Hatalarla karşılaşırsanız Sorun Giderme bölümüne bakın.

5. Büyük test paketlerini çalıştırmak için gelişmiş en iyi uygulamalar

Eş zamanlı çok sayıda test çalıştırmak istediğinizde testlerinizin hızlı ve güvenilir bir şekilde çalıştığından emin olmak için bu en iyi uygulamaları izleyin.

Birden fazla cihaz yapılandırmasında kapsamı artırın

gcloud CLI oluşturma adımına kolayca birden fazla cihaz ekleyebilirsiniz. Ayrıca mevcut cihazları, sürümleri, yerel ayarları ve yönelimleri kontrol edip seçebilirsiniz. Örneğin, aşağıdaki komut testleri iki cihazda çalıştırır:

  • Dikey yönde API düzeyi 30 ve İngilizce yerel ayarına sahip sanal bir Google Pixel 2
  • Yatay yönde ve Fransızca yerel ayarda API düzeyi 29'a sahip fiziksel bir Samsung Galaxy S20
gcloud firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --device model=Pixel2,version=30,locale=en,orientation=portrait  \
  --device model=x1q,version=29,locale=fr,orientation=landscape

Bir gcloud CLI YAML yapılandırma dosyası kullanın

Argümanlarınızı tek bir yerden veya kaynak kontrol sisteminizle yönetmeyi tercih ederseniz, bu argümanları YAML formatlı bir argüman dosyasında belirtebilirsiniz. Bu özelliğin nasıl kullanılacağını öğrenmek için gcloud topic arg-files çalıştırın.

Paralel olarak çalışacak parça testleri

Test parçalama, bir test kümesini ayrı ayrı çalıştırılan alt gruplara (parçalara) böler. Test Lab, birden fazla cihaz kullanarak her bir parçayı paralel olarak otomatik olarak çalıştırır; bu, Test Lab'ın tüm testleri daha hızlı tamamlamasına olanak tanır. Daha fazla bilgi için bkz . Parçalamayı etkinleştirme .

Parçalamayı etkinleştirmek için gcloud beta kanalını kullanın ve gcloud CLI oluşturma adımına –num-uniform-shards veya –test-targets-for-shard işaretini ekleyin. Örneğin, testlerinizi beş yürütmeye bölmek ve paralel olarak çalıştırmak için aşağıdaki komutları çalıştırın:

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-uniform-shards 5

Kesinti tespitini etkinleştir

Mobil testler çoğu zaman hatalı olabilir. Bazen testler başarılı olurken bazen de aynı kurulumla bile başarısız olabilirler. Başarısız bir testin hatalı olup olmadığını –num-flaky-test-attempts gcloud CLI işaretini kullanarak tespit edebilirsiniz. Bu bayrak, bir veya daha fazla test senaryosunun herhangi bir nedenden dolayı başarısız olması durumunda test yürütmesinin kaç kez yeniden denenmesi gerektiğini belirtir.

Örneğin, başarısız test senaryolarını ilk başarısız çalıştırmanın ardından üç kez daha yeniden çalıştırmak için aşağıdakileri belirtin:

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-flaky-test-attempts 3

6. Tebrikler

Tebrikler, ilk Test Laboratuvarı testinizi CI sistemiyle başarıyla gerçekleştirdiniz!

Uygulama oluşturdunuz ve APK'ları test ettiniz ve gcloud CLI'yi kullanarak Test Lab ile bir enstrümantasyon testi çalıştırdınız. Aynı testi otomatikleştirmek için bir Jenkins projesi de kurdunuz.

Artık Test Lab'ı CI/CD sisteminize entegre etmenin temel adımlarını biliyorsunuz.

Sıradaki ne?

Firebase Emulator Suite'i kullanarak CI'nın nasıl kurulacağına göz atın

daha fazla okuma

Referans belgeleri