Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mobil Test Otomasyonunda Appium
#1
Yazıya başlamadan önce: Bu yazıyı yazarken tabi ki belli bir bilgi birikimi ile başlıyorum ancak bazen bende ince noktaları bu yazıları yazarken öğreniyorum. Aslında sizlerle birlikte bende öğreniyorum demenin uzuncasıSmile. Bu yüzden de bu yazılar aslında bir nevi sizin bakış açınızla yazılıyor. Yeni başlar gibi… İyi Okumalar

Otomasyonlar, bir çok alanda kullanılan yapı taşları olmaya başladı hatta oldu diyebilirim. Veri biliminde web scraping(web kazıma), web uygulamalar da testlerin otomatize edilmesi, yine aynı şekilde mobil yazılım testlerinin de otomatize hale getirilmesi… Bunlar artık bizlerin çok yabancı olmadığı işler.
Peki Mobil testler de, test otomasyon sektöründe önemli yeri olan A[b]ppium’u [/b]duydunuz mu? Duyduk Tabi ki! İşimiz bu.
Peki sizlere daha önce Appium bildiğimden hiç bahsetmiş miydimSmile? İşte şimdi tam da sırası diye düşünüyorum ve sizlere kariyerin de test alanında ilerlemek isteyenlere yön vermek için yeni bir konuya başlıyorum: Appium.

[Resim: 0*1qsEBLrl91OZd3to]

[b]Appium Nedir?[/b]
[b]Appium[/b], açık kaynaklı, bir web sürücü kullanarak [b]Android [/b]ve [b]IOS [/b]komut dosyalarını çalıştırmak, yerel uygulamaları, mobil web uygulamalarını ve hibrit uygulamaları test etmek için kullanılan platformlar arası test otomasyon aracıdır. Piyasa da en çok kullanılan test otomasyon framework’ ü diyebilirim. 2013 yılında piyasaya beta olarak [b]Dan Cuellar[/b] tarafından sürülmüş ve 2017 yılında da beta sürümünden çıkmıştır.
Detay için → [b][i]https://en.wikipedia.org/wiki/Appium[/i][/b]
Amaç olarak, Mobil de Android ve IOS tarafında test yazılmasını sağlasa da artık masaüstü uygulamaların test süreçlerinde de kullanılmaktadır.
windows masaüstü uygulamalar için → [b][i]http://appium.io/docs/en/drivers/windows/[/i][/b]
[b]Appium Felsefesi[/b]
Appium geliştirici ekibi yükselen bir yıldız olan bu framework için, 4 ana felsefe belirlemişler.
  1. Uygulamanızı otomatikleştirmek için yeniden derlemeniz veya herhangi bir şekilde değiştirmeniz gerekmez.
  2. Testlerinizi yazmak ve çalıştırmak için belirli bir dile veya çerçeveye kilitlenmemelisiniz.
  3. Mobil otomasyon çerçevesi, otomasyon API’leri söz konusu olduğunda tekerleği yeniden icat etmemelidir.
  4. Mobil otomasyon framework’ ü adında olduğu gibi, açık kaynaklı, özgür ruhlu ve pratik olmalıdır!
Appium Mimarisi

[Resim: 0*ZOwXAZW2egEkx0Kv]

