How Guru’s Engineers Use Cypress for Better Burn Testing

Yanma testini daha iyi yönetmek mi istiyorsunuz? İki ön uç mühendisimiz, Cypress'i kullanarak QA yöntemlerini geliştirme yolunu buldu.
İçindekiler

Guru'da bilgi paylaşımı ile ilgileniyoruz ve yeni, faydalı bir şey keşfettiğimizde, dünyanın bunu bilmesini istiyoruz! Mühendislik ekibimiz, test ve QA sürecinde Cypress kullanıyor. Yeni bir daha iyi yanma testi yürütme yolu buldular ve diğer mühendisler ve testçilerle yeni ve geliştirilmiş süreçlerini paylaşmak istiyorlar.

Geçtiğimiz yıl, test kapsamımızı artırmaya odaklandık - özellikle, ürün akışlarımızın farklı parçalarının, kod güncellemeleri yaptıkça doğru çalıştığını garanti eden uçtan uca тест. Bu tür testler için, web uygulamamızla ve Google Chrome uzantımızla kullanıcı davranışını taklit eden Cypress adlı bir aracı kullanıyoruz. Bu test paketi, yeni kodun UI'mizde bir şeyleri bozmadığını garantilemek için her çekme isteğinde çalışır. Cypress paketi üretim dalımızda başarısız olursa, yeni sürümlerin çıkmasını da engellemek istiyoruz.

Ryan%20and%20Jack%20Talk%20About%20Cypress.png

Geleneksel testlerde aradığımız şey

Üzerinde durduğumuz bir sorun, bazı testlerimizin başarısız olmasıdır ancak bu, UI veya kod ile ilgili nedenlerden kaynaklanmamaktadır. Peki, bu durumlarda Cypress bize nasıl yardımcı olur? Cypress'in davranışını tanımlayabileceğimiz bir kullanıcı olarak hareket etmesini sağlarız. Cypress'in bir hata olduğunu bildirmesini sağlayacak çeşitli değişkenler vardır ama bir kullanıcının bakış açısına göre hiçbir şey yanlış görünmemektedir.

Örneğin, “Bu web uygulamasının şu kısmına git > Yeni bir Guru kartı ekle > Oluşturma sonrası durumu görmeyi bekle” diyen bir test olabilir. Eğer bir kart oluşturma yükleme durumu bir milisaniye fazla kalırsa ve Cypress, orada olmadan önce oluşturma sonrası durumunu aramaya başlarsa, bu test başarılı olamaz (ama çoğu zaman bu test başarılı olacaktır). Bir çekme isteğinde bir kez geçerse, zaman zaman hata verebilecek kodu birleştirebiliriz. Fakat, bunun doğru olup olmadığını bilemeyiz; geçen bir test, kodun doğru olduğunu garanti etmez.

Bu tür bir durum, test kapsamımızın güvenilirliğini düşürmektedir. Sonuç olarak, bir test hatası dağıtım hattımızda ortaya çıktığında, bunun UI ile ilgili bir sorun olup olmadığını veya test ile ilgili olup olmadığını doğrulamamız gerekir. Bunu düzeltmek için, testin üretim kod şubesine geçmeden önce, büyük bir sorunun fark edilip edilemeyeceğini düşünmeye başladık.

Yanma testleri nasıl yardımcı olur

Guru_Collage_Image-Library-23.png

Yanma testlerine girin. Yanma testi, bir şeyi daha sert veya aşırı koşullar altında test etmek için kullanılan bir süreçtir. Bu bazen stres testi veya yük testi olarak da adlandırılır, test edilen yöntem ya da spesifik alanla ilgili olarak değişir.

Guru'da, Cypress suite'mizin bir parçası olarak, kod tabanımıza eklenen yeni veya değiştirilmiş testler için yanma testleri kullanıyoruz. Bu testler birleştirilmeden önce, sırayla birkaç kez çalıştırıyoruz ve hepsinin bir sonraki adımımıza geçmek için geçmesi gerekiyor.

