İletki - Hata Ayıklama

Artık, İletki'nin tüm kavramlarını önceki bölümlerde gördüğümüze göre, bu bölümde hata ayıklama kavramlarını ayrıntılı olarak anlayalım.

Giriş

Uçtan uca (e2e) testlerinde hata ayıklamak çok zordur çünkü bunlar, o uygulamanın tüm ekosistemine bağlıdırlar. Çeşitli eylemlere bağlı olduklarını gördük veya özellikle oturum açma gibi önceki eylemlere ve bazen de izne bağlı olduklarını söyleyebiliriz. E2e testlerinde hata ayıklamadaki diğer bir zorluk, farklı işletim sistemleri ve tarayıcılarla farklı şekilde hareket ettiği için WebDriver'a bağımlılığıdır. Son olarak, e2e testlerinde hata ayıklama ayrıca uzun hata mesajları oluşturur ve tarayıcıyla ilgili sorunları ayırmayı ve işlem hatalarını test etmeyi zorlaştırır.

Arıza Türleri

Test paketlerinin başarısız olmasının çeşitli nedenleri olabilir ve aşağıdakiler iyi bilinen bazı hata türleridir -

WebDriver hatası

Bir komut tamamlanamadığında, WebDriver tarafından bir hata atılır. Örneğin, bir tarayıcı tanımlı adresi alamaz veya beklendiği gibi bir öğe bulunamaz.

WebDriver beklenmeyen hatası

Web sürücü yöneticisini güncelleyemediğinde, beklenmedik bir tarayıcı ve işletim sistemi ile ilgili bir arıza meydana gelir.

Angular için açıölçer hatası

Açıölçer için Açıölçer'in başarısızlığı, Açıölçer kütüphanede beklendiği gibi Açısal bulamadığında gerçekleşir.

Açıölçer Angular2 hatası

Bu tür bir hatada, İletki, yapılandırmada useAllAngular2AppRoots parametresi bulunmadığında başarısız olur. Bunun nedeni, bu olmadan, test sürecinin süreçte birden fazla öğe beklerken tek bir kök öğeye bakmasıdır.

Zaman aşımı için açıölçer hatası

Bu tür bir başarısızlık, test özelliği bir döngüye veya uzun bir havuza çarptığında ve verileri zamanında döndüremediğinde meydana gelir.

Beklenti hatası

Normal bir beklenti başarısızlığının neye benzediğini gösteren en yaygın test başarısızlıklarından biri.

Protractor'da hata ayıklama neden önemlidir?

Diyelim ki, test senaryoları yazdıysanız ve başarısız oldularsa, bu test durumlarında nasıl hata ayıklanacağını bilmek çok önemlidir çünkü hatanın meydana geldiği yeri tam olarak bulmak çok zor olacaktır. Protractor ile çalışırken, komut satırında kırmızı renkli yazı tipinde bazı uzun hatalar alacaksınız.

Testi Duraklatma ve Hata Ayıklama

Protractor'da hata ayıklamanın yolları burada açıklanmıştır & miuns;

Duraklatma Yöntemi

Protractor'daki test senaryolarında hata ayıklamak için duraklatma yöntemini kullanmak en kolay yollardan biridir. Test kodumuzu & miuns'u duraklatmak istediğimiz yere aşağıdaki komutu yazabiliriz;

browser.pause();

Çalışan kodlar yukarıdaki komuta ulaştığında, o noktada çalışan programı duraklatacaktır. Bundan sonra tercihimize göre aşağıdaki komutları verebiliriz -

İlerlemek için C Tipi

Bir komut ne zaman biterse, ilerlemek için C yazmalıyız. C yazmazsanız, test tam kodu çalıştırmaz ve Jasmine zaman aşımı hatası nedeniyle başarısız olur.

Etkileşimli moda girmek için repl yazın

Etkileşimli modun yararı, WebDriver komutlarını tarayıcımıza gönderebilmemizdir. Etkileşimli moda girmek istiyorsak, yazınrepl.

Testlerden çıkmak ve devam etmek için Ctrl-C yazın

Testten duraklatma durumundan çıkmak ve teste kaldığı yerden devam etmek için Ctrl-C yazmamız gerekir.

