Automation Framework ile Android APP Test Eğitimi

İçindekiler:

Anonim

Neden Android Testi?

Android, dünyadaki en büyük işletim sistemidir. Aynı zamanda, Android parçalanmış durumda. Uygulamanızın uyumlu olması gereken tonlarca cihaz ve Android sürümü vardır.

Tasarım ve uygulamaya ne kadar zaman ayırdığınız önemli değil, hatalar kaçınılmazdır ve hatalar ortaya çıkacaktır.

Bu eğitimde öğreneceksiniz-

  • Neden Android Testi?
  • Android Test Stratejisi
    • Birim testleri
    • Entegrasyon testleri
    • Operasyonel testler
    • Sistem testleri
  • Otomatik ANDROID TESTİ
    • Android test çerçevesi
    • Robolectric test çerçevesi
  • Android Testinin Efsaneleri
  • Android Testindeki en iyi uygulamalar

Android Test Stratejisi

Doğru bir android test stratejisi aşağıdakileri içermelidir

  1. Ünite testi
  2. Entegrasyon testi
  3. Operasyonel Test
  4. Sistem Testi

Birim testleri

Birim Testleri, bir yöntem veya bir sınıf gibi bir atomik kaynak kodu birimini doğrulamak için tasarlanmış bir veya daha fazla program setini içerir.

Android platformu önceden entegre edilmiş Junit 3.0 çerçevesi ile birlikte gelir. Birim Testini otomatikleştirmek için açık kaynaklı çerçevedir. Android Testing Framework, geliştiricinin etkili birim test programı yazması için güçlü bir araçtır.

Android ve JUnit çerçevesinin entegrasyonu

Birim Testine bir ek, Kullanıcı Arayüzü (UI) testleridir. Bu testler, hedef uygulamanızın UI bileşenleriyle ilgilidir. UI testleri, uygulamanızın cihazdaki kullanıcı eylemlerinin sırasına yanıt olarak doğru UI çıktısını döndürmesini sağlar.

Uygulamada ortak kullanıcı arayüzü eylemleri

Cihazda kullanıcı arayüzü testlerini gerçekleştirmenin yaygın yolu Android Instrumentation'dır. Ancak bunun performans sorunları var. Android'de UI testi yapmak için en iyi araçlardan biri Robotium'dur.

Entegrasyon testleri

Entegrasyon Testinde, tüm birim test edilen modüller birleştirilir ve doğrulanır. Android'de entegrasyon testleri genellikle Hizmet testi, Etkinlik testi, İçerik Sağlayıcı testi vb.

Android'de entegrasyon testi türleri

Troyd, Robolectric, Robotium gibi Android için entegrasyon testi yapmak için kullanılan birçok test çerçevesi vardır.

Operasyonel testler

  • Operasyonel ayrıca Fonksiyonel Testler veya Kabul Testleri olarak da adlandırılır. Uygulamanın eksiksizliğini ve doğruluğunu kontrol etmek için tasarlanmış üst düzey testlerdir.
  • Android'de FitNesse, hedef uygulama için operasyonel testler yapmayı kolaylaştıran açık kaynaklı bir çerçevedir.

Sistem testleri

Sistem Testinde sistem bir bütün olarak test edilir ve bileşenler, yazılım ve donanım arasındaki etkileşim kontrol edilir.

Android'de Sistem Testi normalde şunları içerir:

  • GUI testleri
  • Kullanılabilirlik testleri
  • Performans testleri
  • Stres testleri

Yukarıdaki listede, Performans Testine daha fazla odaklanılmıştır. Android'de performans testi yapmak için Traceview gibi araçları kullanabilirsiniz. Bu araç, uygulamanızda hata ayıklamanıza ve performansının profilini belirlemenize yardımcı olabilir.

Otomatik ANDROID TESTİ

Android parçalanmış olduğundan, çok sayıda cihaz üzerinde test yapılması gerekir. Ama bu aynı zamanda paraya da mal olacak. Otomatik Android Testi, maliyetleri düşürmeye yardımcı olabilir

