İletki - Javascript Testi Kavramları

Protractor ile çalışmak için JavaScript bilgisi gerekli olduğundan, bu bölümde JavaScript testi kavramlarını ayrıntılı olarak anlayalım.

JavaScript Testi ve Otomasyon

JavaScript, dinamik olarak yazılmış ve yorumlanan en popüler betik dilidir, ancak en zorlu görev kodu test etmektir. Bunun nedeni, JAVA ve C ++ gibi diğer derlenmiş dillerin aksine, JavaScript'te test uzmanının hataları anlamasına yardımcı olabilecek hiçbir derleme adımının olmamasıdır. Ayrıca, tarayıcı tabanlı testler çok zaman alır; bu nedenle JavaScript için otomatik testi destekleyen araçlara ihtiyaç vardır.

Otomatik Test Kavramları

Kodu daha iyi hale getirdiği için testi yazmak her zaman iyi bir uygulamadır; manuel test ile ilgili sorun, biraz zaman alıcı ve hataya açık olmasıdır. Manuel test süreci programcılar için de oldukça sıkıcıdır çünkü süreci tekrarlamaları, test özelliklerini yazmaları, kodu değiştirmeleri ve tarayıcıyı birkaç kez yenilemeleri gerekir. Ayrıca manuel test, geliştirme sürecini de yavaşlatır.

Yukarıdaki nedenlerden dolayı, bu testleri otomatikleştirebilecek ve programcıların bu tekrarlayan ve sıkıcı adımlardan kurtulmasına yardımcı olabilecek bazı araçlara sahip olmak her zaman yararlıdır. Test sürecini otomatik hale getirmek için geliştirici ne yapmalıdır?

Temel olarak, bir geliştirici araç setini CLI (Komut Satırı Yorumlayıcı) veya geliştirme IDE (Entegre geliştirme ortamı) içinde uygulayabilir. Daha sonra bu testler, geliştiricinin girdisi olmasa bile ayrı bir süreçte sürekli olarak çalışacaktır. Otomatik JavaScript testi de yeni değildir ve Karma, Açıölçer, CasperJS vb. Gibi birçok araç geliştirilmiştir.

JavaScript için Test Türleri

Farklı amaçlar için farklı testler olabilir. Örneğin, bazı testler bir programdaki işlevlerin davranışını kontrol etmek için yazılırken, bazıları bir modül veya özelliğin akışını test etmek için yazılır. Bu nedenle, aşağıdaki iki tür testimiz var -

Birim Testi

Test, birim adı verilen programın test edilebilir en küçük bölümünde yapılır. Ünite, temelde, o ünitenin diğer parçalara herhangi bir bağımlılığı olmaksızın, izole olarak test edilir. JavaScript söz konusu olduğunda, belirli bir davranışa sahip bireysel yöntem veya işlev bir kod birimi olabilir ve bu kod birimleri yalıtılmış bir şekilde test edilmelidir.

Birim testinin avantajlarından biri, birimlerin birbirinden bağımsız olması nedeniyle birimlerin testinin herhangi bir sırada yapılabilmesidir. Gerçekten önemli olan birim testinin bir diğer avantajı, testi herhangi bir zamanda aşağıdaki şekilde çalıştırabilmesidir -

  • Geliştirme sürecinin en başından itibaren.
  • Herhangi bir modülün / özelliğin geliştirilmesini tamamladıktan sonra.
  • Herhangi bir modülü / özelliği değiştirdikten sonra.
  • Mevcut uygulamaya herhangi bir yeni özellik ekledikten sonra.

JavaScript uygulamalarının otomatik birim testi için Mocha, Jasmine ve QUnit gibi birçok test aracı ve çerçevesinden seçim yapabiliriz.

Uçtan Uca Test

Uygulama akışının baştan sona (bir uçtan diğer uca) tasarıma göre iyi çalışıp çalışmadığını test etmek için kullanılan test metodolojisi olarak tanımlanabilir.