Bu adım, tüm Cypress test paketini çalıştırmadan hemen önce gerçekleşir. Bu sıralamanın avantajı şudur; eğer yanma testi aşaması bir hata üretirse, tüm kontrolü erken bir hata olarak işaretleyebiliriz. Paketin geri kalanını atlamak, zamandan tasarruf etmemizi ve yeni tanıtılan testlerin güvenilir ve hata toleranslı olduğundan emin olmak için gereken döngü sayısını azaltmamız sağlar.

Aradığımız dosyaları bulmak için, mevcut dal üzerinde git diff kullanıyor ve çıktıyı, belirli sayıda test çalıştırmamıza izin veren cypress-repeat adında bir araca parametre olarak sağlıyoruz, bu şekilde yanma testini uçtan uca test paketimize adım olarak ekliyoruz.

Sonuç

Test planlarımızda bu değişikliği yapmak bazı oldukça sağlam olumlu sonuçlar doğurdu. Bizim için yanma testi eklemek, güvenilmez testleri bulma süresini 30 dakikaya kadar azaltabilir.  Ayrıca yeni fonksiyon ekleme süresini de iyileştirir. Yeni eklenen testler artık önce çalıştırıldığından, yapım sürecinin geri kalanına geçmeden önce kararlılığı doğrulamamıza izin veriyor.

Genel olarak, test süreçlerimizi daha verimli ve sağlam hale getirme konusundaki sürekli odaklanmamız, tüm mühendislik ekibinin yeni özellikleri hızlı bir şekilde gönderme güvenini artırmaktadır. Hataları daha hızlı düzeltiyor ve tüm kod tabanlarımızda çalışmayı daha kolay hale getiriyoruz. Bu yazının, diğer Cypress kullanıcılarının daha iyi testler oluşturmasına ve tüm ekiplerin daha verimli bir şekilde çalışmasına yardımcı olacağını umuyoruz.

Guru'da bilgi paylaşımı ile ilgileniyoruz ve yeni, faydalı bir şey keşfettiğimizde, dünyanın bunu bilmesini istiyoruz! Mühendislik ekibimiz, test ve QA sürecinde Cypress kullanıyor. Yeni bir daha iyi yanma testi yürütme yolu buldular ve diğer mühendisler ve testçilerle yeni ve geliştirilmiş süreçlerini paylaşmak istiyorlar.

Geçtiğimiz yıl, test kapsamımızı artırmaya odaklandık - özellikle, ürün akışlarımızın farklı parçalarının, kod güncellemeleri yaptıkça doğru çalıştığını garanti eden uçtan uca тест. Bu tür testler için, web uygulamamızla ve Google Chrome uzantımızla kullanıcı davranışını taklit eden Cypress adlı bir aracı kullanıyoruz. Bu test paketi, yeni kodun UI'mizde bir şeyleri bozmadığını garantilemek için her çekme isteğinde çalışır. Cypress paketi üretim dalımızda başarısız olursa, yeni sürümlerin çıkmasını da engellemek istiyoruz.

Ryan%20and%20Jack%20Talk%20About%20Cypress.png

Geleneksel testlerde aradığımız şey

Üzerinde durduğumuz bir sorun, bazı testlerimizin başarısız olmasıdır ancak bu, UI veya kod ile ilgili nedenlerden kaynaklanmamaktadır. Peki, bu durumlarda Cypress bize nasıl yardımcı olur? Cypress'in davranışını tanımlayabileceğimiz bir kullanıcı olarak hareket etmesini sağlarız. Cypress'in bir hata olduğunu bildirmesini sağlayacak çeşitli değişkenler vardır ama bir kullanıcının bakış açısına göre hiçbir şey yanlış görünmemektedir.