Otomatik android testinin faydaları

  • Test durumlarını yürütme süresini kısaltın
  • Geliştirme sürecinizin üretkenliğini artırın
  • Erken hata tespiti, yazılım bakımı maliyetlerinden tasarruf edin
  • Uygulamadaki hataları hızlı bir şekilde bulun ve düzeltin
  • Yazılımın kalitesini sağlayın

Aşağıdaki 2 çerçeveyi inceleyeceğiz

  • Android Test çerçevesi
  • Robolectric Testing çerçevesi

Android test çerçevesi

Android uygulaması için standart test çerçevelerinden biri Android test çerçevesidir . Android SDK araçlarıyla iyi entegre edilmiş, güçlü ve kullanımı kolay bir test çerçevesidir.

Android test çerçevesi mimarisi

  1. Uygulama paketi , test edilmesi gereken hedef uygulamanızdır
  2. InstrumentationTestRunner , hedef uygulamada test senaryosu yürüten Test Senaryosu çalıştırıcısıdır. O içerir:

2a) Test araçları: Test oluşturma için bir SDK araçları. Eclipse IDE'ye entegre edilirler veya komut satırı olarak çalışırlar.

2b) MonkeyRunner: Android kodu dışında bir Android cihazı veya emülatörü kontrol eden program yazmak için API'ler sağlayan bir araçtır.

  1. Test paketi , test projeleri şeklinde düzenlenmiştir. Bu paket, adlandırma kuralını izler. Test edilen uygulamanın paket adı "com.mydomain.myapp" ise Test paketi "com.mydomain.myapp.test" olmalıdır. Test paketi aşağıdaki gibi 2 nesne içerir:

3a) Test senaryosu sınıfları: hedef uygulamada yürütülecek test yöntemlerini içerir.

3b) Sahte nesneler: Test senaryoları için örnek girdi olarak kullanılacak sahte verileri içerir.

Android Test Vakası Sınıfları

AndroidTestCase sınıf diyagramı

  1. TestCase , JUnit testini çalıştırmak için JUnit yöntemlerini içerir
  2. TestSuite , test senaryoları kümesini çalıştırmak için kullanılır
  3. InstrumentationTestSuite , enstrümantasyonu çalıştırmadan önce InstrumentationTestCase'e enjekte eden bir TestSuite'tir.
  4. InstrumentationTestRunner , hedef uygulamada test senaryosu yürüten test durumu çalıştırıcısıdır.
  5. AndroidTestCase , JUnit TestCase'i genişletir. Etkinlik Bağlamı gibi kaynaklara erişmek için yöntemler içerir.
  6. ApplicationTestCase , kontrollü bir ortamda Uygulama sınıflarını doğrular.
  7. InstrumentationTestCase , örneğin uygulamanın UI çıktısını doğrulamak için hedef uygulamanın belirli bir özelliğini veya davranışını doğrular.
  8. ActivityTestCase , Uygulama Aktivitelerinin test edilmesini destekleyen temel sınıftır.
  9. ProviderTestCase , tek ContentProvider'ı test etmek için kullanılan bir sınıftır.
  10. ServiceTestCase , test ortamında Hizmet sınıflarını test etmek için kullanılır. Aynı zamanda Hizmetin yaşam döngüsünü de destekler.
  11. SingeLauchActivityTestCase , bir InstrumentationTestCase ile tek bir Activity'i test etmek için kullanılır.
  12. ActivityUnitTestCase , izole edilmiş tek aktiviteyi test etmek için kullanılır.
  13. ActivityInstrumentationTestCase2 JUnit TestCase sınıfını genişletir. Enstrümantasyon ile sizi hedef uygulamaya bağlar. Bu sınıfla, uygulamanın GUI bileşenine erişebilir ve UI olayını (tuş vuruşu veya dokunma olayı) UI'ye gönderebilirsiniz.

Aşağıda ActivityInstrumentationTestCase örneğidir. Hesap Makinesi uygulamasının UI işlemini doğrular, UI çıktılarının doğruluğunu kontrol eder.

