Flutter Ve Appium İle Uygulama Testi Nasıl Yazılır ?

Yaren Hilal Ürkmez
Coreborn
Published in
3 min readMay 25, 2021

Öncelikle yazıma Appium nedir gibi klasik sorulardan başlamak istiyorum.

Appium Nedir ?

Appium, Android, İOS ve Windows gibi farklı platformlarda otomatik uygulama testi yapmasına olanak tanıyan açık kaynaklı bir frameworktür. Geniş bir topluluk tarafından desteklenmektedir. Java, Python, C #, Ruby, Javascript, PHP gibi dilleri desteklemektedir.Aynı zamanda kendi sitesinde bu dillere ait kodlarda mevcuttur.(Örneğin bir sayfadaki element hangi dilde nasıl bulur gibi)Ben bu yazımda sadece android tarında nasıl test yazılır onu göstermeye çalışacağım.

Nerelerde Kullanılabilir ?

Mobil cihazlarda Yerel uygulama, Hibrit uygulama ve Web Tarayıcılarında kullanılabilir.

Appium Nasıl Çalışır ?

Appium,nodejs’de yazılmış bir HTTP sunucusudur.Client, REST API’leri aracılığıyla Appium sunucusuyla iletişim kurmaktadır.Bu iletişimi sağlamak için oturum oluşturmamız gerekmektedir.

Gerekli Paketlerin Yüklenmesi Ve Ortamın Çalıştırılması

Bu aşamada Appiumun nasıl kurulacağından bahsetmeyeceğim. Serveri Appium masaüstü uygulaması yardımıyla başlatacağım ama öncesinde gerekli ortamın ve paketlerin kurulumuna değinelim;
Bu linkteki projeyi clone edelim.(Adımlar Appiumun yüklü olduğu varsayılarak aktarılmıştır. appium-flutter-driver kullanabilmek için appium versiyonunuzun 1.16.0 veya üstü olması gerekmektedir. appium-flutter-driver/example dizini içerisinde 4 dile ait örnekler mevcut, ben nodejs ile devam edeceğim.)

Sonrasında:

1- npm i -g appium-flutter-driver komutunu çalıştıralım.

2-Proje içerisindeki driver dizinin içine girip npm link komutunu konsoldan çalıştıralım(Biraz geç yüklenebilir bekleyelim :) ).

3-Projenin root dizinine apps adında klasör oluşturalım ve test edeceğimiz Flutter uygulamasını içerisine atalım.(debug veya profile modda apk alınması gerekmektedir ve runApp()’ten önce enableFlutterDriverExtension() bunun eklenmesi gerekmektedir.Bu eklenince kendi elimizle klavyeye müdahale edemiyoruz ondan dolayı canlıya alırken bunu silmemiz gerekmektedir.)

4- example/nodejs dizinindeki package.json dosyanın içerisindeki dependenciesi’i aşağıdaki gibi güncel sürümlerle düzeltelim.

“dependencies”: {

“appium-flutter-finder”: “0.0.21”,

“webdriverio”: “7.6.1”

},

5-example/nodejs dizini içerisine gidip npm install komutunu çalıştıralım.

Flutter Driver Eklenerek Oturum Nasıl Oluşturulur ?

capabilities: {

platformName: “Android”,

deviceName: “AnyDevice”,

app: “C:/…/-debug.apk”,

automationName: “Flutter”,

},

Burada normalden farklı bir şekilde oturumu oluşturuyoruz çünkü Flutter uygulamasını kontrol etmek için Flutter Sürücüsüne benzer bir uzantıya sahip bir protokol kullanılması gerekiyor.Bu oturumu oluşturup test çerçeveme dahil etmek için example/nodejs/src dizinime config.js dosyasını oluşturup aşağıdaki gibi modülümü export ediyorum.

module.exports = {

port: 4723,

path: "/wd/hub",

capabilities: {

platformName: "Android",

deviceName: "AnyDevice",//herhangi bir device adı belirtmek zorunda değilsiniz.

app: "C:/sizinDosyaYolunuz/apps/apkAdınız",

automationName: "Flutter",

}};

Yukarıdaki port apiumun default olarak kullandığı port numarasıdır. Eğer ki port numaranızı değiştirip değiştirmediğinizden emin değilseniz bakmanızı öneririm.

Örnek Register Testi Yazalım

const wdio = require(“webdriverio”);

const assert = require(“assert”);

const find = require(“appium-flutter-finder”);

const opts = require(“./config”);

const validateElementPosition = require(“./helpers/validateElement”);

Yukarıdaki gibi gerekli olanları tanımlayalım. validateElementPosition fonksiyonu https://github.com/truongsinh/appium-flutter-driver git reposunda mevcuttur. Ben sadece daha okunaklı olması için farklı bir sayfada tanımladım.

Yazdığımız bu fonsiyonu index.js(successfullRegister’ı çağırdığımız dosya) de çağırdıktan sonra appiumda serverımızı başlatmalıyız sonrasında emulatorü açtıktan sonra konsola npm run start(package.json ‘da nasıl tanımlandığı önemli.Örneğin projeyi clone ettiyseniz şu şekildedir “start”: “node src/index.js”) komutunu veya node index.js(index.js ‘in dosya dizininde olmalıyız) komutunu yazarak testimizi koşabiliriz.

Son Olarak

16 sn gibi çok kısa bir süre içerisinde toplamda uygulamanın başarılı bir şekilde kayıt olma işlevini kontrol edebildik.(Bu sonucu çok daha fazla input ile çalışırak aldım.)Flutter’ın hız olarak gerçekten çok iyi bir performans vermesinin yanında gerçekten az kaynağı olduğu için test etmekte bir hayli meşakatli olduğunu belirtmek isterim.

Okuduğunuz için teşekkürler..

--

--