Uçtan uca test, işlev / akış testi olarak da adlandırılır. Birim testinden farklı olarak, uçtan-uca test, tek tek bileşenlerin bir uygulama olarak birlikte nasıl çalıştığını test eder. Bu, birim testi ile uçtan uca test arasındaki temel farktır.

Örneğin, kullanıcının kaydı tamamlamak için bazı geçerli bilgileri sağlaması gereken bir kayıt modülümüz varsa, o zaman söz konusu modül için E2E testi, testi tamamlamak için aşağıdaki adımları izleyecektir -

  • İlk olarak, formu veya modülü yükleyecek / derleyecektir.
  • Şimdi, form öğelerinin DOM'sunu (Belge nesne modeli) alacak.
  • Ardından, çalışıp çalışmadığını kontrol etmek için gönder düğmesinin tıklama olayını tetikleyin.
  • Şimdi, doğrulama amacıyla giriş alanlarından değeri toplayın.
  • Daha sonra, giriş alanları doğrulanmalıdır.
  • Test amacıyla, verileri depolamak için sahte bir API çağırın.

Her adım, beklenen sonuç kümesiyle karşılaştırılacak kendi sonuçlarını verir.

Şimdi, ortaya çıkan soru şu: Bu tür E2E veya fonksiyonel testler manuel olarak da yapılabilirken, bunun için neden otomasyona ihtiyacımız var? Ana sebep, otomasyonun bu test sürecini kolaylaştıracak olmasıdır. Herhangi bir uygulama ile kolayca entegre edilebilen mevcut araçlardan bazıları, bu amaçla Selenium, PhantomJS ve Protractor'dur.

Test Araçları ve Çerçeveleri

Açısal test için çeşitli test araçlarımız ve çerçevelerimiz var. Aşağıdakiler iyi bilinen araçlardan ve çerçevelerden bazılarıdır -

Karma

Vojta Jina tarafından yaratılan Karma, bir test koşucusudur. Başlangıçta bu proje Testacular olarak adlandırıldı. Bu bir test çerçevesi değildir, yani bize gerçek tarayıcılarda JavaScript birim testlerini kolayca ve otomatik olarak çalıştırma yeteneği verir. Karma, AngularJS için oluşturuldu çünkü Karma'dan önce web tabanlı JavaScript geliştiricileri için otomatik test aracı yoktu. Öte yandan, Karma tarafından sağlanan otomasyonla, geliştiriciler basit tek bir komut çalıştırabilir ve tüm bir test paketinin başarılı olup olmadığını belirleyebilir.

Karma kullanmanın artıları

Aşağıdakiler, manuel işleme kıyasla Karma kullanmanın bazı avantajlarıdır -

  • Birden çok tarayıcıda ve cihazda testleri otomatikleştirir.
  • Dosyaları hatalara karşı izler ve düzeltir.
  • Çevrimiçi destek ve dokümantasyon sağlar.
  • Sürekli bir bütünleştirme sunucusuyla bütünleştirmeyi kolaylaştırır.

Karma Kullanmanın Eksileri

Aşağıdakiler Karma kullanmanın bazı dezavantajlarıdır -

Karma kullanmanın ana dezavantajı, yapılandırma ve bakım için ek bir araç gerektirmesidir.

Jasmine ile Karma test koşucusu kullanıyorsanız, bir öğe için birden fazla kimliğiniz olması durumunda CSS'nizi kurma hakkında bilgi bulmak için daha az belge mevcuttur.

Yasemin

JavaScript kodunu test etmek için davranış odaklı bir geliştirme çerçevesi olan Jasmine, Pivotal Labs'ta geliştirildi. Jasmine çerçevesinin aktif olarak geliştirilmesinden önce, dahili bir test çalıştırıcısı olan Pivotal Labs tarafından JsUnit adlı benzer bir birim test çerçevesi de geliştirildi. Tarayıcı testleri, SpecRunner.html dosyası dahil edilerek veya aynı zamanda bir komut satırı test çalıştırıcısı olarak kullanılarak Jasmine testleri aracılığıyla çalıştırılabilir. Karma ile veya Karma olmadan da kullanılabilir.

