Appium Nedir?

Appium; iOS mobil, Android mobil ve Windows masaüstü platformlarında yerel, mobil web ve hibrit uygulamalarında web sürücüsü kullanarak test otomasyonunda kullanılan açık kaynak kodlu bir test aracıdır. Java, Objective-C, JavaScript, Node.js, PHP, Python, Ruby, C#, Clojure, Perl gibi çoklu dil desteklediği sağlamaktadır.

İki yoldan biriyle kurulabilir: NPM aracılığıyla veya Appium sunucusunu başlatmak için masaüstü tabanlı bir yol olan Appium Desktop’ı indirerek.

Appium, “cross-platform” yani platformlar arası test yürütmeyi destekler, Bu aynı API’yi kullanarak testlerin birden fazla platform (iOS, Android ve Windows) için yazıldığı anlamına gelir.

 

Appium’u aynı anda birden fazla cihazda çalıştırma

Paralel test yürütme, insan gücüne olan ihtiyacı azaltmak ve üretkenliği artırmak için her zaman gereklidir. Appium aynı zamanda eş zamanlı test suit’lerimizi çalıştırmamıza olanak sağlar. Bu özellik caselerin birden fazla cihazda ve çeşitli platformlarda çalıştırılarak kaliteyi ve güvenilirliği maksimumda sağlamayı hedefler.

Yürütülen caselerin eş zamanlı olarak farklı platformlarda çalışması, insan gücüne olan ihtiyacı minimuma indirmekle birlikte zamandan da büyük ölçüde tasarruf sağlamaktadır.

Diyelim ki bilgisayarınıza 10 cihaz bağlı ve adb devices komutunu yazdığınızda PC’nize bağlı tüm cihazları getirecek.

Appium’u birden fazla cihazda aynı anda çalıştırmak için birden fazla Appium sunucusu çalıştırmamız gerekir. Bu da elimizde bulunan her bir cihazımız için ayrı Appium sunucusu ayağa kaldırmamız gerek demektir. Appium sunucusunun her örneğinin hub’a kaydedilmesi gerekir.

Bu nedenle, testi on farklı cihazda çalıştırmak için on farklı Appium düğümü çalıştıracaksınız demektir.

Böyle bir uygulama, yüksek sistem belleği tüketimine yol açar ve daha fazla cihazı senkronize etmek gerektiğinde de daha sıkıcı hale gelir.

Ayrıca, piyasada bulunan her türlü cihazı satın almak ve testinizi her biri üzerinde ayrı ayrı yapmak pahalı ve bakımı zordur.

Bu zorluğun üstesinden gelmek için mevcut Appium testini uygun Cihaz Çiftliği’ne entegre edebiliriz. Cihaz Çiftliği aracılığıyla, çok çeşitli işletim sistemi sürümlerinde bulunan binlerce mobil cihaza ve tablete erişebiliriz.

Aşağıda belirtildiği gibi piyasada bu tür birkaç cihaz grubu bulunmaktadır:

AWS Device Farm

Google Cloud Test Labs

Xamarin Test Cloud

Sauce Labs

Perfecto

Bu cihaz gruplarından birini seçip projenize entegrasyon sağlayarak birden çok farklı platformdaki cihazlarda çalışabiliriz. Bu cihaz gruplarının projemize entegresyonu için seçilen cihaz grubunun resmi internet sitelerindeki kullanıcı dökümanları oldukça faydalı olacaktır.

Peki yukarıda saydığımız cihaz gruplarından biri ile çalışma imkanımız yoksa ne yapmalıyız? Böyle bir durumda kendi cihaz çiftliğimizi oluşturarak projemize entegre etmemiz gerekmektedir. Öncelikle yapmamız gereken analiz kullanıcılar tarafından en çok tercih edilen cihaz ve versiyonların tespit edilmesi olmalı. Kullanıcı bakış açısına ne kadar yakın olursa projemizin başarısı ve güvenilirliği o kadar fazla olacaktır.

Cihaz çiftliğimizi oluşturduktan sonraki aşama ise bu cihazlarda paralel olarak test koşmayı sağlamamız. Bu kısmı ise Selenium Grid’i projemize entegre ederek çözüme ulaştırabiliriz.

O zaman kendi cihaz çiftliğimizi oluşturup Appium’a entegrasyonu için her şeyden önce, 2 araca ve mobil cihaza ihtiyacınız var diyebiliriz.

