DevOps & Test
Yeşil test yeterli değil
JUnit 5, Mockito, TDD döngüsü, Spring test slice'ları, Docker katmanları, CI/CD ve kod kalitesi.
13 ders 119 dk toplam süre Sertifikan
Bu konunun dersleri şu çalışma yollarında: Güvenle Değiştirmek (13) , Üretimde Ayakta Kalmak (5)
Başlangıç
Orta
- 1/3 yıldız2/3 yıldız3/3 yıldız TDD — Red, Green, Refactor TDD'de testi koddan önce yazarsın ve önce kırmızı yandığını görürsün. Neden? Hiç kırmızı yanmamış bir test, gerçekten bir şeyi kontrol ettiğini hiç kanıtlamamıştır. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Docker Katman Cache ve İmaj Boyutu Docker imajı üst üste dizilmiş katmanlardan oluşur ve bir katman değişirse üstündekilerin hepsi yeniden hazırlanır. Dockerfile'daki satırların sırası, build'in 10 saniye mi 100 saniye mi süreceğini bu yüzden belirler. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Spring Test Dilimleri ve Context Cache Test dilimleri (@WebMvcTest gibi) uygulamanın yalnızca bir parçasını açar. Bütün test süresini sanıldığı kadar düşürmezler, çünkü Spring açtığı uygulamayı zaten testler arasında paylaşır. Asıl yavaşlık farklı ayarların sayısından gelir. 10 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Testcontainers — Gerçek Veritabanı, Tek Konteyner, Kilitli Kapı ✦ yeni Testcontainers testlere gerçek bir PostgreSQL verir. Konteyneri nerede başlattığın, kaç kez başlayacağını ve Spring'in context cache'iyle anlaşıp anlaşamayacağını belirler. Yanlış yerde başlatırsan testler eski porta bağlanmaya çalışır. 9 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Yayın Stratejileri — Hatalı Sürüm Kaç Kişiye Dokunur? ✦ yeni Aynı yeni sürüm dört yolla yayına çıkabilir: hepsini durdurup başlatmak, pod pod değiştirmek, ikinci bir ortama geçmek ya da önce küçük bir dilime açmak. Seçim; kesintiyi, hatanın kaç kişiye dokunacağını ve geri dönüş hızını belirler. 9 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Özellik Bayrakları — Deploy Ettim Ama Kimse Görmedi ✦ yeni Özellik bayrağı, kodu yayına almak ile özelliği açmayı birbirinden ayırır. Kod bayrağın arkasında kapalı bekler; önce çalışanlara, sonra küçük bir dilime açılır. Hata çıkarsa kapatmak bir deploy değil, saniyelik bir dokunuştur. 8 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız CI Pipeline — Geri Bildirim Neden Bu Kadar Geç Geliyor? ✦ yeni Yavaş bir pipeline çoğu zaman aynı işi her koşuda baştan yapar ve birbirini beklemesi gerekmeyen aşamaları sıraya dizer. Cache tekrarı keser, paralel aşamalar bekleyişi kısaltır, hızlı testler kötü haberi erkene çeker. 9 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Sözleşme Testleri — Karşı Servis Değişince Kim Kırılır? ✦ yeni Bir servis başka bir servisin cevabını okuyorsa, karşı tarafın değişikliği onu kırabilir. Mock'lar bunu göremez, uçtan uca testler geç görür. Tüketici odaklı sözleşme testi, tüketicinin neyi okuduğunu sağlayıcının her build'inde doğrular. 9 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Sırlar — Parola Git'e Girerse Ne Olur? ✦ yeni Bir API anahtarı ya da veritabanı parolası Git'e, imaja ya da loga girerse oradan kolay kolay çıkmaz. Sırlar çalışma anında, bir sır deposundan verilmeli; sızan bir sır silinmez, değiştirilir. 9 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Kararsız Testler — Kod Değişmedi, Test Neden Bir Kırmızı Bir Yeşil? ✦ yeni Aynı kodla bazen geçen bazen kırılan test, ekibin testlere olan güvenini yer. Sebep neredeyse her zaman dört yerden biridir: saat, sıra, paylaşılan durum, beklemek. Tekrar deneme kırmızıyı gizler; sebebi bulup kapatmak gerekir. 9 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Kapsama ve Mutasyon — Yüzde Yüz Test, Hata Nasıl Geçti? ✦ yeni Kapsama oranı bir satırın test sırasında çalıştığını söyler, doğru sonuç verdiğini değil. Mutasyon testi kodda bilerek küçük hatalar yapar ve testlerin onları yakalayıp yakalamadığına bakar; yaşayan değişiklik eksik kontrolü gösterir. 8 dk
- 1/3 yıldız2/3 yıldız3/3 yıldız Çok Modüllü Maven — common'ı Değiştirdim, Neyi Derlemeliyim? ✦ yeni Yalnızca değişen modülü derleyen build yeşil kalır ama değişikliği kullanan modülleri hiç denemez. -am bağımlı olunanları, -amd bağımlı olanları ekler; kütüphane sürümleri tek yerde, dependencyManagement'ta tutulur. 9 dk