ActivityInstrumentationTestCase2 test örneği

Robolectric test çerçevesi

Cihaz veya emülatör ile Android Test çerçevesini kullanarak test etmek zordur. Test oluşturma ve çalıştırma yavaştır ve çok fazla geliştirme çabası gerektirir. Bu sorunu çözmek için başka bir seçenek daha var - Robolectric test çerçevesi.

Robolectric framework, bir cihaza veya bir emülatöre ihtiyaç duymadan Android testlerini doğrudan JVM üzerinde çalıştırmanıza olanak tanır .

Robolectric'in gelişmiş özellikleri

Robolectric Test Case Sınıfları

Robolectric'in Çalışması

  • Yukarıda gösterildiği gibi, Robolectric aşağıdaki eylemleri gerçekleştirebilir:
  • Kaydolun ve bir Shadow sınıfı oluşturun
  • Android sınıfının yüklenmesini engelleyin
  • Android sınıfının yöntem gövdelerini geçersiz kılmak için javaassist kullanır
  • Shadow nesnesini Android sınıfına bağlama
  • Bu, test edilen kodun Android ortamı olmadan yürütülmesine izin verir.

Diğerleri test çerçevesi

Yukarıda belirtilen çerçevelerin test edilmesinin yanı sıra, aşağıdakiler gibi birçok başka test çerçevesi de vardır:

  • Android Junit Report, Android için diğer araçlarla entegrasyon için XML raporları oluşturan özel bir enstrümantasyon testi çalıştırıcısı.
  • Expresso
  • Appium

Android Testinin Efsaneleri

Birçok işletme, yaygın yanlış anlamalara dayanan android Test stratejileri geliştirir. Bu bölüm, Android testlerinin birkaç popüler mitini ve gerçekliğini incelemektedir.

Efsane 1: Tüm Android cihazlar aynıdır… emülatörlerde test etmek yeterlidir

Basit bir örnekle başlayalım. Bir uygulama, öykünücüler üzerinde mükemmel çalışır, ancak bazı gerçek cihazlarda, yürütme sırasında çöküyor

Gerçek cihazda yürütülürken uygulama çöküyor

Mobil testiniz için emülatörler yeterli değildir . Uygulamanızı gerçek cihazlarda test etmelisiniz.

Efsane # 2: Bazı yaygın cihazlarda test etmek yeterlidir

  • Farklı cihazlarda, farklı cihazlarda farklı donanım, ekran boyutları, bellek vb. Olduğundan uygulamanız farklı görünür. Uygulamanızı farklı cihazlarda, işletim sistemi sürümlerinde, taşıyıcı ağlarda ve konumlarda test etmeniz gerekir.

Efsane 3: Lansmandan hemen önce keşif testi yeterlidir

  • Genel olarak tüm testlerde, test senaryolarını tasarlar ve uygularız. Ancak Keşif testinde, test tasarımı ve yürütme hepsi birlikte yapılacaktır.
  • Keşif testinde plan ve hazırlık yoktur, o zaman test uzmanı yapmak istediği testleri yapar. Bazı işlevler tekrar tekrar test edilirken, bazı işlevler birlikte test edilmeyecektir.

Efsane 4: Uygulamada bazı hatalar varsa, kullanıcılar anlayacaktır

  • Uygulama çalışmazsa ve hatalar varsa kullanıcılar uygulamanızı kaldırır
  • Google Play'de kötü incelemenin ilk nedeni kalite sorunlarıdır. İtibarınızı etkiler ve müşterinin güvenini kaybedersiniz.

Bu nedenle, uygun bir android test stratejisine sahip olmak çok önemlidir

Android Testindeki en iyi uygulamalar

  • Uygulama geliştiricileri, kodu yazarken aynı zamanda test senaryoları oluşturmalıdır.
  • Tüm test durumları, kaynak koduyla birlikte sürüm kontrolünde saklanmalıdır.
  • Sürekli entegrasyon kullanın ve kod her değiştirildiğinde testler çalıştırın
  • Emülatörleri ve köklü cihazları kullanmaktan kaçının