CI/CD Başlaması, Kalite Kontrolü Sonlandırırsa?
DevOps hareketi, yazılım dağıtım hızını attırdı. Günde 5-10 sürüm çıkaran kuruluşlar, yıl önce ayda bir sürüm çıkarıyordu. Ancak bu hız, kalite kontrol atlanırsa, hızlı hata dağıtımı anlamına gelir.
Gerçek durum: CI/CD pipeline'ında test yoksa veya zayıfsa, her sürüm canlı ortama potansiyel hata taşır. Aylık sürüm 95% güvenle çıkabilirse, günde 10 sürüm %40 güvenle çıkar.
Çözüm: Continuous Testing. Her git push'ta, otomatik testler koşmalı, sonuçlar anında raporlanmalı, hata bulunan kod merge edilmemeli.
Test Pipeline Tasarımı
Test pipeline, hızlı ve güvenli olmalıdır. Hızlı çünkü geliştirici feedback beklemek istemez. Güvenli çünkü hatalı kodu üretim ortamına sokmamak gerekir.
Aşama 1: Build (Derleme) - 1-2 Dakika
Kod derlenir. Syntax hatası var mı? Bağımlılıklar yüklü mü? Bu aşama başarısız olursa, aşağıdaki testler koşmaz.
Aşama 2: Unit Tests (Birim Testler) - 5-10 Dakika
Geliştiriciyle beraber yazılan testler koşur. Fonksiyonlar, metodlar doğru çalışıyor mu?
Bu aşamada geçiş oranı %90+. Başarısız olursa, kod reviewer'a bu hata gösterilir.
Aşama 3: Code Quality (Kod Kalitesi) - 2-3 Dakika
SonarQube, Checkstyle, ESLint gibi araçlar, kod stiline ve mantık hatalarına bakar.
- "Yorum yazılmamış fonksiyon var"
- "Dead code (kullanılmayan kod) var"
- "SQL injection riski var"
Kalite eşiği belirlenirse (örn: %80 code coverage, 0 critical issue), bu aşama başarısız olabilir.
Aşama 4: Integration Tests (Entegrasyon Testleri) - 10-20 Dakika
API testleri, veritabanı testleri koşur. Birim testlerin kaçırdığı hataların çoğu burada bulunur.
Aşama 5: E2E Tests (End-to-End Testler) - 20-40 Dakika
Tarayıcıda giriş yap, ödeme yap, rapor oluştur gibi tam senaryolar test edilir. En yavaş aşamadır.
Bu aşama başarısız olursa, manuel inceleme gerekebilir (flaky test mi, gerçek sorun mu?).
Aşama 6: Performance Tests (Performans Testleri) - 30-60 Dakika
Gecede veya hafta sonları koşabilen, zaman alıcı testler. Load test, stres test.
Aşama 7: Security Tests (Güvenlik Testleri) - 30-60 Dakika
Açık kaynakça kütüphaneler (Snyk, Dependabot), SQL injection, XSS kontrolleri. SAST (Static Application Security Testing) araçları.
Toplam pipeline süresi: 70-120 dakika (2-3 saat)
Kalite Kapısı (Quality Gate) Konsepti
Git push'ta, test pipeline koşar. Tüm testler yeşil olması gerekir. Eğer başarısız olursa, kod merge edilmez. Bu, kalite kapısıdır.
Kalite kapısı tanımı:
- Tüm unit testler geçmeli (%99 geçiş oranı hedefi)
- Code coverage %80+
- 0 critical security issue
- API testleri %100
- E2E testler (critical path) %95+
Başarısız testler:
- Geliştirici notification alır
- Sorunun ne olduğunu anlamaya çalışır
- Kodu düzeltir, yeniden push'eder
- Pipeline yeniden koşur
Bu döngü, "build-test-fix" olarak adlandırılır ve DevOps'un kalbi.
Paralel Test Çalıştırma
Testleri sırayla çalıştırmak, 2 saate mal olabilir. Paralel çalıştırmak 30 dakikaya düşürebilir.
Nasıl?
Makine parallelleştirmesi: 10 sunucuyu paralel olarak 10 farklı test grubunu çalıştırsın. Her biri 12 dakika koşar, toplam 12 dakika (sıra yerine). Örneğin, unit testler üç parallelde, entegrasyon testleri üç parallelde, E2E testler üç parallelde koşabilir.
Jenkins, GitLab CI, GitHub Actions bu özellikleri sunar. Pipeline'da parallel keyword'ü kullanarak testleri ayrı joblar'da çalıştırabilirsin.
Test splitter: 100 E2E test senaryosu, 5 paralel makinede koşsun. Her makine 20 test koşar.
Dikkat: Testler bağımsız olmalı. Başarısızlık sıraya bağlı olmamak.
Test Raporlama ve Görselleştirme
Pipeline tamamlandığında, sonuçlar rapor edilir:
- Kaç test koştu, kaç geçti, kaç başarısız oldu?
- Ortalama yanıt süresi ne?
- Code coverage %'si
- Performance metrikler
Good tools:
- Jenkins: X-Ray eklentisi ve HTML raporları oluşturabilir
- GitLab: Entegre test raporlama ve görselleştirme
- GitHub: Test artifact'ları ve deployment geçmişi
- Splunk, Datadog: Gerçek zamanlı monitoring ve alerting
Raporlar, stakeholder'lara sunulmalı:
- Yönetim: "Kalite %95 başarı oranında"
- CTO: "Performance 2% iyileşti"
- Geliştirici: "Login testi başarısız, satır 234"
Yazılım test stratejisinin genel öğreniş ve best practices için, Yazılım Test ve Kalite Güvence rehberi adlı kapsamlı kaynağımıza başvurun.
Flaky Test Problemi
Test rasgele başarısız oluyor. İşletim sistemi zamanlaması, ağ gecikmesi, veritabanı bağlantı havuzu - nedenler kompleks.
Flaky testler, CI/CD pipeline'ın en büyük sorunu:
- Geliştirici kodu değiştirmedi, ama test başarısız oldu. Daha yazık.
- "Eh, belki retry ederse geçer" diyerek kod merge ediliyor.
- Production'da gerçek hata patlıyor.
Çözüm:
- Test retry: Başarısız test hemen tekrar koş. İkinci denemede geçerse, sorun flaky'dir.
- Sorun tanılama: Neyin flaky olduğunu buluncaya kadar test kodunu incele.
- Beklemeleri düzelt: Async operation için explicit wait yazılmalı.
- Test ortamı: Veritabanı sıfırlanmıyor mu? Her test temiz durumda başlamalı.
Flaky test oranı %5'ten fazlaysa, test altyapısında ciddi sorun vardır.
Shift-Left ve Shift-Right Testing
Shift-Left: Testi Erken Başlat
Geleneksel: Kod tamamlandı -> Test -> Production.
Shift-Left: Tasarım aşaması -> Birim testleri -> Entegrasyon -> Production.
Avantaj: Hata erken bulunur, düzeltilmesi ucuza mal olur.
Shift-Right: Production'da Monitör Et
Hata tamamı test aşamasında bulunmamaya bilir. Production'da real users, real data, real issues.
Monitoring ve observability araçları (DataDog, New Relic, Splunk) production'da testleri simüle eder:
- Her 5 dakikada critical API'ları test et (synthetic monitoring)
- Errors, latency, availability takip et
- Eğer metriklerin eşiği aştıysa, alert gönder
Shift-Right, DevOps'un ikinci ayağı. Shift-Left sadece geliştirme hızını artırır, Shift-Right kesinlikle güvenilirliği artırır.
Continuous Testing Sürecine Entegrali Örnekler
GitHub Actions
GitHub Actions'ta CI/CD pipeline kurulumu, olaylar (push, pull request) tanımlayarak başlar. Ardından işler tanımlanır: checkout, gerekli araçları kur (Java, Node.js), kodu derle, birim testleri çalıştır, doğrulama yapıl ve sonuçları sanat olarak sakla. Bu sayede her işlem otomatik olarak test edilir.
GitLab CI
GitLab CI'da benzer şekilde, pipeline aşamaları tanımlanır: derleme, test, dağıtım. Test aşamasında birim testler çalıştırılır, test sonuçları (JUnit biçimi) raporlanır ve kod kapsamı metriği hesaplanır. Bu metrik, çekme isteği'nde görüntülenerek kapsam eğilimini takip etmeyi sağlar.
Kaliteli CI/CD Pipeline için Checklist
- Unit test coverage %80+
- E2E testler critical path'lar kapsıyor mu?
- API testler tüm endpoint'leri kapsıyor mu?
- Code quality threshold belirlenmiş mi?
- Security scanning entegre edilmiş mi?
- Test raporları erişilebilir mi?
- Başarısız test bildirimi aktif mi?
- Flaky test takibi yapılıyor mu?
- Test ortamı production'a benzer mi?
- Performance baseline'ı tanımlanmış mı?
CI/CD Pipeline Altyapısı Maliyeti
CI/CD pipeline'ı kurmanın maliyeti, değerlendirme gerektiren bir yatırımdır:
Senaryo 1: Startup (10 geliştirici, 20 daily commit)
GitHub Actions (Cloud-based):
- Lisans: GitHub Pro (10 kişi): 2.100 USD/yıl
- Runner minutes: 20 daily commit x 30 min/pipeline = 600 min/ay = 200 USD/ay = 2.400 USD/yıl
- Third-party tool'lar: SonarQube (3.000 USD), Snyk (500 USD)
- Yıllık Toplam: 8.000 USD
- Setup süresi: 1 hafta
Jenkins (Self-hosted):
- Sunucu: 2 vCPU, 8 GB RAM, 100 GB disk = 100 USD/ay = 1.200 USD/yıl
- Jenkins admin (10% zaman): 10.000 USD/yıl
- Plugins, upgrades: 2.000 USD/yıl
- Yıllık Toplam: 13.200 USD
- Setup süresi: 3-4 hafta
Senaryo 2: Kurumsal (100 geliştirici, 500 daily commit)
GitLab Enterprise:
- Lisans: 101-200 kişi: 25.000 USD/yıl
- Runner'lar: Kendi'niz host (self-hosted), sunucu: 3.000 USD/yıl
- Administration: DevOps mühendisi (1 full-time): 80.000 USD/yıl
- Yıllık Toplam: 108.000 USD
Jenkins Enterprise (kurumsal):
- Sunucular: 4 x 100 USD/ay = 4.800 USD/yıl
- Jenkins Enterprise Support: 10.000 USD/yıl
- Admin (1.5 kişi): 120.000 USD/yıl
- Araçlar ve integrasyonlar: 20.000 USD/yıl
- Yıllık Toplam: 154.800 USD
Test Pipeline'ın İş Değeri
CI/CD yapılı test, şöyle değer sunar:
| Metrik | Öncesi | Sonrası | Tasarruf |
|---|---|---|---|
| Build-to-Production Süresi | 3-4 hafta | 1-2 gün | %90 hız |
| Release başarı oranı | 75% | 99% | %24 iyileşme |
| Hotfix süresi | 48 saat | 2 saat | 96% azalış |
| Geliştirici feedback time | 24 saat | 10 dakika | %98 hız |
| Production downtime | 50 saat/yıl | 2 saat/yıl | 96% azalış |
Test Pipeline Optimizasyonu
1. Test Süresi Azaltma
Pipeline şimdi 2 saat koşuyor. Bu, geliştirici feedback çok yavaş.
Optimizasyon:
- Parallelleştirme: 10 makine, 6 parça halinde = 20 dakika
- Fast-fail: Unit test hemen başlat, başarısız olursa durdur
- Test subset: Quick smoke test, critical path'lar
- Full regression: Gece otomatik koş
Hedef: 15-20 dakika içinde developer feedback.
2. Flaky Test Azaltma
Flaky test, güven azaltır. Pipeline'da 1 flaky test = ekip confidence %30 düşer.
Stratejiler:
- Retry: Başarısız test, otomatik 2 kez daha koş
- Quarantine: Flaky test'ler temporary disable, separate tracking
- Root cause: Neden flaky'dir? Async wait mi, timing issue mi?
- Monitor trend: Dashboard'da flaky test ratio'su takip et
Hedef: Flaky rate < %1.
3. Kod Kalitesi Gate'leri
Tüm commit'ler, kalite eşiği geçmelidir. Kod kalitesi kontrolü, pipeline'ın kritik bir parçasıdır. Unit test başarı oranı %99 üzerinde olmalı. Kod kapsama alanı %80'inin üzerinde tutulmalı. SonarQube ile kod kalitesi, A+ rating almalı. Güvenlik açıkları kontrol edilmelidir (0 critical, 0 high vulnerability). Performans, önceki baseline'dan %10'dan fazla yavaş olmamalıdır.
Eğer bu kriterlerin herhangi biri başarısız olursa, kod merge edilmez. Geliştirici, hatalar hakkında hemen bilgilendirilir ve düzeltme yapması istenir.
4. Test Data Management
Test data kurulması, pipeline'ın %30'unu alabilir.
Optimizasyon:
- Mock service'ler: Gerçek database yerine in-memory mock
- Database snapshot'ı: Önceden prepared state, her test reset
- Parallel data schema: Her test parallel worker'ın kendi database'i
- Test data generator: Fake data otomatik oluştur
Hedef: Test data kurulumu < 2 dakika.
Continuous Testing Best Practices
1. Test Kategorilendirmesi
Testler, hızlarına ve kapsamlarına göre kategorilere ayrılmalıdır. Hızlı testler (@fast) - birim testler, 1 saniyeden az - her push'ta çalıştırılmalı. Orta hızlı testler (@medium) - entegrasyon testleri, 1-30 saniye - her commit'te çalıştırılmalı. Yavaş testler (@slow) - end-to-end senaryolar, 30 saniyeden fazla - gece veya haftalık olarak çalıştırılmalı. Kritik path testleri (@smoke), tüm pipeline'larda hızlı çalışmalı. Performans testleri (@performance) - yük testleri - haftalık, maliyeti yüksek oldukları için. Güvenlik testleri (@security) - penetrasyon testleri - aylık çalıştırılmalı.
Her test kategorisinin, CI/CD'de kendi aşaması (stage) olmalı. Bu şekilde, hızlı feedback ve güvenilir kalite kontrol sağlanır.
2. Shift-Right: Production Monitoring
Tüm test'ler green oldu, hala production'da fail olabilir. Real users, real data, real conditions.
Synthetic Monitoring:
- Her 5 dakikada critical endpoint'i test et
- Performance baseline takip et
- Error rate takip et
- Alert: metric eşiği aştığında (otomatik)
Tools: Datadog, New Relic, Splunk, Prometheus.
CI/CD Başarısızlığında Rollback
Deployment başarısız oldu. Ne yapmalı?
Strategy 1: Immediate Rollback
- Yeni versiyon deploy'landı, hata yakalandı
- Otomatik rollback: Önceki versiyon restore
- Avantaj: Hızlı recovery
- Dezavantaj: Database schema change varsa, rollback sorun
Strategy 2: Canary Deployment
- Yeni versiyon, %10 user'a gider
- Metrik'leri 5 dakika monitor et
- Sorun yoksa, %100'e çık
- Sorun varsa, rollback
Tools: Spinnaker, Argo CD, GitOps.
Strategy 3: Feature Flag
- Yeni feature deploy edildi ama disabled
- Staging'de tamamen test edildi
- Production'da kademeli enable et
- Sorun olursa, feature flag kapatıp iki roll'a geri dön
Tools: LaunchDarkly, Split.io, Unleash.
Test Raporlama ve Dashboard'lar
Kimler, hangi metrikleri görmek istemiş?
Geliştirici: "Bu test niye başarısız? Satır kaç?"
- Detailed failure logs, stack trace
- Failed test code snippet
- Assertion detaylı message
QA Manager: "Test coverage ne? Hata bulma rate?"
- Kod kapsam oranı trendi
- Hata tespit oranı
- Test çalıştırma süresi trendi
CTO: "Build frequency, release lead time, failure rate?"
- DORA metrikleri (DevOps Research & Assessment)
- Dağıtım sıklığı
- Değişiklik teslim süresi
- Değişiklik başarısızlık oranı
- Ortalama kurtarma süresi
Dashboard tool'ları: Grafana, Jenkins Blue Ocean, GitLab built-in.
Yazılım Test Stratejisinin Genel Bağlamında CI/CD
Yazılım test stratejisinin genel öğrenişi ve best practices için, Yazılım Test ve Kalite Güvence rehberi adlı kapsamlı kaynağımıza başvurun.
Smart Maple CI/CD Test Entegrasyonu
Yazılım geliştirme ve dağıtım hızını kaybetmeden kaliteyi sağlamak, CI/CD test stratejisinin doğru tasarımıyla başlar. Smart Maple, GitHub Actions, GitLab CI, Jenkins ve diğer CI/CD platformlarında test pipeline tasarımı, kalite kapısı kurma, paralel test çalıştırma ve flaky test yönetimi hizmetleri sunur. Continuous testing yaklaşımıyla, hatasız yazılımı hızla pazara çıkarmanıza yardımcı oluruz. DevOps'ta kalite sağlamak için smart-maple.com adresini ziyaret edin ve entegrasyon hizmetlerimiz hakkında bilgi alın.
Related Articles
MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı
Read MoreLLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek
Read MoreBilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri
Read More
