Yeni Başlayanlar İçin Sikuli

(Bu yazı Kod Gemisi Blog arşivinden alınmıştır, metin yazarı elifcan cakmak’dır.)

Sikuli, açık kaynak kodlu bir yazılım test aracı. Özellikle büyük şirketlerde büyük çaplı projeleri test ederken uzun zaman harcayarak aynı süreçleri tek tek test etmektense Sikuli gibi bir araç çok kullanışlı olabilir. Çünkü bu sayede aynı süreçlerin test edilmesini otomatize edebilir ve harcadığınız zamanı çok daha aza indirebilirsiniz. Fakat hepsi bu değil. Sikuli aslında bilgisayarınızda neredeyse bütün işlemleri otomatize edebileceğiniz bir araç. Bunun içinse resim tanıma yöntemini kullanıyor.

Sikuli şu anda Python dilini kullanıyor. Bununla birlikte Sikuli’yi Java programlarınızda da Sikulix API aracılığıyla kullanabiliyorsunuz. Test yapmak istediğiniz yazılımın kullanıcı arayüzünün kaynak koduna erişiminiz yoksa Sikuli gibi bir program çok kullanışlı gelebilir zira tek yapmanız gereken arayüzden screenshot’lar alıp beklenen çıktıyla karşılaştırmak.

Bugün sizlere Ubuntu için Sikuli kurulumu ile birlikte basit bir test örneği ve senaryo test örneği göstereceğim. Öncelikle kurulum aşamasından başlayalım.


Sikuli Kurulumu

Öncelikle yapmanız gereken Sikulix.com adresinden sikuli-setup.jar dosyasını indirmek. Daha sonra bilgisayarınızda java yoksa java kurmanız gerekiyor. Bunun için terminal açıp aşağıdaki kodu yazmanız gerekiyor:

sudo apt-get install openjdk-7-jdk

Ardından terminalde sikuli-setup.jar dosyasının olduğu dizini açıp aşağıdaki gibi kurulumu yapıyoruz.

cd /dosyanın bulunduğu konum
java -jar sikuli-setup.jar
Sikuli Kurulum

Çıkan ekranda birinci ve beşinci seçenekleri işaretleyerek “setup now” butonuna tıklıyoruz. Beşinci seçeneği işaretlememizin sebebi Sikuli’nin text tanıma özelliğini kullanabilmek.

Sikuli Kurulum Seçimleri

Sikuli IDE’yi Açma

Kurulumu tamamladıktan sonra Sikuli’yi açmamız için yukarıdakine benzer bir yol izliyoruz. Öncelikle Sikuli’nin kurulu olduğu dizine geliyor ve aşağıdaki kodla açıyoruz.

cd /dosyanın bulunduğu konum
java -jar sikuli-ide.jar
IDE açılımı

Enter’a bastığımızda karşımıza aşağıdaki ekran çıkıyor. Bu ekranda alttaki boşluğa -c parametresini girerek OK’e tıklıyoruz. Bunu yapmamızın sebebi ise herhangi bir hatayla karşılaştığımızda bu hatayı terminalde görebilmemizi sağlamak.

Sikuli açma parametresi

Bu aşamadan sonra açılan IDE ile Sikuli’yi kullanmaya başlayabiliriz.


VisionProxy Hatası

Sikuli IDE’yi açtınız ve ilk testinizi yazdınız. Run’a bastınız fakat karşınıza aşağıdaki gibi bir hata çıktı.

VisionProxy Hatası

Sikuli resim özelliklerini kullanmak için OpenCV ‘den ve text özelliklerini kullanmak için Tesseract’dan faydalanıyor. Yukarıdaki VisionProxy hatasının sebebi ise bilgisayarınızda OpenCV’nin bulunmaması. Bunun için bilgisayarınızda -en azından- şu kütüphanelerin bulunması gerekiyor:

libopencv_core.so.2.4
libopencv_imgproc.so.2.4
libopencv_highgui.so.2.4
libtesseract.so.3

Bu sorunu çözmek için linkten Sikuli-1.0.1-Supplemental-LinuxVisionProxy.zip paketini indirmeniz gerekiyor. Bu paketi bilgisayarınıza açtıktan sonra README.txt dosyasını okuyup adımları takip etmelisiniz.


Basit Test Örneği

Gelelim Sikuli ile yazdığım basit bir test örneğine. Ben bu yazı için Toggl adlı web sitesini baz aldım. Fakat siz aklınıza gelebilecek her türlü programı veya fonksiyonu test edebilirsiniz.

Basit test örneğinde Toggl’da timer’ı başlatmayı test ettim. Aşağıdaki videodan izleyebilirsiniz.

openApp("firefox")
click(click("1435826069904.png")
type("www.toggl.com")
type(Key.ENTER)
wait(3)
click("1435826143431.png")
click("1435826160088.png")
wait(5)
click("1435826216719.png")
if exists ("1435826242791.png"):
popup("sorun yok!")
Sikuli ile basit test

Testi yazmayı tamamladıktan sonra gerçekleştirdiğiniz işlemleri geri almanız gerekiyor. Yoksa aynı testi ikinci kez yapma şansına sahip olamıyorsunuz. Örneğin bu test örneğinde giriş yaptığımız için testi baştan başlattığımızda tekrar giriş yapmaya çalışacağı için testi çalıştırmaya başlamadan önce çıkış yapmanız gerekiyor.


Senaryo Test Örneği

Senaryo test örneğinde ise proje ekleme kısmını test ettim. Fakat bu kez projeyi proje ekleme kısmından değil, süre başlatma kısmından ekliyoruz ve daha sonra Projeler kısmına gidip gerçekten eklenip eklenmediğini test ediyoruz.

click("1435824242836.png")
type("test yapma")
click("1435824261172.png")
click("1435824270628.png")
wait(2)
type("deneme12")
click("1435824299068.png")
click("1435824313491.png")
wait(10)
click("1435824341187.png")
click("1435824356819.png")
wheel("1435824391619.png", WHEEL_DOWN, 4)
if exists("1435824415723.png"):
popup("sorun yok!")
Sikuli Senaryo test

Yukarıdaki basit örnekte olduğu gibi burada da gerçekleştirdiğiniz işlemleri geri almanız gerekiyor. Bu yüzden videoda da görebileceğiniz gibi oluşturduğumuz projeyi sildikten sonra testi başlatıyoruz. Eğer bu işlemi yapmazsak bu proje zaten var olacağı için hata alırız.

Sikuli’ye nasıl başlayacağınız ile ilgili detaylı bilgilere sikulix.com/quickstart adresinden de erişebilirsiniz.