Calabash ile Android ve iOS UI Testi
Yayınlanan: 2022-03-11Test, herhangi bir mobil uygulama geliştirme sürecinin önemli bir parçasıdır. Bu tür testleri otomatikleştirseniz de yapmasanız da, aklı başında hiçbir geliştirici, uygulamalarını test etmedikçe çalışmalarının tamamlanmış olduğunu düşünmez.
İyi test edilmiş bir uygulama genellikle birden fazla test adımından geçer: Birim testi, entegrasyon testi, kabul testi vb. Uygulamanız büyüdükçe test etmenin önemi artar ve testte otomasyon bir zorunluluk haline gelir.
Web gibi diğer platformlar, test mekanizmaları ve çerçeveler açısından önemli ölçüde ilerlemiş olsa da, mobil alan geride kalmıyor. Bu makalede, sade İngilizce talimatlar kullanarak Android ve iOS uygulamalarınız için kullanıcı arayüzünü otomatikleştirmek için Calabash'ı nasıl kullanabileceğinizi ve bunları mümkün olduğunca acısız bir şekilde kabul testini nasıl yapabileceğinizi öğreneceksiniz.
UI Testi Ne Hakkında?
Uygulamalarınızı manuel olarak test ediyorsanız, muhtemelen aynı görevleri tekrar tekrar gerçekleştirerek zamanınızın büyük bir kısmını boşa harcıyorsunuzdur. Kodda bazı değişiklikler yapar, uygulamayı derler, bir cihazda veya öykünücüde çalıştırır ve beklendiği gibi çalışıp çalışmadığını anlamak için uygulamayla uğraşırsınız.
UI testini otomatikleştirerek, aynı manuel adımları otomatik olarak gerçekleştirebilirsiniz. Uygulamanızın boyutu uygunsa, bu size çok zaman kazandırabilir ve uygulamanızı utanç verici hatalarla, özellikle de gerileme hatalarıyla dolup taşmaktan kurtarabilir.
“Kulağa harika geliyor” diyorsunuz, ancak bunu Android veya iOS uygulamanız için nasıl yapıyorsunuz?
Android ve iOS için UI Test Çerçeveleri
Android ve iOS için resmi belgeleri okursanız, resmi IDE'lerinde UI testleri yazmanızı ve çalıştırmanızı önerirler. Android için bu Android Studio ve iOS için Xcode'dur.
Resmi belgeler, test için belirli çerçeveler önerecek kadar ileri gider. Resmi Android belgeleri, Android UI test çerçevesi olan Espresso ile ilgili bazı konuları kapsar. Benzer şekilde Apple, XCTest çerçevesinin kullanılmasını önerir.
Ve UI testleri üzerinde ciddi bir şekilde çalışacaksanız, Espresso'nun Google tarafından bakımı yapıldığından ve Android Support Repository'nin bir parçası olduğu için mantıklı olan bu önerileri takip ediyor olabilirsiniz. Espresso'nun gelecekte Google'ın Android için sunacağı tüm yeni özellikleri desteklemesi çok muhtemel. Aynı şeyi iOS için XCTest çerçevesi için de söyleyebilirsiniz.
Bununla birlikte, otomatik testin sayısız faydasına rağmen, birçok geliştiricinin bunları hiç yazmadığını akılda tutmakta fayda var.
Derinlerde bir yerde test otomasyonlarının farkında olan her geliştirici, bunun harika bir fikir olduğunu bilir. Ancak, konu oturup bu testleri yazmaya geldiğinde, birçok geliştirici zaman ayırmaya değip değmeyeceğini sorgulamaya başlar, çünkü elle "düğmeye dokunma", "bu düğmeye dokunma" için bir kod yazmaktan çok daha hızlı bir işlemdir. otomatik olarak. Bazen uygulamayı denemek için sabırsızlanan müşteriler ve yöneticiler de yardımcı olmuyor.
Bu noktada birçok geliştirici, mevcut özellikler için otomatikleştirilmiş UI testleri yazmak yerine uygulamanın yeni özellikleri üzerinde çalışmaya devam etmenin daha iyi olduğuna karar verir.
Uygulama büyüdüğünde, uygulamayı her güncellediğinizde "bu düğmelere dokunmak" giderek daha fazla zaman alır.
Peki ya UI testini kolaylaştıran ve uygulamalarınız için UI testleri yazmamanız için size herhangi bir mazeret vermeyen bir çerçeve olsaydı?
Calabash ile tanışın.
Calabash: Mobil Uygulamalar için Otomatik Kabul Testi
Yaklaşık bir yıl önce, yazılım geliştirici olmayan kişiler için kullanımı kolay olacak bir test çerçevesi aramaya başladım. Ve işte o zaman Calabash'ı buldum.
Xamarin ekibi tarafından geliştirilen ve sürdürülen bu açık kaynak test çerçevesi, hem Android hem de iOS için çalışır. Mobil uygulamalar için otomatik kabul testleri yazmanıza ve yürütmenize olanak tanır.
Kabul testleri genellikle uygulamanızın iş gereksinimlerini karşılayıp karşılamadığını belirleyen sistem testlerinden sonra gelir. UI düzeyinde çalıştığı göz önüne alındığında, bu, UI test otomasyon çerçevesi seçimimiz kadar iyi çalışır.
Calabash, Espresso veya XCTest'in yaptığı gibi uygulamanızla etkileşime girebilir. Ancak burada Calabash'ı mükemmel bir seçim yapan şey, Salatalık'a verdiği destek.
Salatalık, sade İngilizce ile yazılmış otomatik testleri çalıştırabilen bir araçtır (isterseniz, başka herhangi bir sade dili kullanmak için ayarlayabilirsiniz). Bu nedenle, Cucumber'da otomatik testler yazmak için test cihazının Java, Objective-C veya başka bir programlama dili bilmesine gerek yoktur.
Su Kabağı'nı Kene Yapan Nedir?
Calabash çerçevesi, Android ve iOS uygulamalarıyla etkileşime girebilen kitaplıklardan oluşur. Gerçek cihazlarda çalıştırılabilir. Böylece test cihazının manuel olarak yaptığı şeyleri yapabilir.
GitHub'da Calabash'ı mümkün kılan iki farklı proje var:

