Temel Test ve Duman Testi: Başlıca Farklar, Örnekler ve Her Birinin Ne Zaman Kullanılacağı
⚡ Kısa Özet
Mantıksal Yeterlilik Testi ve Duman Testi Bunlar, derleme sonrası sistem kararlılığını ve rasyonelliğini doğrulamaya odaklanan iki temel yazılım test yöntemidir. Her ikisi de, test döngüsünün başlarında kararsız veya kusurlu derlemeleri belirleyerek gereksiz kalite güvence çalışmalarını önlemeyi amaçlar.
Duman Testi ve Sağlamlık Testi: Karşılaştırma Tablosu
| Görünüş | Duman Testi | Akıl Sağlığı Testi |
|---|---|---|
| Birincil Hedef | Derleme kararlılığını doğrulayın | Değişikliklerin işlevselliğini doğrulayın. |
| kapsam | Geniş kapsamlı (tüm başvuru) | Dar (belirli modüller) |
| derinlik | Yüzeysel test | Derinlemesine test (hedefli) |
| Tarafından gerçekleştirilen | Geliştiriciler veya Test Uzmanları | Sadece test kullanıcıları |
| Durum Oluştur | İlk/kararsız sürümler | Nispeten istikrarlı yapılar |
| Dökümanlar | Senaryosu yazılmış ve belgelenmiş | Genellikle doğaçlama |
| Test Alt Kümesi | Kabul testleri | Gerileme testi |
| Otomasyon | Şiddetle tavsiye | Manuel veya otomatik olabilir. |

