Yazılım testinde pek çok test çeşidi bulunmaktadır. Her testin yapılma koşulları farklıdır. Yapılacak olan testi seçerken ihtiyaç dahilinde en uygun çözümü verebilecek olan testin seçilerek uygulanması gerekiyor. Test seçiminde zaman, efor, maliyet gibi konular belirleyici olabilir. Yazılım Testleri Fonksiyonel Testler ve Fonksiyonel Olmayan Testler olarak ayrılmaktadır.

Yazılım Testi Çeşitleri

Fonksiyonel Testler

  1. Unit Testing (Birim Testi)
  2. Integration Testing (İntegrasyon Testi)
  3. System Testing (Sistem Testi)
  4. Interface Testing (Arayüz Testi)
  5. Regression Testing (Tekrar Testi)
  6. Acceptance Testing (Kabul Testi)
  7. Smoke Testing (Duman Testi)
  8. Sanity Testing (Doğruluk Testi)

Fonksiyonel Olmayan Testler

  1. Documentation Testing (Dökümantasyon Testi)
  2. Installation Testing (Kurulum Testi)
  3. Performance Testing (Performans Testi)
  4. Reliability Testing (Güvenilirlik Testi)
  5. Security Testing (Güvenlik Testi)

Bu yazımda Fonksiyonel Testler’den olan Smoke ve Sanity Testlerinin açıklayarak arasında bulunan farkı anlatmaya çalışacağım.

Smoke (Duman) Testi Nedir?

Smoke testi donanım testinden türeyerek gelen bir isme sahip test çeşididir. Donanım testinde ilk olarak donanıma elektrik verildiğinde devreden ateş veya duman çıkmıyorsa diğer testlere geçiş yapılabilir. Yazılım Geliştirme’de Smoke test geliştirilen uygulamanın temel, kritik fonksiyonlarının kontrol edilmesini sağlamaktadır. Smoke test Acceptance testinin alt kümesi denilebilir.

Proje build edildiğinde ilk olarak smoke test yapılır. Smoke test aslında kabul Acceptance testinin küçük bir versiyonudur. Yapılan smoke test uygulamanın en temel özelliklerini geniş çaplı fakat sığ şekilde çok derine inmeden test eder. Tabiri caizse “sayfa patlıyor mu” testi diyebiliriz. Smoke testin yapılma amacı hataları erken aşamada tespit ederek maliyet ve zaman kaybını azaltmak.

Smoke Test Çalışma Yapısı

Proje build alındığında test ekibi tarafından smoke teste tabi tutulur. Smoke test projenin en temel fonksiyonlarının çalışıp çalışmadığını kontrol eder. Eğer proje genel olarak çalışıyorsa, fonksiyonel test için hazırlanır. Fakat sistemin temel işlemlerinden çalışmayan hatalı olan kısımlar var ise tekrar yazılım ekibine iletilir. Bu aşama da temel fonksiyonlarında hata olan, eksiklik olan bir uygulamanın fonksiyonel teste gönderilmesi mantıksız olacaktır. Böyle bir işlem hem zaman hem de iş gücü israfı olacaktır. O nedenle yazılım ekibine gönderilen projenin yeni buildi alındığında tekrar smoke teste tabi tutulur ve başarılı olursa fonksiyonel ve detaylı testlere geçiş yapılır. Bu döngü proje smoke testi başarısız olması halinde devam eder. Smoke testinin tüm ekip tarafından yapılması iş gücü israfı olacaktır. Genellikle smoke testi, ekip lideri tarafından veya projenin genel niteliklerinin smoke testten geçip geçmeyeceğine karar verebilecek olan takım üyeleri tarafından gerçekleştirilir.

Bu test geliştirme takımı tarafından bir versiyon alındığında yapılacak olan ilk testtir ve smoke testten geçip geçmediğine karar verilecek testtir. Bu nedenle bu test otomatikleştirilebilir. Her versiyon alındığında uygulanacak olduğu için otomatikleştirme büyük anlamda fayda sağlamaktadır. Proje büyüklüğüne göre değişecek olan test suite ve test case sayılarınızın büyük bir proje göre şekillendiğini düşünelim. Proje build edildiğinde sadece bu smoke test caseleri manuel olarak çalıştırmanız günlerinizi alabilir. Ve testlerini yapmanız gereken tek proje bu değilse çok büyük bir karmaşaya neden olacaktır. Bu testleri olabildiğince otomatikleştirilmesi zaman tüketimi konusunda çok büyük bir kar oluşturacaktır.

Smoke Test fonksiyonel testlere giriş testi denilebilir. Bu nedenle belirleyici olan bu testin QA takımı veya Yazılım Test ekibi hangi test caselerin smoke teste dahil edileceğini iyi belirlemelidir.

Smoke test avantajları;

  • Gerçekleştirilmesi kolay,
  • Hataların daha erken aşamalarda tanımlanmasını sağlar,
  • Zaman, iş gücü ve mali kaybı önler.
  • Fonksiyonel testlerin boş yere yapılmasını önler.

Sanity (Doğruluk) Testi Nedir?

Sanity test uygulamaya yeni bir özellik getirildiğinde özelliğin çalışıp çalışmadığını kontrol eder. Yazılıma yeni bir versiyon alındığında, gelen özelliklerin çalışıp çalışmadığı bu test ile test edilir. Bu test regresyon testi ile karıştırılmamalıdır. Bu test sonucu daha detaylı büyük testlerin yapılıp yapılmayacağına karar verilir. Sanity testi random olarak her bir fonksiyonun beklendiği şekilde çalışıp çalışmadığını kontrol etmek için yapılır. Planlanarak yapılan detaylı bir test değildir. Yeterli zaman olmadığında fonksiyonları kontrol edebilmek için yapılan bir testtir. Geniş çaplı fakat çok fazla detaya girilmeyen bir test türüdür. Sanity Testi genellikle önceden oluşturulmamış testlerdir. Yüzeysel yapılan bu test istenen özelliklere göre uygulamanın fonksiyonelliğinin doğru çalışıp çalışmadığını doğrulamak için kullanılır. Bu test seviyesi regresyon testinin alt kümesidir.

Mühendislik kategorisindeki diğer içerikleri de okumanızı tavsiye ederiz!

Kaynak