İçindekiler
- Manuel Test vs Otomasyon Testleri
- End to End (E2E) Test Nedir?
- Biz Nasıl Kullandık?
- Senaryolar Nasıl Düşünülmeli?
- End to End Testin Faydaları
Yazılım geliştirme sürecinde test senaryolarının oluşturulması en az kodu geliştirmek kadar önemlidir. Pipeline’da çalışan test senaryoları, geliştirme sırasında ortaya çıkabilecek olası bugların geliştirme henüz müşteriye sunulmadan önce fark edilmesini sağlar. Projelerin yapıları ve içerdikleri akışlara göre uyguladığımız test yöntemleri de çeşitlilik gösterir. Bu yazımızda Craftgate’de uyguladığımız End to End (e2e) test süreçlerinden bahsedeceğiz.
Manuel Test vs Otomasyon Testleri
Manuel Test, test senaryolarının insan eliyle koşulduğu bir yöntemken; otomasyon testi projenin tamamlandığı anda çalışan, senaryoların test kodu üzerinde koşulmasına olanak sağlayan bir yöntemdir. Her iki yöntemin de avantajlı ve dezavantajlı olduğu konular vardır. Örneğin manuel test için her yapılan geliştirmede aynı senaryoları insan gücü ile koşarken otomasyon testleri ile bu iş yükünden kurtulmuş oluruz. Craftgate olarak test süreçlerimizin mümkün olduğunca otomatize edilmiş şekilde koşulmasından yanayız. Bu şekilde gerek yeni özellik geliştirmelerinde, gerekse var olan yapıların refactoring süreçlerinde kendimizi güvende hissederiz.
End to End (E2E) Test Nedir?
Craftgate olarak sunduğumuz hizmetler birçok servis ve teknolojileri içerir. Bu sistem içerisinde geliştirmeler için unit test, integration test gibi pratikleri uygularız. Ancak uygulama veya servislerin bireysel davranışlarının yanı sıra tüm bu orkestrasyonun da birbiriyle olan etkileşimi sonucu müşterilerimize yönelttiğimiz cevapların test edilmesi de bizim için önem arz eder. İşte tam bu noktada müşterilerimize sunduğumuz özellikleri, onların gözünden End to end olarak test ediyoruz.
Bu testler ile başarılı ve başarısız senaryoların entegrasyon noktalarımızdan verilen inputlar aracılığı ile tüm sistemde akmasını sağlıyoruz. Nihayetinde oluşan değerlerin beklentimize uygun olup olmadığını teyit ediyoruz. Bu testlerde başarılı senaryoların sonucunda dönecek cevapların yanı sıra başarısız senaryolar sonucunda oluşabilecek hataların içeriklerini de doğrulamayı önemsiyoruz.
Bu testlerdeki hedefimiz son kullanıcının karşılaşabileceği senaryoları pipeline’da çalışacak şekilde otomatize etmektir. Bu sayede;
- Test süreçlerinde oluşabilecek insan hatası riskini minimize etmiş,
- Test ve geliştirme süreçlerindeki zaman maaliyetini düşürmüş,
- Sistemin uçtan uca birbiriyle uyumlu bir şekilde çalışarak doğru sonuçları döndüğünden yani veri bütünlüğünden emin olmuş oluyoruz.
Biz Nasıl Kullandık?
Ödeme domaini için birçok akışta end to end test yöntemi kullanılabilir. Örneğin müşterilerimize sunduğumuz; kart kaydetme, ödeme, taksit sorgusu gibi servisler dahil olmak üzere hemen hemen her sürecin senaryosunu end to end test yöntemi ile senaryolaştırmak mümkündür. End to end test geliştirmesi sağlanabilecek bir çok tool var, bizim tercihimiz ise Cucumber oldu.
Senaryolar Nasıl Düşünülmeli?
- Test senaryoları son kullanıcının bakış açısından tasarlanmalıdır.
- Başarılı ve başarısız birçok senaryo test kapsamına dahil edilmelidir. Bu sayede kullanıcının karşılaşabileceği hataları henüz onlar yaşamadan bizim yakalama ihtimalimiz artacaktır.
End to End Testin Faydaları
- End to end testlerin syntax’ları gereği konuşur gibi senaryolar oluşturulabilir. Bu testleri yazarken algoritma bilgisinden ziyade test senaryolarının oluşturulması ve kapsamının belirlenmesi önemlidir.
- Bazı testler her geliştirme sonucu manuel olarak tekrar tekrar yapılır. End to end testler sayesinde her yapılan geliştirme sonucu QA’ lerin yapacağı standart test süreçleri otomatize edilerek test süreçlerinde ciddi hız kazanılır.
- End to end testler sürekli pipeline’da çalışır olarak tanımlandığında geliştirme sonucu ortaya çıkabilecek bir bug’ı çok erken fark etme imkanı sunar. Çalışma periyotları her commit öncesi, pr öncesi veya haftalık-günlük-saatlik şekilde tanımlanarak belirli periyotlarda çalışacak şekilde tanımlanabilir.
- Tek bir testle çok geniş bir kapsamı test sürecine dahil etmiş oluruz. Unit veya Integration testlerle tek bir uygulama veya servislerin sonucundaki çıktıyı doğrularken end to end test ile birbirine zincir halde bağlı uygulamalar sonucu müşteriye dönülecek sonuç doğrulanır.
- Geliştirme süresi maliyetini azaltır.