Yazılım Oluşturma Nedir?
Sadece tek bir kaynak kod dosyasından oluşan basit bir bilgisayar programı geliştiriyorsanız, çalıştırılabilir bir dosya oluşturmak için bu tek dosyayı derlemeniz ve bağlamanız yeterlidir. Bu işlem oldukça basittir. Ancak genellikle durum böyle değildir. Tipik bir yazılım projesi yüzlerce hatta binlerce kaynak kod dosyasından oluşur. Bu kaynak dosyalarından çalıştırılabilir bir program oluşturmak karmaşık ve zaman alıcı bir iştir. Çalıştırılabilir bir program oluşturmak için "derleme" yazılımı kullanmanız gerekir ve bu işleme "Yazılım Derleme" denir.
Duman Testi Nedir?
Duman testi, yazılım derlemesinden sonra yazılımın kritik işlevlerinin düzgün çalıştığını doğrulamak için yapılan bir yazılım test tekniğidir. Ayrıntılı fonksiyonel veya regresyon testleri yapılmadan önce gerçekleştirilir. Duman testinin temel amacı, kusurlu bir yazılım uygulamasını reddetmek ve böylece QA ekibinin bozuk bir yazılım uygulamasını test etmek için zaman kaybetmesini önlemektir.
Duman testinde, seçilen test senaryoları sistemin en kritik işlevselliğini veya bileşenini kapsar. Amaç kapsamlı test yapmak değil, yazılım uygulamasının temel işlevlerinin doğru çalıştığından emin olmaktır. Örneğin, tipik bir duman testi, uygulamanın başarıyla başlatıldığını, grafik kullanıcı arayüzünün (GUI) yanıt verdiğini vb. doğrular.
Akıl Sağlığı Testi Nedir?
Sağlamlık testi, kodda veya işlevsellikte küçük değişiklikler içeren bir yazılım sürümü alındıktan sonra, hataların giderildiğinden ve bu değişiklikler nedeniyle başka sorunların ortaya çıkmadığından emin olmak için yapılan bir yazılım testi türüdür. Amaç, önerilen işlevselliğin kabaca beklendiği gibi çalıştığını belirlemektir. Sağlamlık testi başarısız olursa, daha derinlemesine testlere zaman ve kaynak harcamaktan kaçınmak için sürüm reddedilir.
Amaç, kapsamlı işlevselliği doğrulamak değil, geliştiricinin yazılımı üretirken bir miktar akılcılık (mantık) uyguladığını belirlemektir. Örneğin, bilimsel hesap makineniz 2 + 2 = 5 sonucunu veriyorsa, sin 30 + cos 50 gibi gelişmiş işlevleri test etmenin bir anlamı yoktur.
Terimlerin Tarihçesi ve Kökeni
"Duman testi" terimi, donanım ve elektronik endüstrisinden kaynaklanmaktadır. Mühendisler yeni bir devre kartını ilk kez çalıştırdıklarında, duman çıkıp çıkmadığını gözlemlerlerdi; bu, temel bir hatanın anlık bir göstergesiydi. Duman çıkmazsa, temel testlere devam edilebilirdi. Bu kavram, 1980'lerde yazılım test uzmanları tarafından ilk derleme doğrulamasını tanımlamak için benimsenmiştir.
Öte yandan, "mantıklılık testi", belirli değişikliklerin "mantıklı" veya rasyonel olup olmadığını kontrol etmeyi ifade eder. Bu terim, yazılımın değişikliklerden sonra mantıklı ve akılcı bir şekilde davrandığını doğrulamayı vurgular; esasen "Bu mantıklı mı?" sorusunu sorar.
Duman Testi, Sağlamlık Testi ve Regresyon Testi Karşılaştırması
Bu üç test türünün birlikte nasıl çalıştığını anlamak, etkili bir kalite güvence stratejisi için çok önemlidir:
- Duman Testi Öncelikle bu işlem yapılır; bu, yapının test edilebilecek kadar kararlı olduğunu doğrular.
- Akıl Sağlığı Testi (Uygulanabilir olduğunda) aşağıdaki adımlar izlenir; bu, belirli değişikliklerin veya düzeltmelerin doğru şekilde çalıştığını doğrular.
- Gerileme testi En kapsamlı olanıdır; yeni değişikliklerin mevcut işlevselliği bozmadığından emin olunmasını sağlar.
Bunu bir huni gibi düşünün: Duman testi, kararsız sürümleri hızla filtreleyen geniş açıklıktır; sağlamlık testi, odağı belirli değişikliklere daraltır; ve regresyon testi, tüm sistemin kapsamlı bir şekilde incelenmesini sağlar.
Gerçek Dünya Senaryosu: E-Ticaret Uygulaması
Alışveriş sepetindeki bir hatanın düzeltildiği yeni bir sürüm alan bir e-ticaret sitesini ele alalım:
Duman Testi: Kalite kontrol ekibi öncelikle web sitesinin yüklendiğini, kullanıcıların giriş yapabildiğini, ürünlerin doğru şekilde görüntülendiğini, aramanın çalıştığını ve ödeme işleminin başlatıldığını doğrular. Bu işlem yaklaşık 15-30 dakika sürer.
Akıl Sağlığı Testi: Duman testi başarılı olduktan sonra, test uzmanları özellikle alışveriş sepeti işlevine odaklanırlar: ürün ekleme, miktarları güncelleme, ürün çıkarma ve hesaplamaları doğrulama. Bu hedefli test yaklaşık 30-60 dakika sürer.
Her iki test de başarılı olursa, ekip uygulamanın karmaşıklığına bağlı olarak birkaç saat veya gün sürebilecek tam regresyon testine geçer.
Duman Testi mi Yoksa Sağlamlık Testi mi Kullanılmalı?
Duman testi şu durumlarda kullanılır:
- Yeni bir yazılım sürümü test ortamına dağıtıldı.
- Giriş yapma, gezinme ve veri akışı gibi kritik işlevleri hızlıca doğrulamanız gerekiyor.
- Yapının daha detaylı testler için yeterince kararlı olup olmadığını belirlemek.
- Otomatik derleme doğrulaması için CI/CD işlem hatlarına entegrasyon
Aşağıdaki durumlarda sağlamlık testi kullanın:
- Küçük kod değişiklikleri, hata düzeltmeleri veya özellik geliştirmeleri uygulanır.
- Belirli değişikliklerin beklendiği gibi çalıştığını doğrulamak.
- Önceki testlerden elde edilen verilere göre, sistem zaten nispeten istikrarlı durumda.
Avantajlar ve Sınırlamalar
Avantajlar
- Kritik sorunların hızlı tespiti: Her iki yöntem de testlerin durmasına neden olabilecek sorunları hızla tespit eder.
- Kaynak verimliliği: Ekipler, temelden hatalı olan sürümlerin detaylı testleriyle vakit kaybetmezler.
- Erken hata tespiti: Sorunları sürecin başlarında tespit etmek, genel onarım maliyetlerini düşürür.
- Daha hızlı yayın döngüleri: Etkin kontrol mekanizmaları, daha hızlı yineleme ve dağıtım sağlar.
Sınırlamalar
- Sınırlı kapsam: Her iki test türü de uygulamanın tamamını kapsamlı bir şekilde ele almamaktadır.
- Gizli hataları gözden kaçırabilirsiniz: Entegrasyon sorunları veya uç durumlar tespit edilemeyebilir.
- Tam testlerin yerini tutmaz: Bunlar hızlı filtre görevi görürler, regresyon testinin yerini tutmazlar.
Uygulama için En İyi Uygulamalar
Duman Testi İçin:
- Her derleme için duman testlerini otomatikleştirin ve bunları CI/CD işlem hattınıza entegre edin.
- Duman testi paketini yalnızca kritik işlevlere odaklı tutun, çok büyümesine izin vermeyin.
- Kritik özellikler eklendiğinde veya değiştirildiğinde duman testlerini güncelleyin.
Sağlamlık Testi İçin:
- Sağlamlık test senaryoları oluşturmadan önce her zaman değişiklik dokümantasyonunu inceleyin.
- Test çalışmalarını, değiştirilen alanlara ve bunlara hemen bitişik işlevlere odaklayın.
- Beklenmedik sorunları ortaya çıkarmak için keşifsel test tekniklerini kullanın.
Kaçınılması Gereken Genel Hatalar
- İki test türünü karıştırmak: Duman testi geniş kapsamlı ve yüzeyseldir; sağlamlık testi ise dar kapsamlı ve derinlemesinedir.
- Zaman kazanmak için duman testi yapılmaması: Bu durum genellikle istikrarsız yapılar üzerinde boşa harcanan çabalara yol açar.
- Duman testlerini çok kapsamlı hale getirmek: Bu, hızlı doğrulamanın amacını ortadan kaldırır.
- Başarısızlıkların ardından ilerlemek: Test türlerinden herhangi biri başarısız olursa, durun ve devam etmeden önce sorunları giderin.
Duman ve Akıl Sağlığı Testi İçin Önerilen Araçlar
- Selenium Web Sürücüsü: Web uygulaması test otomasyonu için sektör standardı
- TestNG/JUnit: Otomatik testleri düzenlemek ve yürütmek için test çerçeveleri.
- Jenkins/GitHub İşlemleri: Otomatik derleme ve test yürütme için CI/CD araçları
- Cypress: Modern, geliştirici dostu uçtan uca test çerçevesi
- Postman/Emin olabilirsiniz: Arka uç testlerine yönelik API test araçları

