Test Metodolojileri & Teori
Test Metodolojileri & Teori

Keşif Testi Rehberi: Hata Avcılığı

Keşif testi, yazılım testinin en heyecan verici, özgür ve yaratıcı yönlerinden biridir. Geleneksel, sıkı sıkıya dökümante edilmiş test yaklaşımlarının sınırlarını aşmak ve yazılımlarımızdaki gizli kalmış mantıksal hataları keşfetmek için bu yöntemi sıklıkla kullanırız.

Bu yazıda; bir QA Mühendisi gözünden keşif testinin ne olduğunu, neden bu kadar kritik bir öneme sahip olduğunu, süreçte hangi araçlardan beslendiğimizi ve bu oturumları nasıl daha verimli yönetebileceğimizi derinlemesine inceleyeceğiz.

Keşif Testi Nedir?

Keşif Testi (Exploratory Testing); statik ve katı kuralları olan bir test sürecinin aksine, test tasarımı ve test yürütme adımlarının eş zamanlı olarak gerçekleştirildiği güçlü bir tekniktir.

ISTQB standartlarında da vurgulandığı gibi; test edenin daha iyi ve daha yeni testleri tasarlamak için test yaparken edindiği bilgiyi kullanarak ve bu testleri yürüterek bilfiil test tasarımını kontrol altına aldığı gayri resmi bir test tasarım tekniğidir.

Buradaki temel felsefe, önceden yazılmış ve adım adım ne yapacağınızı söyleyen katı test senaryolarına (scripted testing) bağımlı kalmak yerine; testçinin yazılımla etkileşime girdiği o an edindiği yeni çıkarımlara, bilgi birikimine ve sezgilerine odaklanmaktır. Keşif testi plansız veya rastgele (ad-hoc) bir test değildir; tam aksine, test esnasında öğrenilen her yeni bilgiyle bir sonraki adımı zekice kurguladığımız, sürekli evrilen sistematik bir süreçtir.

Keşif Testinin Temel Prensipleri

Bir keşif testi oturumunun başarıya ulaşması, test tasarım gücünün tamamen bizde kalması ve sürecin kaosa dönüşmemesi için şu dört temel prensibi rehber ediniriz:

  • Hedef Belirleme (Test Charter): Keşif testi tamamen serbest bir gezinti değildir. "Bu oturumda amaç ne? Hangi modülü veya kullanıcı akışını inceliyoruz?" sorularına yanıt veren esnek bir çerçeve (charter) belirlenir.

  • Zaman Yönetimi (Time-boxing): Verimliliği korumak adına keşif testleri süreli oturumlar halinde yapılır. Genellikle 30 ila 90 dakikalık kesintisiz ve odaklanmış bloklar, dağılmayı önlemek için idealdir.

  • Gözlem ve Kayıt (Logging): Önceden belirlenmiş adımlar olmadığı için test sırasında ne yaptığınızı, hangi veriyi girdiğinizi not etmek veya ekran kaydı almak kritiktir. Bu, bulduğunuz gizemli bir hatayı (bug) geliştiriciye raporlarken adımları tekrar üretebilmenizi (reproduce) sağlar.

  • Yaratıcılık ve "Sınırları Zorlama" (Edge Cases): Standart kullanıcıların yapmayacağı kombinasyonları denemek, sistemi hata vermeye zorlamak ve "Peki ya şu aşamada interneti kesersem ne olur?" gibi sorularla yaratıcılığı serbest bırakmak bu işin kalbidir.

Keşif Testi Senaryoları ve Pratik Örnekler

Keşif testi yaparken statik test adımları yerine hedef odaklı senaryolar üzerinden ilerler ve o an elde ettiğimiz verilere göre senaryoyu genişletiriz. İşte uçtan uca senaryolarda derinleşebileceğimiz birkaç pratik örnek:

1. Kayıt Olma & Kullanıcı Profil Süreci

  • Standart Akış: Formu doldur, kaydol.

  • Keşif Testi Yaklaşımı: Kayıt formunda isim alanına SQL injection veya XSS scriptleri (örn: <script>alert(1)</script>) yazarak kaydolmayı denemek. Kayıt olurken arka arkaya hızlıca "Kaydol" butonuna basıp veritabanında mükerrer (duplicate) kayıt oluşturup oluşturamadığımızı görmek. E-posta alanına büyük-küçük harf kombinasyonları ya da geçerli ama uç formatta adresler (örn: test+qa@domain.com) girerek sistemin tepkisini ölçmek.

2. Parola Sıfırlama & Güvenlik Akışları

  • Standart Akış: "Şifremi Unuttum" butonuna bas, linke tıkla, şifreni değiştir.

  • Keşif Testi Yaklaşımı: Parola sıfırlama linkini e-postadan aldıktan sonra, linki yeni bir gizli sekmede açmak. Aynı linke iki kez tıklayarak linkin tek kullanımlık olup olmadığını kontrol etmek. Şifre değiştirme ekranında yeni şifre olarak mevcut (eski) şifreyi girerek sistemin bunu engelleyip engellemediğini ya da şifre kurallarını bypass edip edemediğimizi sınamak.

