Android Otomasyon Çerçevesi ile Uygulama Testi Eğitimi

⚡ Akıllı Özet

Android Uygulama testleri, birim, entegrasyon, operasyonel ve sistem kontrollerini, cihaz üzerinde veya doğrudan JVM üzerinde çalışan otomasyon çerçeveleriyle birleştirerek, parçalı bir cihaz ortamında bir derlemenin doğruluğunu teyit eder.

  • 🔘 Neden önemlidir: Android Sayısız cihaz ve sürüm kombinasyonunda çalışır, bu nedenle uyumluluk sorunları neredeyse kesindir.
  • ☑️ Dört test seviyesi: Birim, entegrasyon, operasyonel ve sistem testlerinin her biri farklı bir hata sınıfını tespit eder.
  • ✅ Cihaz içi çerçeve: MKS Android test çerçevesi şunlar üzerine kuruludur: JUnit ve enstrümantasyon.
  • 🧪 JVM alternatifi: Robotelktrik gölgeler Android Bu sınıflar, cihaz veya öykünme yazılımına ihtiyaç duymadan JVM üzerinde çalışacak şekilde tasarlanmıştır.
  • ️ Daha geniş araç seti: EspressoUI Automator ve Appium Kapsamı, yerleşik sınıfların ötesine genişletin.
  • 📊 Kaçınılması gereken mitler: Yalnızca emülatörler, birkaç el cihazı veya son dakika yapılan keşifsel testler, üretimde kusurlara yol açabilir.

Android Uygulama test etme eğitiminde test seviyeleri, otomasyon çerçeveleri ve cihaz kapsamı ele alınıyor.

Neden Şimdi Android Test yapmak?

Android dünyanın en büyük işletim sistemidir. Aynı zamanda, Android Parçalanmış durumda: çok sayıda cihaz var ve Android Uygulamanızın uyumlu olması gereken sürümler.

Tasarım ve uygulama aşamasına ne kadar zaman ayırırsanız ayırın, hatalar kaçınılmazdır ve yazılım hataları ortaya çıkacaktır.

Android Test Stratejisi

bir doğru Android Test stratejisi aşağıdakileri içermelidir.

  1. Birim Testi
  2. Entegrasyon testi
  3. OperaUlusal Test
  4. sistem Testi

Birim testleri

Birim testleri, bir metot veya sınıf gibi kaynak kodun atomik bir birimini doğrulamak için tasarlanmış program kümeleridir.

MKS Android Platform, önceden entegre edilmiş olarak gelir. JUnit 3.0 çerçevesi. Otomasyon için kullanılan açık kaynaklı bir çerçevedir. Birim TestiBu sayede geliştiriciler etkili birim test programları yazabiliyorlar.

Birim testlerine ek olarak, kullanıcı arayüzü (UI) testleri de yapılır. Bu testler, hedef uygulamanızın UI bileşenlerini kapsar ve cihazda bir dizi kullanıcı eylemi için doğru çıktıyı verdiğinden emin olmayı sağlar.

Bir arayüzde sık karşılaşılan kullanıcı arayüzü eylemleri Android dokunma, yazma ve kaydırma gibi uygulamalar

Bir cihazda kullanıcı arayüzü testleri gerçekleştirmenin yaygın yolu şöyledir: Android Aletler. Ancak bunun performans sorunları var. Kullanıcı arayüzü testi yapmak için en iyi araçlardan biri Android is Robotium.

⚠️ Sürüm notu: JUnit 3 sınıf, örneğin EnstrümantasyonTestCase API 24'te kullanımdan kaldırıldı; mevcut projeler şunları kullanıyor: AndroidX Testi, Espresso ve UI Automator. Robotium 2016'dan beri yeni bir sürümü yayınlanmadı.

Entegrasyon testleri

In Entegrasyon TestiTüm birim testinden geçirilmiş modüller bir araya getirilerek doğrulanır. Android Bu genellikle Servis, Aktivite ve İçerik Sağlayıcı testleri gibi bileşenlerle entegrasyonun kontrol edilmesi anlamına gelir.

