Test Ortamları Yönetimi: Dev, QA, Staging ve Production Nedir?
Bir yazılım projesinde yazılan kodun canlıya ulaşma süreci hiçbir zaman tek bir düzlemde ilerlemez. Geliştiricinin lokalinde sorunsuz çalışan bir geliştirme; database migrations veya servis entegrasyonları devreye girdiğinde canlı ortamda büyük arızalara yol açabilir.
İşte bu riskleri sıfırlamak ve yazılım yaşam döngüsünü (SDLC) güvenli kılmak için kodumuzu farklı aşamalardan, yani Test Ortamlarından (Test Environments) geçiririz.
Uluslararası yazılım testi standartları (ISTQB) ve modern DevOps pratikleri gözünden, ideal bir pipeline'da bulunması gereken test ortamlarını, işlevlerini ve aralarındaki kritik sınırları inceleyelim.
1. Geliştirme Ortamı (Development / Dev)
Burası kodun ilk kez yazıldığı ve izole şekilde test edildiği alandır. Genellikle geliştiricinin kendi bilgisayarı (Localhost) veya ekibin ortak kullandığı dinamik bir Dev sunucusudur.
Ortamın Karakteri: Sürekli değişir, kararsızdır ve her an bug çıkabilir.
QA Mühendisinin Rolü: QA ekibi bu ortamda manuel test koşmaz. Ancak burada geliştiricilerin yazdığı Birim Testleri (Unit Tests) ve kod kalitesini ölçen statik analiz araçları (SonarQube vb.) devreye girer.
2. Kalite Güvence Ortamı (QA / Test Environment)
Dev ortamında ilk testleri geçen kodların, birleştirilerek (merge) detaylı test süreçlerine tabi tutulduğu izole alandır. QA mühendisinin ana test alanıdır.
Ortamın Karakteri: Geliştiricilerden bağımsız, stabil ve dış etkenlerden izole olmalıdır.
Koşulan Testler: Fonksiyonel testler, sistem testleri, negatif senaryolar ve uçtan uca API doğrulamaları burada yapılır.
Bu ortamda her yeni build geldiğinde ilk olarak sistemin ana fonksiyonlarını kontrol eden Smoke Test koşturulmalıdır.
3. Kabul ve Pre-Prod Ortamı (Staging / UAT)
Sektörde en çok karıştırılan ama en kritik olan nokta burasıdır. Staging, canlı ortamın (Production) birebir kopyasıdır (aynı donanım, benzer veri tabanı hacmi).
Ortamın Karakteri: Canlıya çıkmadan önceki son provadır. Veri tabanı şemaları ve konfigürasyonlar Prod ile eş değerdir.
Kullanıcı Kabul Testleri (UAT): ISTQB perspektifinde UAT testleri QA ortamında değil, bu stabil staging/UAT katmanında yapılır. Ürün sahipleri (Product Owner) ve gerçek kullanıcılar sistemi burada onaylar.
Performans ve Yük Testleri: Sistem gerçek yük altında nasıl davranıyor, veri tabanı şişiyor mu sorusunun cevabı maskelenmiş gerçek verilerle (Data Masking) bu ortamda aranır.
4. Üretim Ortamı (Production / Canlı)
Günün sonunda tüm operasyonun hizmet ettiği, gerçek kullanıcıların ve gerçek paranın döndüğü son duraktır.
Ortamın Karakteri: Maksimum güvenlik, sıfır hata toleransı ve yüksek erişilebilirlik.
Canlı Sonrası Test (Post-Production Testing): Canlıya yeni bir sürüm çıkıldığında, QA ekibi sistemin temel özelliklerinin çalıştığından emin olmak için canlı ortamda hızlı bir Smoke / Sanity Test gerçekleştirir.
Sağlıklı Bir Ortam Yönetimi İçin QA Kuralları
Ortamların sadece var olması yetmez, aralarındaki trafiğin de bir disiplin içinde yönetilmesi gerekir:
Ortam İzolasyonu ve Bağımsızlık: QA ortamındaki bir test verisi veya patlayan bir servis, asla Staging ya da Dev ortamını etkilememelidir. Her ortamın veri tabanı (
.envkonfigürasyonları) tamamen izole olmalıdır.CI/CD Entegrasyonu (Automated Pipelines): Kodun Dev'den QA'e, QA'den Staging'e geçişi manuel eforla değil; GitHub Actions, GitLab CI gibi araçlarla otomatize edilmelidir. Başarısız olan bir otomasyon testi, kodun bir sonraki ortama geçmesini (deployment) otomatik olarak engellemelidir.
Veri Tabanı Tutarlılığı: Özellikle veri tabanı şeması değişikliklerinde (migrations), QA ortamında denenen yapıların Staging ve Prod ortamlarına sırayla ve hatasız uygulandığından emin olunmalıdır.
Özetle
Test ortamlarını doğru kurgulamak ve yönetmek, canlı ortamda çıkabilecek hataları daha henüz QA aşamasındayken yakalamanızı sağlar. Her ortamın yazılım yaşam döngüsünde farklı bir filtresi ve amacı vardır. Akıllıca kurgulanmış bir pipeline'da kod bu filtrelerden süzülerek geçer ve son kullanıcıya ulaştığında geriye sadece arkasına yaslanıp sistemin kararlılığını izlemek kalır.