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
- Ünite testi
- Entegrasyon testi
- Operasyonel Test
- 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
- Uygulama paketi , test edilmesi gereken hedef uygulamanızdır
- 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.
- 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ı
- TestCase , JUnit testini çalıştırmak için JUnit yöntemlerini içerir
- TestSuite , test senaryoları kümesini çalıştırmak için kullanılır
- InstrumentationTestSuite , enstrümantasyonu çalıştırmadan önce InstrumentationTestCase'e enjekte eden bir TestSuite'tir.
- InstrumentationTestRunner , hedef uygulamada test senaryosu yürüten test durumu çalıştırıcısıdır.
- AndroidTestCase , JUnit TestCase'i genişletir. Etkinlik Bağlamı gibi kaynaklara erişmek için yöntemler içerir.
- ApplicationTestCase , kontrollü bir ortamda Uygulama sınıflarını doğrular.
- 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.
- ActivityTestCase , Uygulama Aktivitelerinin test edilmesini destekleyen temel sınıftır.
- ProviderTestCase , tek ContentProvider'ı test etmek için kullanılan bir sınıftır.
- 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.
- SingeLauchActivityTestCase , bir InstrumentationTestCase ile tek bir Activity'i test etmek için kullanılır.
- ActivityUnitTestCase
, izole edilmiş tek aktiviteyi test etmek için kullanılır. - 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