Smoke Test
- Türkçe karşılığı
- duman testi
- Okunuşu
- smouk test
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Smoke test, daha derin testlere zaman ayırmadan önce bir derlemenin en önemli özelliklerinin temelde çalıştığını doğrulayan hızlı ve yüzeysel bir kontroldür.
Smoke test nedir?
Smoke test, yeni bir derlemenin ya da dağıtımın temelde çalıştığını doğrulayan küçük ve hızlı bir kontrol kümesidir. Uygulamanın başlayıp başlamadığı, ana sayfanın yüklenip yüklenmediği ve bir kullanıcının giriş yapıp yapamadığı gibi ayrıntıya girmeyen geniş sorular sorar. Bir smoke test başarısız olursa derleme bozuk kabul edilir ve daha yavaş, daha kapsamlı test takımlarını çalıştırmanın anlamı kalmaz.
Ad, donanım testinden gelir: mühendisler yeni bir devre kartını ilk kez çalıştırdığında ilk kontrol, kartın duman çıkarıp çıkarmadığıydı. Yazılımda smoke testler genellikle bir CI/CD hattında derlemenin hemen ardından ya da bir staging ya da üretim ortamına yapılan dağıtımın hemen ardından çalışır. Tipik olarak birkaç kritik sayfaya ya da endpoint'e istek atar ve başarılı bir yanıt olup olmadığını kontrol ederler; her değişiklikte çalışabilmeleri için saniyeler ya da birkaç dakika içinde bitmelidirler.
Onarım yaptığınız bir arabanın anahtarını çevirmeye benzer: motor çalışmıyorsa radyoyu kontrol etmekle uğraşmazsınız. Ekipler smoke testleri tam bir regresyon takımını çalıştırmadan önce bir kapı olarak, ayrıca bir sürüm açıkça bozuksa otomatik geri almayı (rollback) tetikleyebilen dağıtım sonrası bir kontrol olarak kullanır.
Smoke test sıklıkla sanity test ve regresyon testiyle karıştırılır. Smoke test, tüm derlemenin test edilebilecek kadar kararlı olduğunu kontrol eder; sanity test, belirli bir düzeltmenin ya da değişikliğin çalıştığını kontrol eden dar bir testtir; regresyon takımı ise mevcut özelliklerin hâlâ doğru davrandığını derinlemesine kontrol eder. Kısacası smoke testler geniş ve yüzeysel, regresyon takımları ise geniş ve derindir.
Önemli noktalar
- Smoke test, bir derlemenin kritik parçalarının çalıştığını doğrulayan hızlı ve yüzeysel bir kontroldür.
- Başarısız bir smoke test derlemenin bozuk olduğu anlamına gelir; bu yüzden daha derin testler atlanır.
- Smoke testler genellikle her derlemeden ve her dağıtımdan sonra çalışır.
- Az sayıda, hızlı olmalı ve en önemli kullanıcı yollarına odaklanmalıdırlar.
- Smoke testler tam bir regresyon takımının yerini almaz.
Örnek
#!/usr/bin/env bash
# Stop at the first failed check
set -euo pipefail
BASE_URL="https://staging.example.com"
# 1. The health check endpoint responds successfully
curl --fail --silent "$BASE_URL/health" > /dev/null
# 2. The home page loads and contains a page title
curl --fail --silent "$BASE_URL/" | grep -q "<title>"
echo "Smoke test passed"Sık sorulan sorular
Smoke testing ile sanity testing arasındaki fark nedir?
Smoke testing, en önemli özellikleri geniş biçimde çalıştırarak tüm derlemenin test edilebilecek kadar kararlı olduğunu kontrol eder. Sanity testing ise belirli bir hata düzeltmesinin ya da küçük bir değişikliğin çalıştığını kontrol eden dar ve odaklı bir testtir; genellikle smoke testlerinden zaten geçmiş bir derlemede yapılır.
Neden smoke test deniyor?
Terim donanımdan ve tesisattan gelir: yeni bir cihazı çalıştırır ya da yeni borulardan duman geçirir ve olmaması gereken yerde duman olup olmadığına bakarsınız. Duman görürseniz temelde bir sorun vardır ve ileri testler bekleyebilir.
Smoke testler üretimde çalıştırılmalı mı?
Pek çok ekip, sürümün çalıştığını doğrulamak için her üretim dağıtımından hemen sonra küçük bir smoke test kümesi çalıştırır. Bu testler gerçek veriyi değiştirmekten kaçınmalıdır; örneğin yalnızca sayfaları okuyarak ya da özel test hesapları kullanarak.
İlgili sayfalar
- Regresyon TestiTest ve Kalite, s. 21Regresyon testi, daha önce çalışan özelliklerin bozulmadığından emin olmak için bir kod değişikliğinden sonra mevcut testleri yeniden çalıştırma pratiğidir.
- Uçtan Uca TestTest ve Kalite, s. 35Uçtan uca test, kullanıcı arayüzünden veritabanına ve geri dönüşe kadar tam bir kullanıcı yolculuğunu uygulamanın tamamında çalıştıran otomatik bir testtir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- RollbackDevOps ve Bulut, s. 43Rollback, yeni bir dağıtım hatalara, kesintilere ya da beklenmedik başka sorunlara yol açtığında yazılımı önceki, sorunsuz sürüme döndürme işlemidir.
- Canary DeploymentDevOps ve Bulut, s. 6Canary deployment, yeni bir yazılım sürümünü önce kullanıcıların küçük bir bölümüne sunar, sağlığını kontrol eder ve ardından kademeli olarak herkese yayar.
- Entegrasyon TestiTest ve Kalite, s. 7Entegrasyon testi, kod, veritabanı ve API gibi bir sistemin birkaç parçasının birlikte doğru çalışıp çalışmadığını kontrol eden otomatik bir testtir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin