Calabash Android Test Aracı Eğitimi

⚡ Akıllı Özet

Calabash Kullanıcı arayüzünde gerçek zamanlı eylemleri yönlendiren açık kaynaklı bir kabul testi çerçevesidir. Android ve iOS uygulamaları için sade bir dil kullanarak. Cucumber Ruby adım tanımları ve cihaz tarafı test sunucusu tarafından desteklenen senaryolar.

  • 🔸 Tanım: Calabash Gerçek cihazlarda ve emülatörlerde yerel ve hibrit mobil uygulamalara karşı dokunma, metin girişi ve doğrulama işlemlerini otomatikleştirir.
  • ☑️ Dil yığını: Senaryolar Gherkin özellik dosyalarında yazılır ve bunlara karşılık gelen metotlar step_definitions içindeki Ruby dosyalarında bulunur.
  • BDD Vakfı: Davranış Odaklı Geliştirme, işletme sahiplerinin, geliştiricilerin ve test uzmanlarının herhangi bir kod yazılmadan önce davranışlar konusunda anlaşmalarına olanak tanır.
  • 🧪 Kurulum sırası: Java JDK, sonra Ruby, sonra Android StudioArdından, sürüm komutuyla doğrulanan calabash-android gem'i.
  • Yürütme akışı: APK dosyasını yeniden imzalayın, test sunucusunu oluşturun, bir cihaz bağlayın, konum belirleyicileri sorgulayın ve ardından özellik dosyalarını çalıştırın.
  • 📊 Şu anki durum: Calabash Arşivlenmiş ve bakımı yapılmıyor, bu nedenle yeni projeler genellikle bunu tercih ediyor. Appium, Espresso veya bunun yerine XCUITest.

Calabash test aracı eğitim videosu Android gösterme Cucumber mobil uygulamayı çalıştıran özellik dosyaları

Nedir? Calabash?

Calabash açık kaynaklı bir Kabuldür Test yapmak iOS için testler yazmanıza ve yürütmenize olanak tanıyan çerçeve ve Android Uygulamalar.

Bu, Ruby kullanarak testler yazılmasına olanak sağlayan otomatikleştirilmiş bir kullanıcı arayüzü çerçevesidir. Cucumber.

Calabash Mobil uygulamalar içinde düğmelere basma, metin girme, yanıtları doğrulama vb. gibi otomatik kullanıcı arayüzü etkileşimlerini etkinleştirerek çalışır. Farklı platformlarda çalışacak şekilde yapılandırılabilir. Android ve gerçek zamanlı geri bildirim ve doğrulama sağlayan iOS cihazları.

⚠️ Sürüm notu: Microsoft katkılarını sonlandırdı Calabash iOS 11'in son sürümünden sonra ve Android 8 yayın ve calabash-android deposu Şu anda kendisini bir bakımcı arayan bir proje olarak tanımlıyor. Aşağıdaki kılavuz olduğu gibi korunmuştur ve modern alternatifler son bölümde ele alınmıştır.

Neden Şimdi Calabash Otomasyon?

Herhangi bir şey kurmadan önce, altyapının sağlayacağı faydaları bakım maliyetleriyle karşılaştırmak faydalı olacaktır.

Avantajlar Dezavantajlar
Verimin/üretkenliğin artmasına yardımcı olur. Otomasyon test komut dosyalarını yazmak için yeterlilik gereklidir.
İyileştirilmiş kalite veya kalitenin artan öngörülebilirliği Test betiğinde hata ayıklamak önemli bir konudur.
Süreçlerin veya ürünlerin sağlamlığının (tutarlılığının) iyileştirilmesi. Oynatma yöntemleri durumunda test bakımı maliyetlidir.
Çıktı tutarlılığının arttırılması ve işçilik maliyetlerinin ve giderlerinin azaltılması Test komut dosyası daha fazla ekranı test ederse test veri dosyalarının bakımı zordur

Calabash ve BDD

  • Calabash is Davranış Odaklı Geliştirme (BDD)Aynı şeydir. Test Odaklı Geliştirme (TDD)Ancak API'lerin yapısını tanımlayacak testler oluşturmak yerine, uygulama davranışı belirtilir.
  • BDD, neyin inşa edilmesi gerektiğine dair ortak bir anlayış oluşturmak için birden fazla paydaşın dahil olduğu bir süreçtir.
  • BDD, doğru yazılımın oluşturulmasında ve işletme sahibinin bakış açısıyla tasarlanmasında yardımcı olur.

Aşağıdaki diyagram, bir Calabash Bu paket, en üstte iş dünyası tarafından okunabilir özellik dosyasından en altta cihaz etkileşimine kadar katmanlı bir yapıya sahiptir.

Calabash Özellik dosyalarını, adım tanımlarını ve cihaz otomasyon katmanını gösteren BDD katman diyagramı.

Nasıl kurulur? Calabash

Calabash on Windows Dört ön koşulun sırayla yüklenmesi gerekiyor. Bir sonraki adıma başlamadan önce her bölümü tamamen tamamlayın, çünkü calabash-android gem'i Ruby ve diğer ön koşulları kontrol ediyor. Android SDK kurulumu sırasında.

Bölüm I) Kurulum Java JDK – Bu kılavuza bakın – /install-java.html

Bölüm II) Ruby'yi indirip yükleyin.

Adım 1) Ruby'yi şu adresten indirin: URL https://rubyinstaller.org/downloads

RubyInstaller indirme sayfası, mevcut Ruby sürümlerini listeliyor. Windows

Adım 2) .exe dosyasını açın ve ekrandaki talimatları izleyin. Kurulum tamamlandığında aşağıdaki ekranı göreceksiniz. Bitir'e tıklayın.

Ruby kurulum sihirbazının tamamlanma ekranında "Bitir" düğmesi vurgulanmış halde gösteriliyor.

Ruby açıkken Komut İstemi'ni başlatın Windows 10 ve Komutun altına yazın.

ruby -v

Konsol, aşağıda gösterildiği gibi kurulu yorumlayıcı sürümünü yazdırır.

Komut İstemi'nde yüklü Ruby sürüm numarasını gösteren pencere.

Bölüm III) İndirme ve yükleme Android

Adım 1) İndir Android Studio at https://developer.android.com/studio

Android Studio Kurulum sihirbazı çalışıyor Windows yükleme sırasında

Adım 2) .exe dosyasını açın, ekrandaki talimatları izleyin ve kurulumu tamamlayın. İşlem tamamlandığında "Bitir" düğmesine tıklayın.

Android Studio Kurulum tamamlandı ekranında "Bitir" düğmesi bulunmaktadır.

Bölüm IV) Kurulum Calabash Android

Adım 1) Konsola `gem install calabash-android` yazın. Kurulum başlayacak ve tamamlanması biraz zaman alacaktır.

Calabash-android gem'i ve bağımlılıkları yüklenirken konsol çıktısı

Adım 2) Kurulum tamamlandıktan sonra calabash-android version yazın.

Konsol, kurulu calabash-android gem sürümünü doğruluyor.

Çalışma Calabash

Gem yüklendikten sonraki adım, framework klasörünü bulmak ve içerdiği iskeleti anlamaktır.

“calabash-android-0.9.0” klasörünü açın. C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0 yolunda bulunur. Klasör adları makinenize yüklediğiniz ruby/calabash sürümüyle senkronize olarak değişecektir.

Özellik iskeleti klasörünü açın. Bu temel çerçeveye dikkat edin.

Calabash Destek ve adım tanımları dizinlerini içeren özellik iskeleti klasörü

  • *.feature dosyası otomatikleştireceğimiz senaryoları içerir.
  • Özellik dosyasının kullandığı yöntem “step_definitions” klasörü içindeki *.rb dosyasına yazılmıştır.
  • Ortak yöntemler, ortam kurulumu, uygulama kurulumu ve kancalar “support” klasörüne yerleştirilmelidir.

İstifa et ve uygulamayı geliştir

  • Calabash-android resign *.apk
  • Calabash-android build *.apk

İmzayı yenilemek, geliştirici imzasını bir hata ayıklama anahtarıyla değiştirir, böylece test sunucusu uygulamayı izleyebilir ve derleme adımı, aşağıdaki konsol çıktısında gösterildiği gibi, bu test sunucusunu oluşturur.

Calabash-android yeniden imzalama ve derleme komutlarının test sunucusu oluştururken verdiği konsol çıktısı.

Cihazı sisteme bağlayın / Emülatörü açın

Ekli cihazı kontrol edin. Komut yazın

adb devices

Bağlı cihazlar listesi görüntülenmelidir. Cihaz eksikse, USB hata ayıklama ve eşleştirme adımları tekrarlanmalıdır. ADB Connect kılavuzu Vakaların çoğunu çözüyor.

adb devices komut listesi (ekli) Android seri numarasına göre cihaz

Eleman Bulucu Nasıl Bulunur?

  • Konsolu açın. Komutu yazın.
    calabash-android console "APK Path"
    start_test_server_in_background
  • Yukarıdaki komut uygulamayı cihazda başlatır. Element bulucuyu bulmak için aşağıdaki komutu kullanın.
    query "*"

Bu, mevcut ekrandaki tüm öğe konumlandırıcılarını gösterecektir. Görsel denetleyiciyi tercih eden test uzmanları, aynı hiyerarşiyi aşağıdaki komutlarla da kontrol edebilirler. uiautatorviewer.

Calabash Geçerli uygulama ekranı için sorgulanan öğe ağacını konsola yazdırıyor.

Calabash Proje Yapısı ve Önceden Tanımlanmış Adımlar

Gem klasörünü elle kopyalamak yerine, çerçeve sizin için çalışan bir proje oluşturabilir. Proje dizininizde jeneratörü çalıştırmak standart bir proje oluşturur. Cucumber her birinin düzeni Calabash süit beklentileri.

calabash-android gen

Oluşturulan ağaç, bir BDD paketinin üç temel unsurunu birbirinden ayırır:

  • özellikler/ — Gherkin senaryolarından biri .özellik Kullanıcı yolculuğu başına dosya.
  • özellikler/adım_tanımları/ — Her Gherkin satırına karşılık gelen Ruby yöntemleri, bunlara dahil olan calabash_steps.rb dosyası da dahildir.
  • özellikler/destek/ — Her senaryo için uygulamayı kuran, başlatan ve kapatan ortam yapılandırması ve bağlantı noktaları.

Paket içeriğindeki calabash_steps.rb dosyası ilk bakışta göründüğünden daha önemlidir. Hazır İngilizce adımlar içeren geniş bir set sunar; böylece ilk senaryo, tek bir özel yöntem yazılmadan önce düğmelere basabilir, metin girebilir ve görünür dizeler üzerinde doğrulama yapabilir. Özel adımlara yalnızca bir yolculuk bu hazır ifadelerin ötesine geçtiğinde ihtiyaç duyulur.

Proje düzeyindeki iki ayarı önceden bilmekte fayda var. Ekran görüntüleri varsayılan olarak geçerli çalışma dizinine kaydedilir ve SCREENSHOT_PATH ortam değişkeni bunları başka bir yere yönlendirir; bu da paylaşımlı bir makinede derleme dosyalarının düzenli kalmasını sağlar. Sistem diyaloglarıyla veya başka bir uygulamayla etkileşim kurmak için, start_test_server_in_background(with_uiautomator: true) ile başlatılan UIAutomator2 arka ucuna ihtiyaç duyulur.

Yeni Komut Dosyaları Oluşturma

Özellik dosyasını ve aşağıdaki satırları açın

Giriş özelliği dosyası, Gherkin senaryosunun adımlarını gösteren bir düzenleyicide açıldı.

Feature: Login feature
  Scenario: As a valid user I can log into my app
    When I press "Login"
    And I enter my username
    And I enter my password
    Then I see "Welcome to coolest app ever"

Adım Tanımı dosyasını açın ve yöntemi *.rb dosyasında tanımlayın.

Ruby adım tanımlama dosyası haritasıping bir Gherkin hattı Calabash öğe sorgusu

Given /^I am on the login windows$/ do
   wait_for(:timeout =>100) { element_exists("* id:'loginInput;")}
   check_element_exists("* id:'loginInput;")
end

Test projesini yürütün

Test projesini yürütmek için aşağıdaki komutu kullanın

calabash-android run "APK Path" "feature file Path" --tags "tag name"

Cucumber Her adım çalışırken çıktısını yazdırır ve başarılı bir çalıştırma, burada gösterilen senaryo ve adım toplamlarıyla sona erer.

Calabash Gherkin'in her adımının cihaz üzerinde nasıl yürütüldüğünü gösteren çalıştırma çıktısı.

Calabash Konsol, yürütme sonrasında başarılı senaryoları ve adım sayılarını özet olarak raporluyor.

ortak Calabash Hatalar ve Nasıl Düzeltilir

İlk çalıştırmada yaşanan hataların çoğu, senaryonun kendisinden değil, test sunucusunun bağlı olduğu paketleme ve izin kurallarından kaynaklanır. Aşağıdaki tablo, en sık bildirilen belirtileri belgelenmiş nedenleriyle eşleştirir.

Semptom Muhtemel neden ve çözüm
Test başladığı anda uygulama çöküyor. APK dosyasında, test sunucusunun komutları kabul etmesi için gereken android.permission.INTERNET izni eksik. Bu izni tanımlayın. AndroidManifest.xml dosyasını değiştirin ve yeniden derleyin.
Düğmeler ve metinler dokunmalara yanıt vermiyor. Hedef SDK sürümü belirtilmemiş. Uygulamanın derlendiği SDK düzeyini belirten bir uses-sdk girdisi ekleyin.
Test sunucusu uygulamaya bağlanamıyor. APK dosyası hata ayıklama anahtarıyla yeniden imzalanmadı. Yeniden imzalama komutunu çalıştırın, ardından çalıştırmadan önce tekrar derleyin.
Çalışma zamanında hiçbir cihaz listelenmiyor. USB hata ayıklama kapalı veya sürücü eksik. Öncelikle seri numarasının adb devices çıktısında göründüğünden emin olun.
Adımlar, tanımlanmamış adım hatasıyla başarısız oluyor. Gherkin ifadesi, step_definitions'daki hiçbir normal ifadeyle eşleşmiyor. Önerilen kod parçasını kopyalayın. Cucumber Yazdırma işlemlerini gerçekleştirir ve uygular.

İki manifest girdisi ilk iki satırı düzeltir. APK'yı yeniden imzalamadan önce bunları ekleyin.

<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:targetSdkVersion="SDK_VERSION" />

Zaman aşımı hataları genellikle işlevselden ziyade çevreseldir. Yavaş bir emülatör, soğuk bir uygulama başlangıcı veya arka plan senkronizasyonu, ekranın bekleme süresini aşmasına neden olabilir; bu nedenle, aslında doğru olan bir adımı yeniden yazmadan önce zaman aşımını artırın.

Is Calabash Hâlâ Bakımı Yapılıyor mu? Modern Mobil Test İçin Alternatifler

Calabash Artık aktif olarak geliştirilmiyor. Microsoft iOS 11'in son sürümünü destekledikten sonra katkıda bulunmayı bıraktım. Android 8 sürüm yayınlandı ve proje artık bakımcısı olmayan, arşivlenmiş bir açık kaynak kod tabanı haline geldi. Mevcut paketler hala eski cihazlarda çalışıyor, ancak desteklenen bir çerçeve üzerinde yeni çalışmalara başlanmalı.

