Appium ile Mobil Test Otomasyonu Native toollara göre avantaj/dezavantajları

Asiye Nur Kelle
5 min readDec 25, 2022

Selamlar, bu yazımda yakın zamanlarda vakit geçirmiş olduğum test otomasyon toolu olan Appium’dan bahsedeceğim.

Appium nedir?

Appium; native, hybrid, mobil web gibi uygulamaları test etmek için kullanılan bir otomasyon aracıdır. Open source olup, tıpkı Selenium gibi bir web driver aracılığıyla uygulamamızı test etmemizi sağlar.

Appium’un güzel yanlarından biri ise cross-platform bir tool olmasıdır. Yani platformlar arası test koşmayı destekler. Bu sayede aynı API’ı kullanarak birden fazla platform için testlerimizi koşabiliriz. (iOS, Android ve Windows). Aynı zamanda testlerimizi koşarken fiziksel cihazlar kullanabildiğimiz gibi, emulatörlerden de faydalanabiliriz.

Appium geliştiricileri bu frameworkü geliştirirken kendilerine 4 ana prensip belirlemişlerdir. Biraz bunlardan söz edecek olursak:

  • Uygulamanızı otomatize etmek için yeniden derlemeniz gerekmez.
  • Testleri yazmak için istediğiniz dili seçebilirsiniz. Appium web driver uyumlu tüm programlama dillerini destekler. Bu diller; Java, JavaScript, PHP, Python, C#
  • Mobil otomasyon framework’ü, otomasyon API’ları söz konusu olduğunda tekerleği yeniden icat etmemelidir.
  • Mobil otomasyon framework’ü adında olduğu gibi, açık kaynaklı, özgür ruhlu ve pratik olmalıdır.

Temel olarak Appium’un tanımından ve özelliklerinden bahsettikten sonra biraz da Appium kendi içerisinde nasıl çalışıyor, mimarisi nasıl bunlardan da bahsedelim.

Appium Mimarisi & Appium Nasıl Çalışır?

Appium’u araştırırken bana içerisindeki çalışma mantığını anlamamı kolaylaştıran 2 görseli ekleyerek başlamak istiyorum.

Appium aslında temel olarak Node js kullanılarak yazılmış bir web sunucusudur ve içerisinde istemci/sunucu (client/server) mimarisi bulundurur.

  1. Biz test scriptlerimizi yazdığımızda bu istekleri Appium clientı, JSON formatında Appium server’ına iletiyor.
  2. Appium server bu istekleri alıp, cihazın işletim sistemine göre o işletim sistemine uygun olan webdriver’a iletir.
  3. İsteklerin iletilmesiyle beraber komutlar mobil cihazlarda çalıştırılıp, test sonuçları dönülür.

Peki bu mimaride hangi işletim sistemine ileteceğini nasıl ayırt ediyor diye soracak olursanız, burada desired capabilities kavramı karşımıza çıkıyor.

Desired capabilities, sunucuya ne tür bir otomasyon oturumu başlatmakla ilgilendiğimizi söylemek için gönderdiğimiz bir dizi key-value’dur. Örneğin, Appium’a Android veya Windows yerine iOS oturumu başlatmak istediğimizi söylememiz gerektiğinde platformName özelliğini iOS olarak ayarlayabiliriz.

En sık kullanılan desired capabilitylerden bahsedelim.

  • platformName: Uygulamamızı çalıştırdığımız mobil işletim sisteminin adı
  • appPackage: Uygulamamızın paket adı
  • appActivity: Uygulamızın sistem içerisindeki adı
  • deviceName: Testleri koşarken ayağa kaldıracağımız cihazımızın adı
  • platformVersion: Kullandığımız cihazın sürüm numarası

Peki Neden Appium?

Bu aşamada bir çok UI otomasyon toolu seçeneğimiz var. Native olanlardan kısaca bahsedecek olursak:

  • IOS için XCUITest sık kullanılıyor. XCUITest için Swift veya Objective-c kullanmak zorundayız.
  • Android için Espresso sık kullanılıyor. Espresso için Java veya Kotlin kullanmak zorundayız.

