Android'de Unit Test, Integration Test, UI Test

Geliştirdiğimiz uygulamaları ilk olarak run ederek doğru bir şekilde çalışıp çalışmadığını test ederiz. Ancak bu yöntem büyüyen ve karmaşıklaşan uygulamalarda geliştirme sürecini olumsuz yönde etkilemektedir. Eklenen her fonksiyonun, tasarımsal objenin bu şekilde test edilmesi zaman kaybına neden olduğu gibi yazılımı geliştiren kişi için de ayrı bir iş yükü oluşturmaktadır.


Yazılım Testi bir uygulamanın istekleri karşılayıp karşılamadığını incelemek ve uygulama geliştirme sürecinde oluşabilecek hataları yakalayarak ileri aşamada oluşabilecek hataları engellemeyi hedeflemektedir. Bu da bizi zaman kayıplarından ve ayrı bir iş yükünden kurtarır.


Testler uygulamamızın doğruluğunu, işlevsel davranışlarını ve kullanılabilirliğini test etmekle birlikte:

  • Hatalar hakkında hızlı geri bildirimleri edinme,

  • Uygulama geliştirme sürecinde hatayı erken tespit etme,

  • Daha güvenli bir şekilde kodu yeniden düzenleme,

  • Kararlı bir geliştirme hızı

gibi avantajlar da sunmaktadır. Böylece testler uygulama geliştirme sürecimizin ayrılmaz bir parçası olmaktadır.


Kullanıcılar uygulamamızla etkileşim içindedirler. Örneğin bir Buton’a tıklayarak işlem onaylamak veya kullanıcı adını değiştirmek için kullanılan bir EditText’e bir input girilmesi gibi. Bu durumda uygulamada kullanılan buton'un ve edittext'in doğruluğunu, işlevselliğini ve kullanılabilirliğini test etmeye ihtiyaç duyarız.


Uygulamamız büyüdükçe eklediğimiz farklı özellikleri test edebilmek için çok yönlü, kapsamlı bir test stratejisine ihtiyaç duyarız. Uygulamamızı geliştirirken test odaklı geliştirmeye dikkat etmeliyiz. Uygulamaya eklenen yeni bir özelliğin ne gibi görevler üstlendiğini dikkate almalı, ona göre her birimini, arayüz olarak beklenen performansı ve uygulamanın diğer yapılarıyla etkileşimini test etmeliyiz.


Test Tipleri


Uygulamamızın işlevselliğini değelendirmek için Küçük, Orta ve Büyük seviyeli testler yazarız.


1- Küçük Seviyeli Testler (Birim Testler (Unit Testing))


Uygulamamımızın davranışlarını kontrol eden en küçük birimleri (bir fonksiyon, bir class) test eder. Bu testler uygulamamızın en büyük test parçasını oluşturur. Yerel ortamda (Android Studio) çalıştığı için bu testler oldukça hızlı, küçük ve yüksek düzeyde odaklanılmış testlerdir. Uygulamanız için yazılan toplam testlerin yaklaşık %70'ini oluşturmaktadırlar.


Birim testlerde JUnit ve Mocking kütüphaneleri kullanılmaktadır. JUnit bir birim testi frameworküdür. Mocking ise sahte nesneler (Bir sınıftan oluşturulan nesne gibi davranırlar. Oluşturulan gerçek nesneye göre daha hızlı işlemler gerçekleştirirler ve daha bağımsız hareket ederler) oluşturarak birim testlerimizi yazabilme olanağı sunar.