3. Ürün Satın Alma & Sepet Dinamikleri

  • Standart Akış: Ürünü sepete ekle, adresi seç, kart bilgilerini gir, onayla.

  • Keşif Testi Yaklaşımı: İki farklı sekmede aynı hesabı açıp, bir sekmede ürünü sepetten silerken diğer sekmede ödeme adımını onaylamaya çalışmak. Sepetteki ürün adetini tarayıcı konsolundan veya input alanından negatif bir sayıya (örn: -5) çekmeyi denemek. Tam ödeme butonuna bastığımız anda tarayıcıda "Geri" butonuna basıldığında sistemin parayı çekip siparişi askıda bırakıp bırakmadığını (race condition durumlarını) test etmek.

4. API Katmanında Keşif

  • Standart Akış: Arayüzden gelen verinin API'ye doğru gitmesi.

  • Keşif Testi Yaklaşımı: UI elementlerinin (frontend) koyduğu sınırlandırmaları (örn: maksimum 50 karakter izni) bypass etmek için isteği doğrudan API katmanından, sınırları aşan devasa bir veri paketiyle (payload) manipüle ederek göndermek ve backend’in bu durumu nasıl handle ettiğini (500 Internal Server Error mü yoksa anlamlı bir validation mesajı mı döndüğünü) gözlemlemek.

Keşif Testi Sürecinde Kullandığımız Araçlar

Keşif testinin esnek yapısını destekleyen, süreci hızlandıran ve raporlamayı kolaylaştıran favori araçları şu şekilde listeleyebiliriz:

  • TestRail: Test süreçlerimizi yapılandırdığımız bu güçlü yönetim aracında, keşif testi oturumları için özel şablonlar açabilir, hedeflerimizi (charter) tanımlayabilir ve oturum bazlı hızlı raporlar üretebiliriz.

  • Postman: İş sadece arayüzle sınırlı kalmadığında, sistemin mimari katmanlarındaki mantık hatalarını ve veri tutarlılıklarını keşfetmek için API boyutunda yaptığımız testlerin vazgeçilmez merkez üssüdür.

  • Xray / Jira Exploratory Testing App: Jira ekosisteminde kalıp test oturumu sırasında otomatik ekran görüntüsü yakalamak, adımları kaydetmek ve anında bug bileti oluşturmak için harika bir eklenti.

Doğru Yaklaşım ve Zihniyet

Keşif testinde başarılı olabilmek ve ISTQB'nin işaret ettiği o dinamik kontrolü sağlamak için şu yaklaşımları içselleştirmek gerekiyor:

  1. Anlık Bilgiyi Aksiyona Dönüştürmek: Keşif testinin özü, test anında sistemi öğrenmektir. Arayüzde veya backend'de fark ettiğiniz ufak bir sıra dışı davranış, size hemen o an kafanızda yepyeni bir test senaryosu tasarlama ipucu vermelidir. Statik dökümana değil, sistemden aldığınız canlı geri bildirime göre rotanızı çizersiniz.

  2. Sürekli Soru Sormak ve Tasarımı Genişletmek: Yazılımla adeta konuşmalısınız. "Bu butona basıp sayfayı yenilersem ne olur?" sorusunun cevabını aldığınız an, edindiğiniz o yeni bilgiyle "Peki bu veri tipi burada değişirse diğer modül bundan nasıl etkilenir?" diyerek test tasarımını derinleştirmelisiniz.

  3. Bağlantıları Haritalandırmak: Modern sistemler modüler mimarilerden oluşur. Bir mikroserviste veya modülde test yaparken edindiğiniz tecrübe, sistemin diğer ucundaki bir akışı nasıl manipüle edebileceğinizi size fısıldar. Modüller arası bağları iyi koklamak, test tasarım gücünü elinizde tutmanızı sağlar.

Keşif testi; biz yazılım test mühendisleri için harika bir metodoloji, sisteme meydan okuma alanıdır. Keskin gözlemler, doğru sorular ve sınırları zorlayan yaratıcı bir düşünce yapısıyla birleştiğinde, yazılım kalitesini önemli ölçüde artırır.

Unutmamalıyız ki günün sonunda test ettiğimiz o yazılım, gerçek kullanıcıların günlük yaşamlarına dokunacak, deneyimlerini şekillendirecek yaşayan bir üründür. Bu yüzden katı kuralların dışına çıkıp bir kaşif gibi davranmak, ürünü kullanıcıdan önce savunabilmenin ve test tasarımını bilfiil kontrol altında tutmanın en güçlü yoludur.

Bağlantılı Yazılar

Keşif Testi Rehberi: Zevkle Hata Avcılığı