Laravel Dusk

Laravel 5.4’te Laravel Dusk Aracı

Merhaba!

Laravel 5.4 ile birlikte kullanımımıza sunulacak bir araçtan bahsetmek istiyorum. Adı Laravel Dusk.

Uçtan uca testi kolaylaştırmak ve Laravel’e daha uyumlu hale getirmek için sunulan bu araç, ilk tanıtımlarda web tarayıcılarının davranışlarını simule etmek için ideal olacak gibi duruyor. Öncelikle bilmeyenler için uçtan uca testin ne olduğunu söylemekte fayda var. İngilizcede “End to end testing” denilen bu kavram ayrı ayrı test edilen ve çalışırlığı doğrulanan birimlerin bir bütün halde çalışıp çalışamadığını test etmek için yapılır. Kısacası ürününüzü veya ürünün herhangi bir özelliğini (1 ürünün tek bir özelliği birkaç birimden oluşabilir) oluşturdunuz ve karşısına geçip ürünü kullanacak olan müşteri gibi her şeyiyle test etmeye çalıştınız. İşte bu uçtan uca test demek oluyor. Ne kadar yazılımla ilişkilendirilip, web browser simulasyonuymuş gibi anlatımlarla karşılaşsak da, yazılım ürününüzü herhangi bir otomasyona bağlı kalmadan, elle bir bütün olarak test etmeniz de uçtan uca testtir.

Tabi, end-to-end testing ile birlikte birçok kavram açığa çıkmaktadır. Örneğin (php için bahsedeceğim), phpunit ile önce test şartlarını yazıyoruz, phpuniti çalıştırdığımızda testin fail olduğunu görüyoruz, çünkü daha şartlar haricinde hiçbir şey yazmadık. Sonra şartları sağlayan yazılım geliştirmesini yapıyoruz. Böylelikle birim test odaklı bir geliştirme yapmış oluyoruz.  End-to-end test odaklı geliştirme yapmak için de davranış odaklı geliştirme diye bir yaklaşım var. Senaryonuz mevcut. Bu senaryoya bağlı birimler kısmen mevcut. Birimlerin başarılı halde testten geçmesinden sonra senaryomuzun da başarıya ulaşması gerekmekte. Yani geliştirici, bir senaryonun varlığından haberdar olursa, yazılımı da ona göre yapar, ona odaklanır demek oluyor bu. Tamam ama bu senaryoyu kim test edecek? (Davranış Odaklı Geliştirme apayrı bir konu, Behaviour Driven Development, BDD diye aratabilirsiniz)

“Benim yazılımımızı test etmek için çalıştırdığım bir ekibim var. Onlar sabahtan akşama kadar yazılımımızın her özelliğini en ince ayrıntısına kadar inceler, test eder, raporlar, bana ve yazılımcılarımıza sunarlar.” mı diyorsunuz? Bunun iş yükü olduğundan, hatta gereksiz bir iş olduğundan kuşkunuz vardır umarım. Mesela anasayfanızda tıklandığında herbiri ekrana alfabenin 28 (Ğ hariç) harfiyle başlayan ve aynı harfle biten onbin karakterli makale getirecek 28 buton olsun. Test yapan ekip üyeniz, bu butonlara ayrı ayrı tıklayacak, ilk harf “a” mı, son harf “a” mı, 10bin karakter mi, diye 28 kere kontrol yapacak. Bunun yerine web browser’ı simule eden bir otomasyon yazarsanız, bu testin aynısını o sizin için yapacaktır.

Bu işi yapmak için birçok araç bulunmakta. Codeception, Sauce Labs, TestingWhiz, CrossBrowserTesting gibi. Laravel Dusk da bunlar gibi bir araç olacak. İlk yorumlarda Dusk’ın Codeception’dan çok daha hızlı olduğu söylenmekte. ChromeDriver ve Facebook Php-webdriver’ı kullanacak olan Dusk, bizi JDK ve Selenium kurmaktan kurtaracakmış. Kuranlarınız bilir, özellikle linux sistemlerde selenium kurmak ve özelliklerinin hepsini çalıştırmak tam bir karın ağrısı.

Dusk ayrıca Javascript ve CSS’lerin de beklenildiği gibi çalışıp çalışmadığını test edecek. Başarısız testlerin ekran görüntüsünü kaydedecek. Herhangi bir kullanıcıya göre sayfanın nasıl görüneceğini “loginas” ile test edebilecek. Tek başına çoklu pencere açıp Socket programlama testleri yapabilecek.

Açıkçası Laravel Dusk’ı kullanmak için sabırsızlanıyorum.

Bu yazıyı paylaş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir