Appium, açık kaynaklı, bir web sürücü kullanarak Android ve IOS 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 Dan Cuellar tarafından sürülmüş ve 2017 yılında da beta sürümünden çıkmıştır. 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.
Appium geliştirici ekibi yükselen bir yıldız olan bu framework için, 4 ana felsefe belirlemişler;
- Uygulamanızı otomatikleştirmek için yeniden derlemeniz veya herhangi bir şekilde değiştirmeniz gerekmez.
- Testlerinizi yazmak ve çalıştırmak için belirli bir dile veya çerçeveye kilitlenmemelisiniz.
- Mobil otomasyon çerçevesi, otomasyon API’leri 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.
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. Yukarıda bahsedilen maddeleri açıklarsak; ilk 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, gönderdiğiniz aynı uygulamayı test ettiğiniz anlamına gelir.
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. Bu aynı zamanda istediğiniz test çalıştırıcısını ve test çerçevesini kullanmakta özgür olduğumuz anlamına gelir; istemci kütüphaneleri sadece HTTP istemcileridir ve kodumuza istediğimiz 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ımızı istediğimiz gibi yönetebiliriz.
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 W3C çalışma taslağıdır.
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;
- Test kodlarını http istemcisi olan herhangi bir dilde yazabiliriz. Python ve java en popüler olanları) (Appium istemci kütüphaneleri olan diller)
- Sunucu, testlerimizin çalıştığından farklı bir makine de olabilir.
- Test kodu yazabilir ve komutları almak ve yorumlamak için bir bulut hizmetine güvenebiliriz.
Appium da testlerimizi ya gerçek bir cihaz üzerinde ya da emulatör üzerinde çalıştıracağız. Bu 2 durum için appium sunucusunun adres bilgisini değiştirmek gerekiyor.
Sunucu adresi ayarları için “Advanced“ sekmesini tıklayalım ve Server Adresi default olarak “0.0.0.0” geldiğini göreceksiniz. Bu aslında gerçek bir cihaz üzerinde çalıştırdığımızda kalması gereken adres. Ancak biz makinemizde ki bir emulatör üzerinden çalıştıracağımız için bu Server Address alanını “127.0.0.1“ olarak değiştireceğiz. Ve ardından bir sorun oluştuğunda oturumu geçersiz kılmak için “Oturum Geçersiz Kılmaya İzin Ver” yani “Allow Session Override” alanını ve ardından “Start Server v1.12.1” e tıklıyoruz. Not:Şimdilik port adresini değiştirmemize gerek yok.
Testlerini otomatize edeceğimiz uygulamamızın capabilities bilgilerini girmek için yukarıda gösterdiğim search ikonuna tıklamanız yeterli.
Emülatör kurulumu için Android Studio ya ihiyacımız var. Hızlıca indirilen exe için kurulum gerçekleştiriyoruz. Sonrasında Android Studio yu açıyoruz. Aşağıdaki gibi gelen ekranda Configure →SDK Manager tıklayınız.
Açılan ekranda bulanan Android SDK Location alanındaki path i daha önce java kurulumu sonrasında Envoirment Variables kısmına yaptığımız gibi ANDROID_HOME adında bir değişken oluşturup, bu path’i buraya ekliyoruz.
Tekrar Android Studio Ekranına gelerek bu ekranda emülatörün Android API seviyesini (Sürüm) seçiyoruz.
Ben Oreo API 26’yı seçtim. Sonrasında SDK Tools sekmesini seçin ve benim seçtiğim araçların yüklemesi için aynılarını işaretleyin. Ve “Tamam” a tıklayın. Yükleme bittikten sonra tekrar Configure sonrasında AVD Manager seçin. Ve sonra Emülatör oluşturmak için Create Virtual Device a tıklayın.
Gelen ekranda istenilen cihaz türünü seçin ve Next ile devam edin. Sonraki adım da Android sürümünü ben Pie seçtim daha önce yüklediklerim arasında vardı.
Sonra android cihazınızın ismini girebileceğiniz ekran gelecektir. İsmini değiştirip Finish’e tıklayın. Ve ardından gelen ekranda “Play”e tıklayarak emülatörünüzün açılamasını bekleyin.
Ve artık emülatörümüz kullanıma hazır... 😍😎
Server başladıktan sonra Appium Inspector üzerinden yukarıdaki gibi ayarları yapmalıyız. Buradaki “appPackage” ve “appActivity” uygulamamızın başlaması ve doğru çalışması için mutlaka yazılması gereken özelliklerdir. Bunlar doğrudan uygulamamız ve projemiz üzerinden alınabilecek değerlerdir. Bu ayarları da yaptıktan sonra “Start Session” butonu üzerinden Inspector’ımızı başlatabiliriz