Herkese merhabalar! Bu yazımda Page Object Model ile Android Simülatör test otomasyonu Javada nasıl yapılır, adım adım deneyim ve tecrübelerim ile bahsedeceğim.
Keyifli okumalar dilerim! :)
Kullanacağımız Teknoloji ve Toollar
Appium, bir web sürücüsü kullanarak Android veya iOS’ta komut dosyalarını çalıştırmak ve yerel uygulamaları, mobil web uygulamalarını ve hibrit uygulamaları test etmek için açık kaynaklı bir otomasyon aracıdır.
Appium Server uygulama üzerinde test otomasyon yapılmasına yani testin koşulmasına olanak sağlar. Şuradaki linkten bilgisayarınıza uygun versiyonunu indirebilirsiniz. Ardından komut satırımıza npm install -g appium ve npm install wd yazalım ve kurulsun. appium & yazdığımızda da, sürümünü göreceğiz.
Appium Inspector, uygulama üzerindeki bütün UI elementlerin inspect edilmesinde ve alınmasında kullanılmasına olanak sağlar. Şuradaki linkten bilgisayarınıza uygun versiyonu indirip kurabilirsiniz.
Android Studio, yazılımcılar için geliştirilmiş bir ortamdır. Bu ortamda yazılımcılar Android işletim sistemine sahip cihazlara uygun uygulamalar oluşturabilmektedir. Bu uygulamaların test süreci de yine Android Studio içinde gerçekleştirilebilir. Android Studio, IntelliJ IDEA’ya dayalı olup Android geliştirme için özel olarak tasarlanmıştır. Şuradaki linkten bilgisayarınıza uygun versiyonunu indirebilirsiniz.
Evet… Her şey yolunda gibi. Şimdi testimizi gerçekleştirmek için, istediğimiz bir uygulamanın APK’sını indirmemiz gerekecek. Bunun için şuradaki linke göz atabilirsiniz. Ben herkesin hikaye yazabileceği bir uygulama olan Wattpad’i seçtim ve indirdim.
IntelliJ IDEA, Java’da bilgisayar yazılımı geliştirmek için kullanılan bir tümleşik geliştirme ortamıdır. Şuradaki linkten bilgisayarınıza uygun versiyonunu indirebilirsiniz. Community seçmeniz bizim için yeterli olacaktır.
Dependencies:
Kopyalanan depencencie kodumuzu pom.xml dosyamıza, dependencies adı altına yapıştıralım.
Appium → şuradaki linkten son sürümü kullanabiliriz.
Selenium JAVA →şuradaki linkten son sürümü kullanabiliriz (3.141.59 öneririm).
Ön hazırlıklarımız bittiğine göre testimize başlayalım:
Inspector üzerinden start session’a basalıp. Ardından start recording diyelim
Yukarıdaki testimizde, ilk önce Join for free butonuna basıyoruz. Pempe ile highlight yaptığım yerde XPath’inin uzun olduğunu görüyoruz. Kolaylık ve okunabilirlik açısından alternatifleri de mevcut, örneğin xpath’i text olarak yazabiliriz:
Ardından, testimizde e-mail, username, password giriyoruz. Bu işlemleri send keys butonuna basarak gerçekleştiriyoruz.
Fakat username’i bizden istemediği şekilde girelim ki, bakalım uyarı yazısı gelecek mi?
Uyarı sembolünün üstüne tıkladığımızda da, yukarıda uyarı yazısı beliriyor.
Ben bu testte bu uyarı yazısını kontrol etmeyi hedefliyordum. Bunun için assert koydum:
Şimdi gelelim testimize:
Bu aşamaya geldiğimizde, uyarı ikonu ve yazısına kolay ulaşabilmek için: driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); yazarak testin biraz beklemesini sağladım.
Page Object Model (POM)
Page Object Model, yani kısaca POM, kod tekrarını azaltmada faydalıdır ve test senaryosu bakımını iyileştirir. Bir uygulamanın her web sayfasını bir sınıf dosyası olarak düşünebiliriz.
Şimdi yazdığımız testi (android adı) POM ile düzenleyelim ve daha fonksiyonel bir hale getirelim.
Eğer signInPage üzerinden farklı elemanlar da kullanılacaksa . yazıp, (.signInWithCredentials gibi):
İlk önce:
SignInPage’de yer alan fonksiyonumuz void idi (kendi kendine dönebiliyordu). Oradaki void’i silip, yerine sayfanın adını yazıyoruz ve fonksiyonun en sonuna da return this; ekliyoruz.
Ardından başka bir fonksiyon içerisinde neyi . ile gösterip çağıracaksak, aynı adda ne yapacaksak o fonksiyonun içerisine yazıyoruz (bu fonksiyonda void kullanılabilir).
Bu yazımda Page Object Model ile Android Simülatör test otomasyonu Javada nasıl yapılır, adım adım deneyim ve tecrübelerim ile bahsetmeye çalıştım.
Appium Server, Appium Inspector, Android Studio kurulumları ve kullanımlarını, configuration düzenlemeyi, desired capabilities kullanımlarını, SDK ve AVD versiyon kurulum ve kullanımlarını, emulatör kullanımı, APK’ler ile çalışmayı, ilgili teknolojiler için dependencies kurulumlarını, Appium üzerinden test kaydı başlatıp istenilen dilde export edilmesini, ardından POM ile düzenlenip birbiri ile entegre edilmesini deneyimlerim ve tecrübelerim ile birlikte bir örnek üzerinden anlatmaya çalıştım.