Cross platform toollardan kıyaslama yapacak olursak, onlarda yine tıpkı native toollar gibi dil kısıtlamalarına takılıyorlar.(Örneğin Katalon framework — Java)

Sonuç olarak, hem dil zenginliğinden hem de native kod içerisinde kod yazma zorunluluğu olmamasından ötürü Appium daha cazip bir hal alıyor. Tabi Appium’un da dezavantaj sayabileceğimiz yanları bulunuyor. Native frameworklere göre yavaş kalması buna en önemli örnek olarak verilebilir.

Appium Selenium İlişkisi

Appium gerek kod yapısı, gerek kullandığı locator stratejiler, gerekse desteklediği diller (Webdriver ile çalışan tüm diller) bakımından olsun Selenium ile oldukça benzerlik göstermektedir. Bu yüzden biraz da ikisinin farklarından bahsedelim.

Kullandığı locator stratejilerinde epey ortak olduğundan bahsetmiştik. Bununla beraber Appium’un sadece kendisine özel olan ve kullanılmasını tavsiye ettiği, kırılgan olmayan bir locator stratejisi de mevcut.(AccessibilityId)

  • Accessibility ID

UI elementleri için unique bir identifierdır. IOS için accessibility-id alanına girilen değerleri temsil ederken Android için content-desc alanına denk gelmektedir.

Son olarak Appium’un bizim için epey kolaylık sağlayan debug toolu olan Appium Inspector’den bahsedelim. Appium inspector’ı şuradan indirip inceleyebilirsiniz.

Appium Inspector

Appium inspector temelde, mobil app üzerindeki elementlere ait bilgilere kolayca erişmemizi sağlayan bir debug tooludur. Bize element aramak, yaptığımız işlemleri kaydetmek, bu işlemleri kod parçacığına çevirmek gibi bir çok güzel özelliği sunuyor.

Appium sunucusuna bağlanırken desired capabilitylerden bahsetmiştik. Appium Inspector’e bağlanırken de bu değerler aracılığıyla başlatmak istediğimiz oturumu söylüyoruz. Aşağıya hem iOS hem de Android için örnek bir JSON ekleyelim.

Tüm bunları belirttikten sonra artık geriye sadece start session diyerek sunucuyu başlatmamız kalıyor. Sunucuyu da başlattıktan sonra istediğimiz elementleri inspect edebilir hale geliyoruz.

Burada biraz Appium Inspector’ün arayüzünden bahsedecek olursak, arayüzde temel olarak iki alanımız var.

  1. App Source alanında elementlerin hiyerarşik kod yapısını görüyoruz.
  2. Selected Element alanı ise otomasyon yazarken bize en sık fayda sağlayacak alan olacak. Seçtiğimiz elementin özelliklerine, hangi locator stratejide bu elementin hangi değere karşılık geldiği gibi bilgilere bu alandan erişebiliyoruz.

Inspector’de faydalandığımız diğer bir özellik ise elementleri search edebilmektir.

Appium Inspector Search Özelliği

Bazen Appium üzerinden aldığımız xpath kırılgan olabilir ya da farklı sebeplerden dolayı var olan elementi search etme ihtiyacı duyabiliriz. Böyle durumlarda Appium Inspector’ın “Search Element” özelliğinden faydalanırız. Aşağıda gözüktüğü gibi herhangi bir method ile aradığımız elementi bulabiliriz.

Appium Inspector Recording Özelliği

Son olarak Appium Inspector ile kullanıcı gibi ilerleyerek izlediğimiz adımları kayıt altına alıp, bu davranışları istediğimiz dilde kod parçacığına çevirebiliriz.

Yazımızı burda noktalayalım. Bir sonraki yazıda görüşmek üzere, keyifli okumalar dilerim.

Sign up to discover human stories that deepen your understanding of the world.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Asiye Nur Kelle
Asiye Nur Kelle

Written by Asiye Nur Kelle

Software Developer in Test @Trendyol

No responses yet

Write a response