Peki Appium projesinin yapısı bu felsefeyi nasıl yaşıyor? İlk madde için ürün sahibi tarafından sağlanan otomasyon çerçevelerini kullanarak 1.maddeyi karşılıyoruz. Bu şekilde, uygulamanız için Appium’a özgü veya üçüncü taraf kodları veya çerçeveleri derlememiz gerekmez. Bu [b], gönderdiğiniz aynı uygulamayı test ettiğiniz[/b] anlamına gelir . Kullandığımız uygulama sahibi tarafından sağlanan çerçeveler şunlardır: 2 numaralı gereksinimi, uygulama sahibi tarafından sağlanan çerçeveleri tek bir API olan WebDriver API’sine sararak karşılamaktadır. WebDriver (diğer adıyla “Selenium WebDriver”) bir istemci-sunucu protokolü belirtir ( JSON Kablo Protokolü olarak bilinir ). Bu istemci-sunucu mimarisi göz önüne alındığında, sunucuya uygun HTTP isteklerini göndermek için herhangi bir dilde yazılmış bir istemci kullanılabilir. Her popüler programlama dilinde yazılmış müşteriler zaten var. Bu aynı zamanda istediğiniz test çalıştırıcısını ve test çerçevesini kullanmakta özgür olduğunuz anlamına gelir; istemci kütüphaneleri sadece HTTP istemcileridir ve kodunuza istediğiniz gibi karıştırılabilir. Diğer bir deyişle, Appium & WebDriver istemcileri teknik olarak “test çerçeveleri” değildir — “otomasyon kütüphaneleri” dir. Bu sayede, Test ortamınızı istediğiniz gibi yönetebilirsiniz!
[Resim: 0*Fy_6QALKPG7lXDxK]
Appium, 3. gereksinimi aynı şekilde karşılıyor: WebDriver, web tarayıcılarını otomatikleştirmek için fiili standart haline gelmiştir ve bir [b]W3C Çalışma Taslağıdır[/b] . Mobil cihazlar için neden tamamen farklı bir şey yapıyorsunuz diyebilirsiniz? Bunun yerine protokolü , mobil otomasyon için yararlı ek API yöntemleri ile genişletilmiştir . Ulaşabileceğiniz ve daha önceden kullanıma sunulmuş yapılar linkler ile belirtildi. İncelemenizi tavsiye ederim.
4. gereksinimin verildiği açık kaynak olmalıdır — Appium açık kaynak olduğu için bunu okuyun. Burada zaten bu maddeyi de karşıladığını göreceksiniz.
Bence bir tool, framework vb. kullanıyorsak, kullandığımız aracın nasıl çalıştığını yani mimarisini iyi bilmemiz gerekir. Bu yüzden aşağıdaki soruya kesinlikle yanıt verelim…
Appium Mimari olarak Nasıl Çalışır?
[b][i]İstemci/Sunucu Mimarisi (Client/Server Architecture)[/i][/b]
Appium, Rest API kulanan bir web sunucusudur. İstemci tarafından bağlantı bilgilerini alır, bu bağlantılara ait komutları dinler, bu komutları istenilen bir mobil uygulamada yürütür ve bu komutların sonucunu temsilen bir HTTP yanıtı döner.
Bir istemci/sunucu mimarisine sahip olmak birçok avantaj sağlar;
  1. Test kodlarını http istemcisi olan herhangi bir dilde yazabilirsiniz. [b]Python [/b]ve [b]java [/b]favorim : ) ([b]Appium istemci kütüphaneleri olan diller[/b])
  2. Sunucu, testlerimizin çalıştığından farklı bir makine de olabilir.
  3. Test kodu yazabilir ve komutları almak ve yorumlamak için bir bulut hizmetine güvenebiliriz .

[Resim: 0*lhR_6HbN-VUHovAh]

[b][i]Oturum(Session)[/i][/b]
Otomasyonu her zaman bir oturum bağlamında gerçekleştiririz. İstemciler, her kitaplığa özgü bir şekilde bir sunucu ile oturum başlatırlar, ancak hepsi POST /sessio
gibi sunucuya bir istek göndererek “[b]istenen yetenekler[/b]” yani “[b]desired capabilities[/b]” nesnesi adı verilen bir JSON nesnesi gönderir . Bu noktada sunucu otomasyon oturumunu başlatır ve başka komutlar göndermek için kullanılan bir oturum kimliğiyle yanıt verir. Bu kısımda ki anlattığım mimari işlemleri bilmeniz bir sonraki yazıda kuracağımız appium için daha anlamlı olacaktır.
[b][i]İstenilen Yetenekler (Desired Capabilities)[/i][/b]
İstenilen yetenekler, sunucuya ne tür bir otomasyon oturumu başlatmakla ilgilendiğimizi söylemek için Appium sunucusuna gönderilen bir dizi anahtar ve değerdir (yani bir harita veya bilgi kümesi). Otomasyon sırasında sunucunun davranışını değiştirebilen çeşitli yetenekler de vardır. Örneğin, Appium’a Android veya Windows yerine iOS oturumu istediğimizi söylemekistediğimiz de platformName özelliğini iOS
 olarak ayarlayabiliriz . Ya da Safari otomasyon oturumu sırasında, yeni pencereler açmak için ve Javascript kullanmak için  safariAllowPopups kapasitesini  true
 olarak set ederek ayarlayabiliriz.
[b][i]Appium Sunucu(Server)[/i][/b]
Appium, Node.js’de yazılmış bir sunucudur. Kaynaktan inşa edilebilir ve kurulabilir veya doğrudan NPM’den kurulabilir :
[Resim: 1*dFxQIMgzvSAuCHCrnTf8tQ.png]
appium server kurulumu

[b][i]Appium İstemcileri(Clients)[/i][/b]
Appium’un WebDriver protokolüne uzantılarını destekleyen istemci kütüphaneleri (Java, Ruby, Python, PHP, JavaScript ve C #) vardır. Appium kullanırken, normal WebDriver istemciniz yerine bu istemci kitaplıklarını kullanmak isteyebilirsiniz. Kütüphanelerin tam listesini burada görebilirsiniz .
Artık yazımızın sonuna geldik. Artık Appium’ u kullanmaya başlamak için yeterli bilgiye sahipsin. Kendini tebrik edebilirsin. SmileBurada öğrendiğin her şey Appium’ u anlamaya ve anlamlı kullanmaya bir temel gibi düşünebilirsin. Bir sonraki yazıda Appium’ u Intellij Idea üzerinde bir proje ile daha detaylı anlatacağım. Şimdilik görüşmek üzere….




Not: bu yazı Mesut Beysülen tarafından yazılmıştır.
Kaynak:  https://mesutbeysulen.medium.com/mobil-t...08406da150
  


Hızlı Menü:


Konuyu Okuyanlar:
1 Ziyaretçi