Entegrasyon testi türleri Android hizmet, etkinlik ve içerik sağlayıcı testlerini kapsayan

Birçok test çerçevesi, entegrasyon testlerini gerçekleştirmek için kullanılır. AndroidTroyd, Robolectric ve benzeri Robotium.

Operaulusal testler

OperaFonksiyonel testler veya kabul testleri olarak da adlandırılan geleneksel testler, uygulamanın eksiksizliğini ve doğruluğunu kontrol eden üst düzey testlerdir.

In Android, Fitness Hedef uygulamaya karşı operasyonel testlerin kolayca çalıştırılmasını sağlayan açık kaynaklı bir çerçevedir.

Sistem testleri

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

In Android, Sistem Testi normalde şunları içerir:

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

Yukarıdaki listede, Performans testi daha fazla odaklanılıyor. Gibi araçları kullanabilirsiniz Tracgözden geçirmek performans testleri yapmak için AndroidBu araç, uygulamanızda hata ayıklamanıza ve performans profilini çıkarmanıza yardımcı olabilir. Traceview artık kullanımdan kaldırılmış ve yerine yenisi kullanılmıştır. CPU Profilcisi.

Otomatik Android Test yapmak

As Android Yapısı parçalı, birçok cihazda test yapılması gerekiyor ve bu da maliyetli. Otomatikleştirilmiş Android Testler bu maliyetleri düşürmeye yardımcı olur.

Otomatikleştirmenin faydaları Android test yapmak

  • Test senaryolarının yürütülmesi için gereken süreyi azaltın
  • Geliştirme sürecinizin verimliliğini artırın
  • Erken hata tespiti, yazılım bakımında maliyetten tasarruf edin
  • Uygulamadaki hataları hızla bulup düzeltin
  • Yazılımın kalitesini garanti edin

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

  • Android Test çerçevesi
  • Roboelektrik Test çerçevesi

Android test çerçevesi

Standart test çerçevelerinden biri Android uygulamalar Android Test çerçevesiyle iyi bir şekilde entegre edilmiştir. Android SDK araçları ve mimarisi üç bölümden oluşmaktadır.

  1. Uygulama paketi, test edilmesi gereken hedef uygulamanızdır.
  2. InstrumentationTestRunner şudur: Test Durumu Hedef uygulamada test senaryolarını yürüten çalıştırıcı. Şunları içerir:
    • Test araçları: Testler oluşturmak için kullanılan SDK araçları. Bunlar IDE'ye entegre edilmiştir veya komut satırından çalıştırılabilir.
    • Maymun Koşucusu: Bir sistemi kontrol eden programlar yazmak için API'ler sağlayan bir araç. Android dışında cihaz veya emülatör Android kodu.
  3. Test paketi, test projeleri halinde düzenlenir ve bir adlandırma kuralına uyar. Test edilen uygulamanın paket adı “com.mydomain.myapp” ise, Test paketi “com.mydomain.myapp.test” olmalıdır. Test paketi 2 nesne içerir:
    • Test senaryosu sınıfları: Hedef uygulamada çalıştırılacak test yöntemlerini ekleyin.
    • Sahte nesneler: Test senaryoları için örnek girdi olarak kullanılacak sahte verileri ekleyin.

Android Test Senaryosu Sınıfları