iskelet Platform En uygun
Appium Android ve iOS Çapraz platform paketleri Java, PythonRuby veya JavaSenaryo ve bunun en yakın alternatifi Calabash takım.
Espresso Android bir tek Kotlin ile yazılmış hızlı işlem içi testler veya Java Uygulama geliştiricilerinin kendileri tarafından.
XCUITest Yalnızca iOS Yerli Xcode emekli olanın yerine geçen, desteklenen süitler. UIAutomation çerçevesi.
Maestro ve Detoks Android ve iOS Yeni açık kaynak projeleri, hata toleransı ve React Native uygulamalarına yönelik çözümler sunmayı hedefliyor.

BDD alışkanlığı sorunsuz bir şekilde aktarılıyor. Gherkin özellik dosyaları aynen kalıyor ve yalnızca adım tanımlama gövdeleri değişiyor, çünkü Cucumber Sürücünün içinde değil, üstünde yer alır. Geçiş yapan ekipler genellikle özellik dosyalarını korur ve Ruby adımlarını bunlara göre yeniden yazar. Appiumve aynısını tekrar kullanın mobil test cihaz matrisi ve otomasyon testi Zaten çalıştırdıkları işlem hattı.

SSS

Evet. Ayrı bir calabash-ios gem'i, iOS uygulamalarını aynı Ruby ve Cucumber katman. Aynı şekilde kullanımdan kaldırılma durumunu paylaşıyor. Android gem, bu nedenle mevcut iOS çalışmaları XCUITest veya başka bir araçla daha iyi yürütülebilir. Appium.

Makine öğrenimi modelleri artık bozuk konum belirleyicileri otomatik olarak onarıyor, çalışma geçmişlerini karşılaştırarak istikrarsız senaryoları işaretliyor ve çökme raporlarını kümelendirerek en zararlı hataların önce ortaya çıkmasını sağlıyor. Neyin doğrulanacağına dair karar yine de test uzmanına aittir.

Copilot, wait_for bloğunun satır sonu gibi tekrarlayan kısımları iyi bir şekilde taslak haline getiriyor.ping Bu bir öğe sorgusudur. Uygulamanızın öğe tanımlayıcılarını bilemez, bu nedenle oluşturulan her adımı canlı bir sorgu sonucuyla doğrulamak üzere bir taslak olarak değerlendirin.

Cucumber Bu, Gherkin'i okuyan ve Ruby yöntemlerini çağıran genel bir BDD çalıştırıcısıdır. Calabash Bu yöntemlerin çağırdığı mobil otomasyon kütüphanesidir. Cucumber Hangi programların çalışacağına karar verir; Calabash Dokunma işlemini, metin girişini ve doğrulama işlemini gerçekleştirir.

Ekran görüntüleri varsayılan olarak geçerli çalışma dizinine yazılır ve her çalıştırmada sırayla adlandırılır. Çalıştırmadan önce SCREENSHOT_PATH ortam değişkenini ayarlamak, bunları seçilen bir klasöre yönlendirir; bu da sürekli entegrasyon yapıtlarını kaynak koddan ayrı tutar.

Hayır. Calabash Derlenmiş bir APK'yı araçlarla destekler, bu nedenle yeniden imzalama adımı mevcuttur. Kaynak erişimi, kararlı öğe tanımlayıcıları eklemenize yardımcı olur, ancak çerçevenin kendisi yalnızca yeniden imzalama ve araçlama yapmasına izin verilen bir derlemeye ihtiyaç duyar.

Evet. Çünkü yürütme tek bir komut satırı çağrısı olduğundan, APK oluşturulduktan sonra herhangi bir derleme sunucusu bunu çağırabilir. Jenkins Bu işlem genellikle APK dosyasını yeniden başlatır, bir emülatör çalıştırır, etiketlenmiş özellikleri çalıştırır ve raporları arşivler.

Gherkin özellik dosyalarını değiştirmeden bırakın ve yalnızca adım tanımlama gövdelerini aşağıdakilere göre yeniden yazın. Appium İstemci tarafında, öğe sorguları konum belirleme stratejilerine dönüşür ve uygulamayı kuran kancalar, sürücü kurulumunda istenen özellikler haline gelir.

Bu yazıyı şu şekilde özetleyin: