Android UI Test

Mustafa Kurt
IBTech
Published in
3 min readMay 6, 2022

Selamlar, bu yazımda sizlere UI test nedir? Neden yapılır? Android tarafında nasıl uygulanır? Konularından bahsedeceğim.

Android uygulamaları söz konusu olduğunda, işlevsel bir kullanıcı arayüzü (UI) esastır. UI test, kullanıcı ara yüzünden yapılan bir test türüdür. Kullancının ekranda etkileşime girdiği bileşenlerin olası senaryolara göre test edilmesi diyebiliriz. Yani kullanıcı buttona bastığı zaman nasıl bir aksiyon beklediğimizi test edebiliriz. Ui test tamamen son kullanıcı odaklı bir test türüdür. Akışı baştan sona tamamen (uçtan uca) kontrol etmek için bu testler kullanılır. Bu testlerin doğruluk oranı diğerlerine göre daha yüksektir çünkü gercek bir cihazda gerçek hayat kullanımını simüle ederler. Uygulamanız için yazılan toplam testlerin yaklaşık %10'unu oluşturmaktadır. Literatürde Black Box test olarak da adlandırılmaktadır.

Android dünyasında ui test yazmak için genellikle Espresso kütüphanesi tercih edilmektedir. Espresso, geliştiricilerin güvenilir ve otomatik kullanıcı arayüzü testleri yazmasına yardımcı olmak için google tarafından yayınlanan bir test aracıdır.

UI Test Yazmanın Faydaları

Sürekli ui üzerinden manuel test yapmak yerine gerekli kodları yazarak otomatize etmemizi sağlar. Bu da bize zaman kazandırır.

Daha kaliteli uygulamalar çıkarmamızı sağlar.

Düzgün çalışan, kararlı, kullanıcı dostu bir arayüz elde etmemizi sağlar.

Hataları erken tespit etmemiz gibi avantajlar sağlamaktadır.

Espresso Kütüphanesinin Kullanımı

Projenize Espresso bağımlılıkları eklemek için aşağıdaki adımları tamamlayın:

  1. Uygulamanızın build.gradledosyasını açın. Bu genellikle en üst düzey build.gradledosya değil , app/build.gradle.
  2. Bağımlılıkların içine aşağıdaki satırları ekleyin:
androidTestImplementation('androidx.test.espresso:espresso-core:3.4.0')
androidTestImplementation('androidx.test:runner:1.4.0')
androidTestImplementation('androidx.test:rules:1.4.0')

3. Instrumentation Runner ayarlayın.

build.gradleAynı dosyaya aşağıdaki satırı ekleyin android.defaultConfig:

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

Kod tarafına geçmeden önce biraz Espressonun kendi yapısından bahsedeceğim.

Espresso’nun ana bileşenleri aşağıdakileri içerir:

  • Espresso — Görünümlerle etkileşimlere giriş noktası ( onView()ve aracılığıyla onData()). gibi herhangi bir görünüme bağlı olması gerekmeyen API'leri de ortaya çıkarır pressBack().
  • ViewMatchersMatcher<? super View> – Arabirimi uygulayan nesneler topluluğu . onView()Geçerli görünüm hiyerarşisi içinde bir görünümü bulmak için bunlardan birini veya birkaçını yönteme iletebilirsiniz .
  • ViewActions — Yönteme ViewActiongeçirilebilen nesneler topluluğu ViewInteraction.perform(), örneğin click().
  • ViewAssertionsViewAssertion – Yöntemden geçirilebilecek bir nesne koleksiyonu ViewInteraction.check(). Çoğu zaman, o anda seçili olan görünümün durumunu belirtmek için bir görünüm eşleştirici kullanan eşleşme iddiasını kullanacaksınız.

Bazı Örnek Kodlar

Örnek 1:

Burada kullanıcı bulunduğu sayfadan onBackPress() yaptığı zaman backstackte bulunan bir önceki sayfaya yönlenmesi test ediliyor.

Geri tuşunun tetiklenmesi testi

Navigation test edeceğimiz için navController mockluyoruz. pressBack() sayesinde espressoya geri tuşuna basması gerektiğini bildiriyoruz. Verify ile geriye gitti mi ? Kontrolünü sağlıyoruz.

Örnek 2:

Burada ise kullanıcı floating action button basınca istenilen sayfaya yönlenip yönlenmemesi test edilmektedir.

launhFragmentHiltContainer ile launch etmek istediğimiz fragmente veriyoruz. Navigation test edeceğimiz için navigation kendisini mockluyoruz. Onview da espressoya floating action button bul diyoruz daha sonra perform sayesinde floating action button ne yapmalı bunu bildiriyoruz. Burada click eventini kullanıyoruz çünkü buttona tıklandığı zaman sayfa geçişi yaptırıyoruz. En sonda verify methodunu kullanarak navigation actionlarımız arasında doğru navigate işlemini yapıyor mu ? Bunu test etmiş oluyoruz.

Okuduğunuz için teşekkürler.

Keyifli kodlamalar.

Kaynaklar

Android’de Unit Test, Integration Test, UI Test (mobiler.dev)

Android Espresso UI Test — Mobilhanem

https://github.com/atilsamancioglu/IA27-ArtBookHiltTesting

Test UI for a single app | Android Developers

Android UI Testing With Espresso. Testing your application to ensure it… | by Ngenge Senior | Android Gate | Medium

https://www.youtube.com/watch?v=j8jQq-kYgDU&list=PLgCYzUzKIBE_ZuZzgts135GuLQNX5eEPk

--

--