Dumansal Test (Smoke Testing), yazılım test süreçlerinde bir yazılım yapısının (build) temel işlevlerinin sağlıklı çalışıp çalışmadığını hızlıca doğrulamak amacıyla uygulanan öncelikli ve yüzeysel bir test yöntemidir. Genellikle "build doğrulama testi (Build Verification Test - BVT)" ya da "güven testi (Confidence Testing)" olarak da adlandırılan bu yöntem, daha derinlemesine testlerin uygulanabilirliğini belirlemek için bir eşik aşaması görür.
Dumansal Testin Amaçları
Dumansal test, bir yazılım yapısının test edilebilir durumda olup olmadığını hızlı bir şekilde anlamaya yönelik uygulanır. Temel hedefleri aşağıdaki şekilde detaylandırılabilir:
- Yapının Temel İşlevlerinin Doğruluğunu Teyit Etmek: Bir yazılımda oturum açma, menü geçişi, veri girişi gibi kritik işlevlerin sorunsuz çalışması, yapının sağlıklı olduğuna dair ilk göstergedir. Dumansal testler bu kritik fonksiyonların beklendiği gibi çalışıp çalışmadığını belirler.
- Test Kaynaklarının Verimli Kullanılmasını Sağlamak: Kararsız, bozuk ya da test edilmeye uygun olmayan yapılar üzerinde zaman harcamamak adına bir ön kontrol mekanizması sunar. Bu sayede QA ekipleri daha kapsamlı test senaryolarına ancak yapı sağlamsa zaman ayırır.
- Hataların Erken Tespitini Sağlamak: Dumansal testler sayesinde geliştirme ekibine, sürecin en başında önemli sorunlar hakkında bilgi verilir. Bu da yazılım hatalarının geç aşamalara taşınmasının önüne geçer ve müdahale maliyetini azaltır.
- Sürekli Entegrasyon ve Teslimat (CI/CD) Süreçlerini Desteklemek: Modern yazılım geliştirme yaklaşımlarında build'lerin sürekli ve otomatik olarak test edilmesi gerekir. Dumansal testler, bu entegrasyon zincirinde ilk adım olarak yer alır ve kodun sistemin genel yapısına zarar verip vermediğini denetler.
- Test Edilebilirlik Kararını Vermek: QA ekibinin, bir build üzerinde ayrıntılı testler yürütmeye başlaması için ilk onay mekanizmasıdır. "Bu yapı test edilmeye değer mi?" sorusuna cevap verir.
- Kabul Koşullarının İlk Onayı: Müşteri veya iç paydaşlar tarafından belirlenen minimum kabul şartlarının sağlanıp sağlanmadığının görsel veya otomatik yollarla kontrol edilmesine imkan sağlar.
- Geri Bildirim Döngüsünü Hızlandırmak: Hızlı geribildirim mekanizması sağlar. Dumansal testin sonucunda ya build test edilmeye uygundur ya da derhal geliştirici ekibe geri döner. Bu da test döngüsünü hızlı ve yalın hale getirir.
Dumansal Testin Aşamaları
Dumansal test süreci, bir yazılım yapısının temel işlevselliğini hızlıca doğrulamak için yapılandırılmış, adım adım ilerleyen bir süreçtir. Bu sürecin temel aşamaları aşağıda detaylı olarak açıklanmıştır:
Kritik İşlevlerin Belirlenmesi
İlk aşamada, test edilecek yazılım bileşeninin en temel ve kritik işlevleri belirlenir. Bu işlevler genellikle sistemin temel yapısını oluşturan ve diğer modüller tarafından bağımlı olunan parçalardır.
Örnekler:
- Oturum açma/çıkış fonksiyonları
- Ana sayfa yönlendirmesi
- Veritabanına bağlantı
- Veri giriş/çıktı işlemleri
Test Senaryolarının Oluşturulması
Kritik işlevler belirlendikten sonra, bu işlevleri test edecek kısa ve net test senaryoları hazırlanır. Bu senaryoların kapsamı genellikle aşağıdaki gibidir:
- En az bir pozitif senaryo (işlev beklendiği gibi çalışıyor mu?)
- Temel navigasyon akışları
- Kritik sistem yanıtları (başarı/hata mesajları vb.)
Test Ortamının Hazırlanması
Yapı test edileceği QA veya staging ortamına aktarılır. Ortamda şunların hazır olması gerekir:
- En güncel yapı (build) kurulmuş olmalıdır.
- Bağımlı sistemler ve veritabanı bağlantıları tanımlanmış olmalıdır.
- Ortamın prodüksiyona benzerliğinin sağlanması hedeflenir.
Testin Uygulanması (Yürütme)
Hazırlanan senaryolar manuel veya otomatik yollarla çalıştırılır. Test sırasında şunlara dikkat edilir:
- Kritik işlevler eksiksiz ve hatasız çalışıyor mu?
- Test süresi mümkün olduğunca kısa tutulur (5-30 dk arası ideal süre).
Sonuçların Değerlendirilmesi
Test sonuçları gözlemlenerek aşağıdaki kararlar verilir:
- Geçti: Sistem daha derin testler için uygundur.
- Kaldı: Build istikrarsızdır, derin testler yapılmamalı, yapı geliştiriciye geri gönderilmelidir.
Hataların Raporlanması
Geçmeyen senaryolar detaylı şekilde raporlanır:
- Hatanın oluştuğu adım
- Sistem çıktısı (log, hata kodu, ekran görüntüsü)
- Beklenen davranış ile karşılaştırma
Yapının Güncellenmesi ve Retest
Geliştirici ekip hataları düzelttikten sonra, yeni build oluşturulur. Bu build üzerinde tekrar aynı dumansal test uygulanır. Süreç başarıyla tamamlanana kadar döngü devam eder.
Dumansal Testin Türleri
Dumansal testler testin yürütülme şekline, kapsamına ve uygulama ortamına göre çeşitlenmektedir. Aşağıda başlıca türleri açıklanmıştır:
Manuel Dumansal Test
Test senaryoları QA mühendisleri tarafından manuel olarak uygulanır. Küçük projelerde tercih edilir. Avantajı insan sezgisinin devrede olması, dezavantajı ise zaman alıcı olmasıdır. Genellikle:
- Test senaryoları elde yazılır
- Gözle doğrulama yapılır
- Tekrarlanabilirliği düşüktür
Otomatik Dumansal Test
Otomasyon araçları (Selenium, Cypress, Robot Framework vb.) kullanılarak test senaryoları otomatikleştirilir. CI/CD boru hatlarına entegre edilebilir. Avantajları:
- Hızlı yürütüm sağlar (dakikalar içinde)
- Tekrarlanabilirlik yüksektir
- Gece çalıştırmaları yapılabilir
Hibrit Dumansal Test
Manuel ve otomatik testlerin birlikte uygulandığı yaklaşımdır. Genellikle temel testler otomatikleştirilmiş, UI/UX odaklı testler manuel bırakılmıştır. Proje büyüklüğüne ve test kapsamına göre ayarlanabilir.
Günlük Dumansal Test (Daily Smoke)
Günlük build’lerde çalıştırılır. CI sistemlerinde build sonrası tetiklenir. Kritik sistem işlevlerinin her gün sağlıklı olduğuna dair güvence sağlar.
Kabul Odaklı Dumansal Test (Acceptance Smoke)
Yazılımın müşteri veya kabul kriterlerini sağlayıp sağlamadığını hızlıca kontrol eden testtir. Genellikle MVP ürün teslimlerinde uygulanır.
Arayüz (UI) Dumansal Testi
Temel kullanıcı arayüzü öğelerinin (giriş alanı, butonlar, menü, navigasyon) çalışıp çalışmadığını kontrol eder. Görsel regresyonla desteklenebilir.
Uygulama Düzeylerine Göre Dumansal Test
Dumansal test yalnızca belirli bir test seviyesiyle sınırlı değildir; yazılım test yaşam döngüsünün farklı aşamalarında uygulanabilir. Her düzeyde, temel işlevlerin doğruluğunu hızlıca kontrol ederek sonraki aşamalara geçişin uygun olup olmadığını belirlemeye yardımcı olur.
Birim Testi (Unit Testing) Düzeyi
Geliştiriciler tarafından yazılan ve sistemin en küçük birimlerinin (örneğin fonksiyon veya sınıf) temel işlevlerini test etmek için kullanılan dumansal testtir. Amaç, modülün temel işlevselliğinin çalıştığını doğrulamaktır.
Entegrasyon Testi (Integration Testing) Düzeyi
Birden fazla birimin birleşerek birlikte çalıştığı senaryolarda uygulanır. Dumansal test ile bu birimlerin temel iletişimlerinin ve veri akışının sağlıklı olup olmadığı kontrol edilir.
Sistem Testi (System Testing) Düzeyi
Sistemin tamamı tek bir yapı olarak ele alınır ve kritik fonksiyonların sistem genelinde çalışıp çalışmadığı test edilir. Kullanıcı giriş-çıkışı, ana menü işlevleri ve veri kaydı gibi işlemler test kapsamına girer.
Kabul Testi (Acceptance Testing) Düzeyi
Müşteri veya son kullanıcıya teslimat öncesi yapılan testtir. Uygulamanın temel işlevleri müşterinin belirlediği minimum kabul kriterlerine göre kontrol edilir.
Bu dört düzeyde de uygulanan dumansal test, her aşamada erken hata tespiti ve kaynak optimizasyonu sağlar.
Dumansal Testin Avantajları
- Hız ve Etkililik: Dumansal testler kısa sürede uygulanabilir, hızlı geri bildirim sağlar.
- Erken Hata Tespiti: Kritik işlevlerdeki hataları erken evrede yakalayarak büyük hataların önüne geçilmesini sağlar.
- Kaynak Tasarrufu: Hatalı build’ler için daha fazla test kaynağı harcamayı önler.
- Sistem Kararlılığına Katkı: Kararlı build’lerin daha sonraki test aşamalarına geçmesini garanti eder.
- Entegrasyon Öncesi Kontrol: Farklı modüllerin temel düzeyde sağlıklı çalıştığının teyidini sağlar.
- Test Planlamasını Kolaylaştırır: Kritik alanlardaki sorunlar önceden belirlenerek test önceliklendirmesi yapılabilir.
- Otomasyon ile Uyumluluk: Sıklıkla tekrarlanan testler için otomasyonla yüksek verim elde edilir.
Dumansal Testin Sınırlılıkları ve Zorlukları
- Sınırlı Kapsam: Yalnızca ana işlevselliğe odaklanır, detaylı hata tespitinde yetersizdir.
- Negatif Testler Hariçtir: Genellikle yalnızca pozitif senaryoları kapsar; olumsuz girdiler veya kenar durumlar göz ardı edilir.
- Manuel Testlerde Zaman Kaybı: Otomasyon yapılmamışsa, büyük projelerde manuel test zaman alıcıdır.
- Kritik Olmayan Hatalar Kaçabilir: Önemli ama temel olmayan hatalar tespit edilemeyebilir.
- Test Senaryolarının Bakımı: Test senaryolarının yanlış yapılandırılması, yanlış pozitif/negatif sonuçlara neden olabilir.
- Çevresel Farklılıklar: Test ortamı ile üretim ortamı farklılıkları tutarsız sonuçlara yol açabilir.