Misal

Bu örnekte, aşağıdaki spesifikasyon dosyasına sahibiz example_debug.js, iletki bulucu ile bir öğeyi tanımlamaya çalışır by.binding('mmmm') ancak URL (https://angularjs.org/ Sayfanın belirtilen konumlandırıcıya sahip öğesi yok.

describe('Suite for protractor debugger',function(){
   it('Failing spec',function(){
      browser.get("http://angularjs.org");
      element(by.model('yourName')).sendKeys('Vijay');
         //Element doesn't exist
         var welcomeText = 
         element(by.binding('mmmm')).getText();
         expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
   });
});

Şimdi, yukarıdaki testi yürütmek için yukarıdaki spesifikasyon dosyasında testi duraklatmak istediğiniz tarayıcı.pause () kodunu eklememiz gerekiyor. Aşağıdaki gibi görünecek -

describe('Suite for protractor debugger',function(){
   it('Failing spec',function(){
      browser.get("http://angularjs.org");
      browser.pause();
      element(by.model('yourName')).sendKeys('Vijay');
      //Element doesn't exist
      var welcomeText = 
      element(by.binding('mmmm')).getText();
      expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
   });
});

Ancak çalıştırmadan önce, yapılandırma dosyasında da bazı değişiklikler yapmamız gerekiyor. Daha önce kullanılan yapılandırma dosyasında aşağıdaki değişiklikleri yapıyoruz.example_configuration.js önceki bölümde -

// An example configuration file.
exports.config = {
   directConnect: true,

   // Capabilities to be passed to the webdriver instance.
   capabilities: {
      'browserName': 'chrome'
   },

   // Framework to use. Jasmine is recommended.
   framework: 'jasmine',

   // Spec patterns are relative to the current working directory when

   // protractor is called.
   specs: ['example_debug.js'],
      allScriptsTimeout: 999999,
      jasmineNodeOpts: {
      defaultTimeoutInterval: 999999
   },
   onPrepare: function () {
      browser.manage().window().maximize();
      browser.manage().timeouts().implicitlyWait(5000);
   }
};

Şimdi aşağıdaki komutu çalıştırın -

protractor example_configuration.js

Hata ayıklayıcı yukarıdaki komuttan sonra başlayacaktır.

Hata Ayıklayıcı Yöntemi

Protractor'daki test senaryolarında hata ayıklamak için duraklatma yöntemini kullanmak biraz gelişmiş bir yoldur. Test kodumuzu kırmak istediğimiz yere aşağıdaki komutu yazabiliriz -

browser.debugger();

Test kodunda hata ayıklamak için düğüm hata ayıklayıcısını kullanır. Yukarıdaki komutu çalıştırmak için, test projesi konumundan açılan ayrı bir komut istemine aşağıdaki komutu yazmalıyız -

protractor debug protractor.conf.js

Bu yöntemde, test kodunu devam ettirmek için terminalde de C yazmamız gerekiyor. Ancak duraklatma yönteminin tersine, bu yöntemde yalnızca bir kez yazılmalıdır.

Misal

Bu örnekte, aynı şartname dosyasını kullanıyoruz bexample_debug.jsyukarıda kullanılmıştır. Tek fark, bunun yerinebrowser.pause()kullanmalıyız browser.debugger()test kodunu kırmak istediğimiz yer. Aşağıdaki gibi görünecek -

describe('Suite for protractor debugger',function(){
   it('Failing spec',function(){
      browser.get("http://angularjs.org");
      browser.debugger();
      element(by.model('yourName')).sendKeys('Vijay');
      //Element doesn't exist
      var welcomeText = element(by.binding('mmmm')).getText();
      expect('Hello '+welcomeText+'!').toEqual('Hello Ram!')
   });
});

Aynı yapılandırma dosyasını kullanıyoruz, example_configuration.js, yukarıdaki örnekte kullanılmıştır.

Şimdi, iletki testini aşağıdaki hata ayıklama komut satırı seçeneği ile çalıştırın

protractor debug example_configuration.js

Hata ayıklayıcı yukarıdaki komuttan sonra başlayacaktır.