Yasemin Kullanmanın Artıları

Aşağıdakiler Jasmine'i kullanmanın bazı artılarıdır -

  • Tarayıcı, platform ve dilden bağımsız bir çerçeve.

  • Davranış odaklı geliştirmeyle birlikte test odaklı geliştirmeyi (TDD) destekler.

  • Karma ile varsayılan entegrasyona sahiptir.

  • Sözdizimini anlamak kolay.

  • Ek işlevler olarak test etmeye yardımcı olan test casusları, sahteler ve geçiş işlevleri sağlar.

Yasemin Kullanmanın Eksileri

Aşağıdaki, Jasmine'i kullanmanın bir aleyhidir -

  • Jasmine'de test çalıştırılırken dosya izleme özelliği bulunmadığından testler değiştikçe kullanıcı tarafından iade edilmelidir.

Mocha

Node.js uygulamaları için yazılan Mocha, bir test çerçevesidir ancak tarayıcı testini de destekler. Oldukça Jasmine'e benziyor, ancak aralarındaki en büyük fark Mocha'nın bazı eklentilere ve kitaplığa ihtiyaç duyması çünkü tek başına bir test çerçevesi olarak çalışamıyor. Öte yandan, Jasmine bağımsızdır. Bununla birlikte, Mocha, Jasmine'den daha esnektir.

Mocha kullanmanın artıları

Aşağıdakiler Mocha kullanmanın bazı artılarıdır -

  • Mocha'nın kurulumu ve yapılandırması çok kolaydır.
  • Kullanıcı dostu ve basit dokümantasyon.
  • Birkaç düğüm projesine sahip eklentiler içerir.

Mocha kullanmanın eksileri

Aşağıdakiler Mocha kullanmanın bazı dezavantajlarıdır -

  • İddialar, casuslar vb. İçin ayrı modüllere ihtiyaç duyar.
  • Ayrıca Karma ile kullanmak için ek yapılandırma gerektirir.

QUnit

İlk olarak 2008 yılında John Resig tarafından jQuery'nin bir parçası olarak geliştirilen QUint, güçlü ancak kullanımı kolay bir JavaScript birim test paketidir. Herhangi bir genel JavaScript kodunu test etmek için kullanılabilir. Tarayıcıda JavaScript'i test etmeye odaklanmasına rağmen, geliştirici tarafından kullanılması çok uygundur.

QUnit kullanmanın avantajları

Aşağıdakiler, QUnit kullanmanın bazı avantajlarıdır -

  • Kurulumu ve yapılandırması kolaydır.
  • Kullanıcı dostu ve basit dokümantasyon.

QUnit kullanmanın eksileri

Aşağıdaki, QUnit kullanmanın bir kuraldır -

  • Esas olarak jQuery için geliştirilmiştir ve bu nedenle diğer çerçevelerle kullanım için o kadar iyi değildir.

Selenyum

Başlangıçta Jason Huggins tarafından 2004 yılında ThoughtWorks'te dahili bir araç olarak geliştirilen Selenium, açık kaynaklı bir test otomasyon aracıdır. Selenium kendisini “Selenium tarayıcıları otomatikleştirir. Bu kadar!". Tarayıcıların otomasyonu, geliştiricilerin tarayıcılarla çok kolay etkileşim kurabileceği anlamına gelir.

Selenium kullanmanın artıları

Aşağıdakiler Selenium kullanmanın bazı artılarıdır -

  • Büyük özellik seti içerir.
  • Dağıtılmış testi destekler.
  • Sauce Labs gibi hizmetler aracılığıyla SaaS desteğine sahiptir.
  • Mevcut basit belgeler ve zengin kaynaklarla kullanımı kolaydır.

Selenyum kullanmanın eksileri

Aşağıdakiler Selenium kullanmanın bazı dezavantajlarıdır -

  • Selenium kullanmanın temel bir dezavantajı, ayrı bir işlem olarak çalıştırılması gerektiğidir.
  • Geliştiricinin birkaç adımı izlemesi gerektiğinden yapılandırma biraz zahmetlidir.