Sümeyra Özuğur🍂
6 min readOct 4, 2020

Appium, Test Otomasyonu?

Diyelim ki mobil bir uygulama geliştirdiniz ve test etmek istiyorsunuz hata olup olmadığına dair 2 seçeneğiniz var. Ya manuel test edeceksiniz ya da automation.

Biz burda mobile test otomasyonu olan Appium dan bahsedeceğiz.

Nedir Appium?

  • Test otomasyon frameworku
  • open source
  • cross-platform(Android and IOS da çalışır)
  • bir http serverder (node.js ile yazılmıştır.)
  • Client -server mimarisine sahiptir.

Mimarisi

Şimdi biraz yapısını anlamaya çalışalım,

Bir editör seçip kod yazmaya başlıyacağız. Seçeceğimiz editör eclipse ve sen serverı başlattığın zaman server başlıyacak senin client kodunu dinlemeye Bu arada default olarak 4723 porttan dinliyor. Biz de yazacağımız kodda yönlendireceğiz bu porta “python,java,ruby…”appiumun desteklediği herhangi bir dilde kodlarını yazabilirsin .Ben javada yazacağım .Yazacağımız kodda DesiredCapabilities class ından bir obje üreteceğiz. Bu obje ile deviceName, platformName, platformVersion gibi özellikler belirlenir .Çalıştırdığında appium senin kodlarını jsona dönüştürüyor serverın(JSON wire Protocol.) anlaması için. Server alıyor objeye geri döndürüp işliyor sonra jsona döndürüp tekrar cliente gönderir, ve cevap verir olumlu ya da olumsuz sanal emulatorumuz üzerinde işlemler olur. Basitçe aslında olan şeyler bunlar.

Şimdi Kuruluma Geçelim:

Baştan söyleyeyim bu iş en zoru çünkü bir çok hata alıyorsunuz ama bu hataları aratınca ve bazende deneme yanılma yoluyla çözüyorsunuz

1)Environment kısımlarını koyduğunuza emin olun .

2) Java jdk, java jre versiyonlarının aynı olmasına dikkat edin sonra sıkıntı çıkarıyor.

3)Bin dosyasına bir şey eklediğiniz zaman bilgisayarı kapatın açın

Çıkabilecek hatalara karşı kısa bilgilerden sonra artık kurulum:

  1. java yı indirip Java_Home variable koyalım. Bu arada java yı indirdiğiniz halde cmd de bunu görmüyorsanız(“java -version” ve “javac -version”) variable koymada sıkıntı var demektir.Internette kısa bir aratın hemen bulacaksınız bunun ile ilgili çok kaynak var o yuzden geçiyorum.(eclipse indirmek için)
  2. Android Studyoyu indirmelisiniz. Sonrada emulatoru kurmalısınız .Emulatorun çalışıp çalışmadığına bir bakın.Bu arada Android_Home variable koymalısınız. Aslında indirdiğiniz uygulamarın pathlerini kontrol edin ve koyun. Bu arada emulatorun adını kendi isminiz koyabilirsiniz daha doğrusu akılda kalıcı bir şey koymanızı tavsiye ediyorum. Çünkü biz emulatoru cmd üzerinden çağıracağız. Eğer burda hata alırsanız adb.exe cmd üzerinden çalıştırmalısınız(burdaki hatamı böyle çözmüştüm).Belki sizinde işinize yarar.

Şimdi cmd den emulatorumuzu çağıralım. İlk önce emulatorun olduğu dizine gidelim.Aşağıda gördüğünüz gibi benim iki emulatorum var. Bunlardan birini seçelim emulator @EmulatorAdı şeklinde yazınca emulatorunuz çalışacaktır.

3. Kaldığımız yerden devam edelim ve şimdi de nodejs indirip kurmalısınız.Aynı şekilde environment leri yerleştirin sonra kurulup kurulmadıgına emin olmak için test edebilirsiniz.

4. Son olarak da Appium Kurmalısınız şimdi download dediğinizde github sayfasına gideceksiniz. İşletim sisteminiz windows ise altı çizili olan kısmı indirip kurun

Artık Appium’u kurduk şimdi de onu configure edelim.

Edit Configuration’a tıklayıp, burda pathleri koyuyoruz.

Save ettikten sonra ya kapatıp açın bilgisayarınızı ya da yeniden başlatın.Ben genelde kapatıp açmaya tercih ediyorum.

Artık kütüphaneleri ekleyeceğiz burda 2 seçeneğiniz var ya ihtiyacınız olan kütüphaneleri o sitelere gidip indirip projenize dahil etmek aşağıdaki gibi,

Ya da Maven,

Maven Nedir?

Maven proje geliştirme sürecimizi basitleştirir, IDE bağımlılığını (Netbeans de yazmak ya da eclipse )ortadan kaldırır. Yani aslında indirme işlemini yapar bizim için, iş yükünden kurtarır bizi. Aslında yukarıda da gösterdiğim gibi sitelere gidip jar ları indirmeliydik tek tek bunu her seferinde ihtiyacımız olan siteye gidip ordan indirip projemizin librarisine eklemeliydik hatta selenium da ihtiyacımız var diyelim bir şeye bir kere selenium indirmek yetmiyordu bütün ihtiyaçlarını tek tek indirmeliydik.

Maven ise selenium indirince ihtiyaçlarınıda kendisi indiriyor resmen iş yükünü hafifletiyor.

Peki bunları nasıl yapıyor Maven pom.xml kullanıyoruz .Maven projesinde bu zaten geliyor

<dependecies></dependecies> taglerinin arasına dependency lerimizi koyuyoruz.

Aşağıda da gösterdiğim gibi.

Peki bu dependencyleri nerden bulup yazacağım pom.xml ‘e derseniz de burada arama kutusuna aradığınız kütüphaneleri yazıp çıkan aşağıdaki gibi kod parçacığını kopyalayıp pom.xml yapıştırın.

Bu şekilde ihtiyaç oldukça aratın kopyalıyın ve yapıştırın pom.xml’e sonra kaydedin ve sağ tıklayıp aşağıdaki gibi Maven test diyeceğiz böylece koyduklarımızı indirecek bizim için.

Artık kütüphane ve kurulum olarak hazırız. Sıra Apk dosyasının indirilmesinde.

Kendi telefonunuza Apk Info uygulamasını indirin bu uygulama telefonunuzdaki uygulamaların apk dosyasını tutuyor. Ben devamında drive ile paylaştım daha sonra bilgisayarıma indirdim. Bu arada da

Apk nedir?

Apk android cihazlarda program yükleyebildiğimiz ve cihazlarımızın tanıdığı dosya uzantısıdır. Google Play gibi sitelere ihtiyaç duymadan herhangi bir uygulamanın apk si sayesinde o uygulamayı kurabilirsiniz.

Bu arada kuracak olduğunuz uygulamanın apk dosyasını sanal emulatorunuzun üzerine bırakmanız yeterlidir. Artık emulatorumuzde o uygulama var.

DesiredCapabilities den caps(istediğiniz adı verebilirsiniz) adında bir obje oluşturdum. Sanal emulator’un ayarlarından Platform Name, deviceName gibi bilgilere ulaşırsınız.

Kurduğunuz apk Info dan bakmak istediğiniz uygulamaya tıklayın ben örnek olması için aşagıda iki uygulamanın appPackage sini gösterdim.

AppActivity’e ise Apk Info dan yapmak istediğiniz uygulamaya girdikten sonra aşağıya kaydırın Activities kısmını görürsünüz ona tıklayınca da aşağıdaki şekilleri görürsünüz.

Ben yine daha iyi kavranması için 2 uygulamada gösterdim.

Bu kısımları da bitirdikten sonra Appium’u Açalım ve Start Server’ e tıklayalım. Sonra Daire içine aldığım yeri tıklayalım.

Tıkladıktan sonra bu kısmı eşleştirecek şekilde dolduralım.

Şeklinde doldurup,

Kaydedip, Start Session’a tıklıyoruz

Tıklayınca aşağıdaki fotoğraftaki gibi bir sayfa gelecek burda uygulamamızı adım adım nasıl açıyorsak öyle yol izleyeceğiz. Allow’ a tıklayacağız. Sonra Tap kısmına basmalıyız burda uygulama çok yavaş çalışıyor bunu baştan söyleyeyim. Hala bir şey gelmediyse kırmızı daire ye aldığım kısımla sayfayı yenileyebilirsiniz.Hatta ben Tap dedikten sonra sayfayı da bir yeniliyorum . Id nin olması burda önemli bu işimizi kolaylaştırır.Hatta şunu söylemeliyim burda id leri bulmaya çalışın yoksada xpath lerle uğraşacağız anlamına geliyor.

Bunları bu şekilde ilerleteceğiz isterseniz kırmızı dairenin yanındaki göz şekline tıklayarak kaydedebilirsiniz yaptıklarınızı ya da bir note defteri açın ve id leri alın sonrada aşağıda ki kodumuza findElementById kısmına yapıştırın. Uygulamayı tıklayarak devam ettiğimiz için click() diyoruz. Aşağıda da gördüğünüz gibi.

Not:Bu arada ben System.out.println(“Start — — — ”) demişim kodun nereye kadar çalıştığını anlamak için sizde böyle şeyleri ekleyebilirsiniz, nereye kadar çalışıyor nerede duruyor şeklinde.

Kodumuzu çalıştırdığımızda aşağıdaki görüntüyü elde ediyoruz, Buraya kadar id leri kullanarak geldik.

Bundan sonra “Daily Horoscope”tıklayacağız ama id yok bu da demek oluyor ki hoşgeldin XPath

Pembe daireye aldığım yeri tıklayarak Locator Strategy kısmınından XPath seçeceğiz ve burada artık deneyeceğiz. Search’e tıkladığımız karşımıza bir Element gelmesi için

XPath için bu linkten ve bu linkten faydalanabilirsiniz

Sonraki aşamalarda böyle devam ediyor.

Sonunda Faladdin uygulamızın bu kısmını test ettik. Siz isterseniz TestNG, JUnit gibi kütüphanelerini de ekleyebilirsiniz.

Aslında gidilebilecek farklı yolları da denedim emulator yerine gerçek telefon koymak gibi bir çok yolu denedim ve bu yöntem bana en kolayı geldi o yüzden bu şekilde anlattım. Bu arada calculator içinde basit bir örnek yaptım (burda kütüphaneleri sitelerden jar olarak indirip ekleyerek yaptım) githubımdan kontrol edebilirsiniz.

Benim için de güzel bir deneyim oldu Onur Kılınççeker Hocama burdan bir kez daha teşekkür ediyorum. Umarım bu işe başlayan için de iyi bir başlangıç olur.

No responses yet