AndroidTestCase sınıf diyagramı, aşağıdaki bilgileri göstermektedir. JUnit ve enstrümantasyon test senaryosu hiyerarşisi

  1. TestCase şunları içerir: JUnit çalıştırma yöntemleri JUnit test
  2. TestSuite, bir dizi test senaryosunu çalıştırmak için kullanılır.
  3. InstrumentationTestSuite, test senaryolarını çalıştırmadan önce bunlara izleme araçları ekleyen bir test paketidir.
  4. InstrumentationTestRunner, hedef uygulama üzerinde test senaryolarını çalıştırır.
  5. AndroidTestCase genişletir JUnit Etkinlik Bağlamı gibi kaynaklara erişim yöntemleri içeren TestCase.
  6. ApplicationTestCase, uygulama sınıflarını kontrollü bir ortamda doğrular.
  7. InstrumentationTestCase, örneğin uygulamanın kullanıcı arayüzü çıktısı gibi belirli bir özelliği veya davranışı doğrular.
  8. ActivityTestCase, Uygulama Etkinliklerinin test edilmesini destekleyen temel sınıftır.
  9. ProviderTestCase, tek bir ContentProvider'ı test etmek için kullanılan bir sınıftır.
  10. ServiceTestCase, test ortamında Service sınıflarını test eder ve Service yaşam döngüsünü destekler.
  11. SingleLaunchActivityTestCase, InstrumentationTestCase ile tek bir Etkinliği test etmek için kullanılır.
  12. EtkinlikBirimTestDurum Tek bir izole aktiviteyi test etmek için kullanılır.
  13. AktiviteEnstrümantasyonTestVakası2 uzatır JUnit TestCase sınıfı, sizi hedef uygulamaya enstrümantasyon ile bağlar, böylece GUI bileşenlerine erişebilir ve tuş vuruşları veya dokunmalar gibi kullanıcı arayüzü olayları gönderebilirsiniz.

Aşağıda ActivityInstrumentationTestCase'in bir örneği verilmiştir. Bu örnek, bir Hesap Makinesi uygulamasının kullanıcı arayüzü (UI) çalışmasını doğrular ve UI çıktılarının doğruluğunu kontrol eder.

ActivityInstrumentationTestCase2 örneği, Hesap Makinesi kullanıcı arayüzü çıktısını doğrulamaktadır. Android

Roboelektrik test çerçevesi

Test etme işlemi şu şekilde gerçekleştirilir: Android Bir cihaz veya emülatör ile test çerçevesi oluşturmak zordur. Testlerin derlenmesi ve çalıştırılması yavaş ve çok fazla geliştirme çabası gerektirir. Bu sorunu çözmek için başka bir seçenek daha var: Robolectric test çerçevesi.

Robolectric, koşmanıza olanak tanır. Android Cihaz veya emülatöre ihtiyaç duymadan doğrudan JVM üzerinde testler yapın.

Roboelektrik Test Senaryosu Sınıfları

Robolectric aşağıdaki eylemleri gerçekleştirebilir:

  • Kayıt olun ve bir Shadow sınıfı oluşturun
  • Yüklemeyi durdur Android sınıf
  • Kullanımlar JavaMetot gövdelerini geçersiz kılmaya yardımcı olur. Android sınıf
  • Gölge nesnesini şuraya bağla Android sınıf

Bu, test edilen kodun herhangi bir müdahale olmadan çalışmasına olanak tanır. Android ortamı.

Diğer test çerçeveleri

Yukarıda bahsedilen test çerçevelerinin yanı sıra, aşağıdakiler gibi daha birçok seçenek mevcuttur:

Mitler Android Test yapmak

Birçok işletme gelişiyor Android Test yapmak Yaygın yanılgılara dayanan stratejiler. Bu bölümde birkaç popüler mit ve gerçeklik incelenmektedir. Android test.

1. Mit: Hepsi Android Cihazlar aynı olduğundan, emülatörlerde test etmek yeterlidir.

Bir uygulama emülatörlerde mükemmel çalışabilir, ancak bazı gerçek cihazlarda çalıştırılırken çökebilir.

Android Gerçek bir cihazda çalıştırma sırasında görüntülenen uygulama çökme iletişim kutusu

Emülatörler mobil testleriniz için yeterli değildir. Uygulamanızı gerçek cihazlarda test etmelisiniz.

2. Mit: Bazı yaygın cihazlarda test yapmak yeterlidir.

Uygulamanız, donanım, ekran boyutları ve bellek farklılıkları nedeniyle cihazlar arasında farklı görünebilir. Çeşitli cihazlarda, işletim sistemi sürümlerinde, operatör ağlarında ve konumlarda test edin.

