Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Test Case Tasarımı Nedir? Test Koşulu, Test Case, Coverage Hedefi ve Teknik Aileleri
Test case tasarımı, test case'leri sezgiyle değil requirement'tan türetmektir: test basis'ten test condition'a, coverage item'a, test case'e ve test verisine giden bir zincir. Bookstore'un kurumsal sipariş kuralında aynı senaryoyu deneyen beş yeşil test iki hatayı kaçırdı; kuraldan türetilen sekiz test ikisini de yakaladı. ISTQB CTFL v4.0.1'e göre black-box, white-box, experience-based teknikler ve collaboration-based yaklaşımlar.
Equivalence Partitioning: Girdiyi Sınıflara Bölmek, Geçerli ve Geçersiz Partition'lar, Coverage ve xUnit Theory'ye Dökmek
Equivalence partitioning, girdiyi kodun aynı davranması beklenen partition'lara böler ve her partition'ı bir testle kapsar; geçersiz partition'lar ise her biri ayrı testte denenir. Bookstore'un sipariş validator'ında iki geçersiz değeri birleştiren testler eksik misafir ödeme kuralını sakladı; partition tablosundan türetilen dokuz test hem onu hem tanımsız enum değeri hatasını yakaladı. Each Choice coverage, çıktı partition'ları ve TheoryData.
Boundary Value Analysis: 2-Value ve 3-Value BVA, Off-by-One, Tarih, Para ve Uzunluk Sınırları
Boundary value analysis, test değerini partition'ın ortasından değil sınırından ve komşusundan seçer; komşunun ne olduğunu tipin ve kuralın hassasiyeti belirler. Bookstore'da partition başına bir test yeşilken 500,00 TL ücretsiz kargo, UTC'ye kaymış Kasım kampanyası ve 23:59:59'da kapanan son saniye ancak sınır testleriyle yakalandı. 2-value ve 3-value BVA, FakeTimeProvider ile tarih sınırı, ISBN uzunluğu ve sepet boyutu.
Decision Table Testing: Kural Kombinasyonları, Tabloyu Sadeleştirmek ve Kural Tablosundan Teste
Decision table testing, sonucu birden fazla koşulun kombinasyonuna bağlı kurallar için bütün kombinasyonları tabloya döker, sadeleştirir ve her sütunu bir teste çevirir. Bookstore'un kargo ücretinde cümle başına yazılan dört yeşil test, Plus üyesinin yurt dışı kargosundaki çelişkiyi ve yedi tanımsız kupon durumunu kaçırdı; tablo hepsini test yazmadan gösterdi. Limited ve extended-entry tablo, "–" ve N/A, iade onayı ve testi koddaki tablodan kopyalamamak.
State Transition Testing: Sipariş State Machine'inden Test Case Üretmek, Geçersiz Geçişler ve 0-switch/1-switch Coverage
State transition testing, sistemin davranışı geçmişine bağlıysa test case'leri state diagram'ından ve state table'dan çıkarır: geçerli transition'lar (0-switch), state table'ın boş hücrelerindeki geçersiz transition'lar ve art arda iki transition'dan oluşan çiftler (1-switch). Bookstore'un siparişinde üç yeşil test, kargodaki siparişin iptal edilebilmesini ve beklemeden dönen siparişin kargoya verilememesini kaçırdı; 40 geçersiz geçiş ve 10 transition çifti ikisini de yakaladı.
Kombinatoryal Test: Pairwise, Orthogonal Array ve PICT ile Konfigürasyon Patlamasını Yönetmek
Pairwise testing, her iki parametrenin her değer çiftini en az bir testte yan yana getirerek tam kombinasyonun maliyetini düşürür; hataların çoğunun bir ya da iki parametrenin etkileşiminden çıktığı varsayımına dayanır. Bookstore'un checkout'unda each choice'un üç testi eksik İngilizce mağazadan teslim template'ini kaçırdı; PICT'in constraint'li modelden ürettiği 11 satır yakaladı. t-wise, orthogonal array, seed, oracle ve Playwright project'leri.
White-box ve Experience-based Teknikler: Branch Coverage'ı Test Tasarımı için Kullanmak, Error Guessing, Checklist ve Exploratory Testing
Branch coverage raporu test tasarımında hedef değil, hiç çalışmamış dalı gösterip yeni test case'ler çıkaran bir araçtır; ama yazılmamış kodu göremez, onu error guessing, checklist ve exploratory testing bulur. Bookstore'un kupon kodunda rapor story'de olmayan tavan dalındaki hatayı, error guessing Türkçe I hatasını, bir saatlik exploratory session de çift tıklamayla açılan iki siparişi ve negatif tutarlı siparişi buldu; hepsi regression testine döndü.
Tekniği Seçmek ve Birleştirmek: Requirement'tan Test Listesine, Acceptance Criteria ile Hizalamak ve AI ile Test Case Üretmenin Sınırları
Test tekniğini requirement'ın şekli seçer: aralıklar için equivalence partitioning ve boundary value analysis, koşul kombinasyonları için decision table, geçmişe bağlı sonuç için state transition; teknikler birleştirilip tekrarları atılınca tek bir test listesi kalır. Bookstore'un kurumsal kısmi sevkiyat story'sinde beş teknik 27 condition üretti, liste 19'a indi ve üç tekniğin buluştuğu satır sevkiyat hatasını yakaladı. AI'dan test case istemek için prompt ve review checklist'i.