Eğitim Notları: Android’de Test — Bölüm 1
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
- 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?
Basit. Testleriniz bir cihaz gerektiriyorsa, bu androidTest’tedir. Değilse, test’tedir.
4. Test Çiftleri
a) Fake:
Client’a basit ve hızlı yanıtlarla bilgi sağlar.
b) Mock
Client’a spesifik responseları döndürmek için kullanılır.
c) Stub
Önceden tanımlanmış cevapları döndürmek için kullanılır.
d) Dummy
Sadece argüman olarak kullanılır. Koda bir etkisi yoktur.
e) Spy
Mock gibi ama daha kompleks ve daha detaylı state handling’e sahip.
f) Shadow
- 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
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.
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 :)