3. Mit: Lansmandan hemen önce yapılan keşif testleri yeterlidir.

  • Çoğu test işleminde önce test senaryoları tasarlanır, sonra uygulanır; keşifsel testlerde ise tasarım ve uygulama birlikte gerçekleşir.
  • Ortada bir plan veya hazırlık yok, bu yüzden test uzmanı istediği testleri çalıştırıyor. Bazı fonksiyonlar tekrar tekrar test edilirken, diğerleri asla test edilmiyor.

4. Mit: Uygulamada bazı hatalar varsa, kullanıcılar bunu anlayacaktır.

  • Uygulama çalışmıyorsa ve hatalar içeriyorsa, kullanıcılar uygulamanızı kaldırır.
  • Kalite sorunları, olumsuz yorumların ilk nedenidir. Google Oyun oynamak, itibarınıza zarar verir ve müşterilerinizin güvenini kaybetmenize neden olur.

Bu nedenle, düzgün bir yapıya sahip olmak şarttır. Android Test stratejisi yürürlükte.

En iyi uygulamalar Android Test yapmak

  • Uygulama geliştiricileri, kodu yazarken aynı zamanda test senaryolarını da oluşturmalıdır.
  • Tüm test senaryoları, kaynak kodla birlikte sürüm kontrol sisteminde saklanmalıdır.
  • Sürekli entegrasyonu kullanın ve kod her değiştirildiğinde testler çalıştırın
  • Yalnızca emülatörlere ve rootlu cihazlara güvenmekten kaçının; sonuçları gerçek donanım üzerinde, bir denetleyici programı kullanarak doğrulayın. uiautatorviewer

SSS

Hayır. Modern projeler kullanır. AndroidX Testi ile JUnit 4 ve AndroidJUnitKoşucu. JUnit Burada açıklanan 3 test senaryosu sınıfı API 24'te kullanımdan kaldırılmıştır ve yalnızca eski sürümler için geçerlidir.

Makine öğrenimi, düzen değişikliğinden sonra konum belirleyicileri onarır, yinelenen çökme ve ANR raporlarını gruplandırır ve bir değişikliğin hangi testleri bozacağını tahmin ederek her commit için daha kısa bir test paketi çalıştırır.

Copilot, tanımlanmış bir senaryodan ortak onView ve check kalıplarını yazar. Görünüm tanımlayıcılarınızı veya zamanlamanızı bilemez, bu nedenle her öneriyi bir kez çalıştırın ve önce eşleştiricileri ayarlayın.

Espresso Kendi uygulamanız içinde testler yapabilirsiniz ve hızlı ve kararlıdır. UI Automator uygulama sınırlarını aşar, bu nedenle bildirimler, ayarlar ve sistem diyalogları için uygundur. Birçok paket her ikisini de kullanır.

ActivityScenario API'si AndroidX Testi, genellikle bir ActivityScenarioRule ile birlikte kullanılır. Kullanımdan kaldırılmış bir test senaryosu sınıfını genişletmeden, bir etkinliği tanımlanmış yaşam döngüsü aşamalarından geçirir.

Öncelikle düşük segment, orta segment ve son dönemde piyasaya sürülen amiral gemisi modellerinden başlayarak iki veya üç farklı telefon modelini inceleyebilirsiniz. Android Sürümler ve bir tablet de dahil. Daha fazla donanım satın almak yerine, sürümden önce cihaz bulut çalıştırmalarını ekleyin.

Bunlar, gerçek bir cihaz yerine, derleme makinesinin JVM'sinde gölge sınıflarla çalışır; bu nedenle paketleme, kurulum veya emülatör başlatma gerekmez. Bu da onları her commit'te pratik hale getirir.

Google'ın mevcut test kütüphanesi seti. İçerisinde şunlar bulunur: JUnit ve Gerçeklik uzantıları, Etkinlik Senaryosu, Espresso UI Automator ise cihazlarda, emülatörlerde ve Robolectric'te çalışan tek bir bağımlılık grubunun arkasında yer alıyor.

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