su kabağı-android - Android için
su kabağı-ios - iOS için
Calabash, Ruby tabanlı herhangi bir test çerçevesiyle çalışabilir. Bu yazıda, Calabash için test yazmanın en popüler ve kullanışlı yolu olan Salatalığı ele alacağız.
Devam etmeden önce, makalenin geri kalanını takip ettiğiniz gibi Calabash'ı denemek istiyorsanız, makinenizde Ruby'nin kurulu olduğundan emin olun. Ayrıntılı kurulum talimatlarını burada bulabilirsiniz.
Ardından, yukarıdaki GitHub bağlantılarını izleyerek favori platformunuz için Calabash'ı yükleyin.
Calabash Üzerine İlk Testinizi Yazma
Calabash üzerinde test yazmak oldukça kolaydır. Bir iOS uygulaması için basit bir testin nasıl göründüğünü görelim:
Feature: User Login Scenario: Unsuccessful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "tstuser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Username you entered is incorrect" Scenario: Successful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "testeruser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Hey testeruser!"
Burada bir uygulama yanlış kullanıcı adı ve şifre ile test ediliyor ve ardından doğru kullanıcı adı ve şifre ile test ediliyor. Test, uygulamanın ilk senaryoda oturum açmada başarısız olmasını, ancak ikinci senaryoda başarılı olmasını bekler.
Gerektiği kadar senaryo oluşturabilirsiniz ve tek yapmanız gereken adımları/talimatları basit İngilizce cümlelere bölmek. Tıpkı bir hikaye yazacağınız gibi!
Davranışa dayalı geliştirme (BDD) hakkında bilgisi olan herkes buna zaten aşina olacaktır.
Kabak Nasıl Çalışır?
Test cihazının kullandığı adımların arkasında neler olup bittiğini görmek için projeyi GitHub'da açıp aşağıdaki dosyayı kontrol edebilirsiniz:
calabash-cucumber/features/step_definitions/calabash_steps.rb
Aşağıdaki adımın tanımını görelim:
When I enter "testeruser" into the "Username" field
Then /^I enter "([^\"]*)" into the "([^\"]*)" field$/ do |text_to_type, field_name| touch("textField marked: '#{field_name}'") wait_for_keyboard keyboard_enter_text text_to_type sleep(STEP_PAUSE) end
Ruby kodunun bu küçük parçası belirli bir alanı arar, ona dokunur, klavyenin görünmesini bekler, text_to_type
değişkeninden metni yazar ve bir sonraki adıma geçmeden önce biraz bekler.
Adımın ilk kelimesi “Verildi”, “Ne zaman”, “Sonra”, “Ve” veya “Ama” olabilir. Hangi anahtar kelimeyi kullanacağınız önemli değil. Hikayeyi daha net hale getirmek için bunlardan herhangi birini kullanabilirsiniz.
Özel Adımlar Nasıl Eklenir
Calabash'ta henüz uygulanmayan bir adıma ihtiyacınız varsa, kendiniz yazabilirsiniz. Sözdizimi, önceden tanımlanmış adımlarda olduğu gibi tamamen aynıdır.
Örneğin, bir test cihazının giriş alanına alan adı yerine yer tutucuya göre erişmesi gerekiyorsa:
Then /^I enter "([^\"]*)" into the field with placeholder "([^\"]*)"$/ do |text_to_type, placeholder| touch("textField placeholder:'#{placeholder}'") wait_for_keyboard() keyboard_enter_text text_to_type sleep(STEP_PAUSE) end
Bu adım tanımı öncekiyle hemen hemen aynı, ancak alana alan adı yerine yer tutucu ile erişiyorsunuz. Uygulamanızın nasıl göründüğü göz önüne alındığında, bu, test kullanıcısı için işleri daha da kolaylaştırabilir.
Ve geliştirici için de kolaydır. Geliştirici, adımı bir kez uygular ve ardından test eden kişi, ne zaman ihtiyaç duyarsa onu kullanır. Ayrıca, kendi özel adımlarınızı uygulamak için çok fazla Ruby bilmenize gerek yok.
Kullanabileceğiniz Ruby fonksiyonlarını burada bulabilirsiniz:
http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber
Xamarin Test Bulutu
Mobil uygulamaları test ederken bir zorluk daha var. Onları mümkün olduğunca çok cihazda test etmelisiniz, çünkü çok fazla cihaz ve çok fazla işletim sistemi sürümü var.
Xamarin Test Cloud'un çok yardımcı olduğu yer burasıdır. Bulutta yaklaşık 2.000 gerçek cihaz var ve iyi haber şu ki, Calabash testlerini destekliyor.
Sizi tekrar eden işler yapmaktan kurtararak zamandan tasarruf etmenize yardımcı olan aynı Calabash testleri artık uygulamanızı birçok gerçek cihazda test etmek için kullanılabilir.
UI Testleri Yazmaya Başlayın
Calabash, uygulamanızın ihtiyaç duyduğu test çözümü olsun, getirdiği avantajlarla, mobil uygulamalarınız için otomatik UI testleri yazmak söz konusu olduğunda mazerete yer bırakmaz. Uygulamanız belirli cihaz özelliklerine (örneğin kamera) büyük ölçüde güveniyorsa su kabağı yetersiz kalabilir, ancak yine de uygulamaların çoğu için test yazmayı çok daha kolay hale getirir.