Bunlar:

  • Selenyum Grid (http://www.seleniumhq.org/download/)
  • Appium (http://github.com/appium/appium-desktop/releases/)
  • Mobil cihazlar

Selenium Grid, testleri birkaç makineye dağıtarak ölçeklendirmenize olanak tanır.

Mobil Cihaz Laboratuvarı Oluşturma Adımları aşağıdaki gibidir:

1- Tam çalışan bir Selenium Grid Altyapısının Kurulması

2- Mobil cihazlarımızı yönetmek için Appium için JSON dosyası oluşturmak

3- Her cihaz için Appium Server’ı çalıştırmak

4- Değişen proje yapısı

 

Tam Çalışır Selenyum Izgara Altyapısının Kurulması

Selenium Grid (SG) *.jar dosyasında gelir ve konsolda çalıştırılır. Selenium Grid’i çalıştırırken yapılandırmanız gereken bazı parametreler vardır.

En temel olanlar aşağıdaki örnekte açıklanmıştır. “Port” parametresini değiştirerek, SG’nin varsayılan portunu değiştirirsiniz.

Rol parametresi “hub” parametresi olarak ayarlanır ve SG’nin merkezi bir istek toplama noktası gibi davranır ve tüm test isteklerini alarak doğru düğümlere dağıtır.

“java -jar selenium-server-standalone-2.53.0.jar -port 4444 -role hub”

Yukarıdaki komutu başlattıktan sonra, tarayıcınızı http://localhost:4444/grid/console URL’sine yönlendirerek, Selenium Grid’in tamamen işlevsel olduğunu görebilirsiniz.

 

Mobil Cihazlarımızı Yönetmek için Appium için JSON Dosyası Oluşturma

Bu adımda her mobil cihaz için *.json dosyaları oluşturmamız gerekiyor. Bu dosyaların iki bölümü vardır.

İlk bölüm “Capabilities” , mobil cihazlar hakkında cihaz kimlikleri, tarayıcılar, işletim sistemi adları ve işletim sistemi sürümleri gibi belirli bilgileri tutar.

İkinci kısım ise “Configuration” bu kısım ise Selenium Hub hakkında bilgiler içerir.

Selenium Grid, yetenekler (Capabilities)  bölümündeki tanımları kullanarak test isteklerini cihazlarla eşleştirir.

Bu dosyayı oluşturduktan sonra “node-devicename.json” olarak kaydedin.

Her mobil cihaz için ayrı bir .json dosyası oluşturmanız gerekmektedir.

 

Her Mobil Cihaz için Appium Sunucusunu Çalıştırma

Bu adımda Appium Düğümleri’ni yapılandırmanız gerekmektedir. Appium yalnızca bir mobil cihazı yönetebilir, bu nedenle n tane cihaz ile etkileşim kurmak için n tane Appium sunucusuna ihtiyacımız var.

Öncelikle, Appium’u tetikleyen küçük bir toplu iş dosyası oluşturmamız gerekmektedir.

Bu komut Appium’un klasöründe yürütülmelidir.

Bu komut örneğini aşağıda görebilirsiniz:

node.exe node_modules\appium\bin\appium.js <font></font>

–session-override <font></font>

–nodeconfig c:\selenium-server\node-samsung.json <font></font>

-p 4726 <font></font>

–bootstrap-port 2252 <font></font>

–udid 021YHB1039986676

 

Mobil Cihaz Laboratuvarı için Proje Yapısının Değiştirilmesi

Bu bölüm Java ve TestNG kullanarak geliştirdiğim bir projeye dayanmaktadır.

TestNG.xml Dosyasını Değiştirme

İlk başta, testNG.xml dosyanızı değiştirmeniz gerekir.

Bu .xml dosyası ile test suit’lerinizi yönetebilirsiniz.

Sahip olduğunuz her cihaz için test etiketinizi çoğaltmalısınız.

Bu sayede RemoteWebDriver‘ınıza farklı parametreler iletecek ve testlerinizi belirli bir cihaz üzerinde çalıştıracaksınız.

Sürecinizi tamamen otomatikleştirmek için, test çalıştırmalarını tetiklemek için bir Sürekli Entegrasyon(Continuous Integration) aracı kullanmanızı öneririm.