Örneğin, “Bu web uygulamasının şu kısmına git > Yeni bir Guru kartı ekle > Oluşturma sonrası durumu görmeyi bekle” diyen bir test olabilir. Eğer bir kart oluşturma yükleme durumu bir milisaniye fazla kalırsa ve Cypress, orada olmadan önce oluşturma sonrası durumunu aramaya başlarsa, bu test başarılı olamaz (ama çoğu zaman bu test başarılı olacaktır). Bir çekme isteğinde bir kez geçerse, zaman zaman hata verebilecek kodu birleştirebiliriz. Fakat, bunun doğru olup olmadığını bilemeyiz; geçen bir test, kodun doğru olduğunu garanti etmez.

Bu tür bir durum, test kapsamımızın güvenilirliğini düşürmektedir. Sonuç olarak, bir test hatası dağıtım hattımızda ortaya çıktığında, bunun UI ile ilgili bir sorun olup olmadığını veya test ile ilgili olup olmadığını doğrulamamız gerekir. Bunu düzeltmek için, testin üretim kod şubesine geçmeden önce, büyük bir sorunun fark edilip edilemeyeceğini düşünmeye başladık.

Yanma testleri nasıl yardımcı olur

Guru_Collage_Image-Library-23.png

Yanma testlerine girin. Yanma testi, bir şeyi daha sert veya aşırı koşullar altında test etmek için kullanılan bir süreçtir. Bu bazen stres testi veya yük testi olarak da adlandırılır, test edilen yöntem ya da spesifik alanla ilgili olarak değişir.

Guru'da, Cypress suite'mizin bir parçası olarak, kod tabanımıza eklenen yeni veya değiştirilmiş testler için yanma testleri kullanıyoruz. Bu testler birleştirilmeden önce, sırayla birkaç kez çalıştırıyoruz ve hepsinin bir sonraki adımımıza geçmek için geçmesi gerekiyor.

Bu adım, tüm Cypress test paketini çalıştırmadan hemen önce gerçekleşir. Bu sıralamanın avantajı şudur; eğer yanma testi aşaması bir hata üretirse, tüm kontrolü erken bir hata olarak işaretleyebiliriz. Paketin geri kalanını atlamak, zamandan tasarruf etmemizi ve yeni tanıtılan testlerin güvenilir ve hata toleranslı olduğundan emin olmak için gereken döngü sayısını azaltmamız sağlar.

Aradığımız dosyaları bulmak için, mevcut dal üzerinde git diff kullanıyor ve çıktıyı, belirli sayıda test çalıştırmamıza izin veren cypress-repeat adında bir araca parametre olarak sağlıyoruz, bu şekilde yanma testini uçtan uca test paketimize adım olarak ekliyoruz.

Sonuç

Test planlarımızda bu değişikliği yapmak bazı oldukça sağlam olumlu sonuçlar doğurdu. Bizim için yanma testi eklemek, güvenilmez testleri bulma süresini 30 dakikaya kadar azaltabilir.  Ayrıca yeni fonksiyon ekleme süresini de iyileştirir. Yeni eklenen testler artık önce çalıştırıldığından, yapım sürecinin geri kalanına geçmeden önce kararlılığı doğrulamamıza izin veriyor.

Genel olarak, test süreçlerimizi daha verimli ve sağlam hale getirme konusundaki sürekli odaklanmamız, tüm mühendislik ekibinin yeni özellikleri hızlı bir şekilde gönderme güvenini artırmaktadır. Hataları daha hızlı düzeltiyor ve tüm kod tabanlarımızda çalışmayı daha kolay hale getiriyoruz. Bu yazının, diğer Cypress kullanıcılarının daha iyi testler oluşturmasına ve tüm ekiplerin daha verimli bir şekilde çalışmasına yardımcı olacağını umuyoruz.

Guru platformunun gücünü ilk elden deneyimleyin - etkileşimli ürün turumuzu yapın
Tur yapın