Eğitim Notları: Android’de Test — Bölüm 1

Besir Karaoglu
Huawei Developers - Türkiye
4 min readJun 22, 2023
Başlık resmi

Giriş

Merhaba😃,

Bugün, Android uygulama testi hakkında kurum içi bir eğitim sundum. Ve bu sunumu desteklemek için birkaç not aldım. Bu not, test temelleri ve unit tes hakkındaki tüm bilgileri içeriyor. Bu makale, bu konuları hızlı bir şekilde gözden geçirmekle ilgili olacak. Bu makalenin ne hakkında olduğunu açıkladığıma göre, işte başlıyoruz.

Takvim

1. Neden test yazmalıyız?

2. Neyi test edeceğimizi nasıl belirleriz?

3. Testleri nereye yazmalıyız?

4. Test çiftleri

5. Unit testler

6. Given-When-Then

Content

1. Neden test yazmalıyız?

  • Kodun doğru çalıştığını görmek için
  • Hataları en kısa sürede görebilmek için
  • Uygulamayı kullanıcılara sunmadan önce hataları görebilmek için
  • Zaman kazanmak için(Evet, doğru okudunuz. Uygulama büyüdükçe, manuel testler daha da zorlaşıyor. Bu nedenle test yazmak, uzun vadede zaman kazanmamıza yardımcı oluyor.)

2. Neyi test edeceğimizi nasıl belirleriz?

a) Konu

  • İşlevsel test: uygulamam yapması gerekeni yapıyor mu?
  • Performans testi: bunu hızlı ve verimli bir şekilde yapıyor mu?
  • Erişilebilirlik testi: erişilebilirlik hizmetleriyle iyi çalışıyor mu?
  • Uyumluluk testi: Her cihazda ve API düzeyinde iyi çalışıyor mu?

b) Nerede çalıştırmalıyız?

  • Araçlı testler, fiziksel veya öykünülmüş bir Android cihazda çalışır. Uygulama, komutları enjekte eden ve durumu okuyan bir test uygulamasının yanında oluşturulmuş ve yüklenmiştir. Araçlı testler genellikle UI testleridir, bir uygulamayı başlatır ve ardından onunla etkileşim kurar.
  • Yerel testler, geliştirme makinenizde veya bir sunucuda yürütülür, dolayısıyla bunlara ana bilgisayar tarafı testleri de denir. Genellikle küçük ve hızlıdırlar, test edilen konuyu uygulamanın geri kalanından ayırırlar.

c) Strateji

  • DOĞRULUK
  • HIZ
  • GÜVENİLİRLİK

Bu bir zaman meselesi. Bir uygulamayı hızlı bir şekilde yayınlamak istiyorsanız, hıza ihtiyacınız vardır, ancak amacınız daha fazla tutarlılıksa, uygulamanızı daha güvenilir hale getirmek için daha fazla test yazmanız gerekir.

Bunu aklınızda bulundurun: Test Edilebilir Mimari, size zaman kazandırmak için önemli bir konudur. Temiz mimariye sahip projeler zamandan, daha iyi okunabilirlik ve bakım kolaylığından tasarruf etmenize yardımcı olur.

d) Odak

App Architecture with tests
  • Unit testleri veya küçük testler, uygulamanın bir yöntem veya sınıf gibi yalnızca küçük bir bölümünü doğrular.
  • Medium testler aradadır ve iki veya daha fazla birim arasındaki entegrasyonu kontrol eder.
  • Uçtan-uca testler veya büyük testler, uygulamanın tüm ekran veya kullanıcı akışı gibi daha önemli kısımlarını aynı anda doğrular.

3. Testleri nereye yazmalıyız?

Project package example

Basit. Testleriniz bir cihaz gerektiriyorsa, bu androidTest’tedir. Değilse, test’tedir.

4. Test Çiftleri

a) Fake:

Fake örneği

Client’a basit ve hızlı yanıtlarla bilgi sağlar.

b) Mock

Mock örneği

Client’a spesifik responseları döndürmek için kullanılır.

c) Stub

Stub örneği

Önceden tanımlanmış cevapları döndürmek için kullanılır.

d) Dummy

Dummy örneği

Sadece argüman olarak kullanılır. Koda bir etkisi yoktur.

e) Spy

Spy örneği

Mock gibi ama daha kompleks ve daha detaylı state handling’e sahip.

f) Shadow

Robolectric örneği
  • Sadece robolectric için kullanılır
  • Bir geliştirme makinesinde çalıştırılamayan sınıfların yerini alır
  • Sınıf testte başlatıldığında, robolectric gölge sınıfını arar
  • Her zaman boş argümanlı bir constructor’a ihtiyaç duyar
Ve sırada…

5. Unit testler

  • Gerçek ya da sanal cihaz gerektirmez
  • JVM kullanır
  • Küçük bir kod parçasına odaklanır
  • module-name/src/test/ içinde konumlandırılır
  • Kütüphaneleri eklemek için testImplementation kullanılır
  • JUnit4, Mockito, Mockk, and Robolectric kullanılan yaygın kütüphanelerdir
  • Yaygın varsayım kütüphaneleri: junit.Assert, Hamcrest, Truth

6. Given-When-Then

Bu, test yazarken kullandığımız best practicedir. Given, değişkenleri tanımlayın. When, test etmek istediğiniz işlevi çağırın. Then, işlevinizin doğru çalışıp çalışmadığını kontrol edin.

GWT örneği

Sonuç

Bu yazımızda hızlıca test etmenin temellerinden bahsettik ve bunları nasıl kullandığımıza dair örnekler gördük. Kodlama gibi, test yazmak da hemen hemen pratik yapmakla ilgilidir ve teorik kısım bunun küçük bir kısmıdır. Demek istediğim, bu makaleyi okuduktan sonra, her şey size kalmış. 2. Bölüm entegrasyon ve UI testleri hakkında olacak.

İyi günler, gelecek makalelerde görüşmek üzere :)

Kaynaklar

--

--