İ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.