
Yapay zeka ile oluşturulmuştur.
Keşifsel test, yazılım testinde hem bir yöntem hem de bir felsefe olarak tanımlanabilir. Keşifsel test, öğrenme, test tasarımı ve test yürütmenin eş zamanlı olarak yürütüldüğü bir süreçtir. Başka bir ifadeyle testçi, test sürecinin pasif bir uygulayıcısı değil, sürecin aktif bir tasarımcısı ve geliştiricisidir.
Bu yaklaşımda testçi, testleri önceden tamamen tanımlanmış senaryolardan ziyade, yazılımı keşfederken elde ettiği bilgiye dayalı olarak tasarlar. Böylece test süreci statik değil, dinamik bir akışa sahiptir. Bu dinamik yapı, betimlenmiş (scripted) testlerle keşifsel test arasında süreklilik (continuum) olduğunu da gösterir: Tamamen önceden belirlenmiş testler bir uçta, tamamen doğaçlama (freestyle) keşifsel test diğer uçta yer alır.
Yazılım geliştirme pratiğinin giderek karmaşıklaştığı 1980’li yıllarda, test süreçleri belirli planlara, belgelenmiş test senaryolarına ve raporlara dayandırılarak daha ölçülebilir ve tekrarlanabilir hale getirilmeye çalışılmıştır. Bu dönemde hâkim olan yaklaşım, testlerin önceden ayrıntılı şekilde planlanması ve bu planların harfiyen uygulanması üzerine kurulmuştur. Ancak yazılım geliştirme, özellikle dinamik kullanıcı ihtiyaçları ve hızlı teknolojik dönüşümler sebebiyle, her zaman öngörülebilir bir düzende ilerlememektedir.
Bu bağlamda, plansız fakat esnek deneme süreçleri anlamına gelen ad-hoc testing kavramı, test pratiğinde kendine bir yer edinmiştir. Ad-hoc testing, temelinde rastlantısal test denemelerini ifade ederken, sistematik bir öğrenme ve geri bildirim mekanizmasından yoksun olması nedeniyle çoğu zaman düşük değerli bir yöntem olarak görülmüştür.
Keşifsel test (Exploratory Testing) kavramı, bu dağınık ve plansız yapıya eleştirel bir yaklaşım getirmiştir. Terim olarak “exploratory testing” ifadesi, yazılım test uzmanı Cem Kaner tarafından, Testing Computer Software【1】 adlı klasikleşmiş eserinde sistematik bir biçimde tanımlanarak literatüre kazandırılmıştır. Kaner’in yaklaşımına göre keşifsel test, yalnızca rastlantısal bir deneme süreci değil; aynı zamanda öğrenme, test tasarımı ve test yürütmenin eşzamanlı biçimde kurgulandığı bir düşünsel faaliyettir.
1990’lı yıllarda yazılım endüstrisinin hızlı dönüşümü, kişisel bilgisayarların yaygınlaşması ve kısa geliştirme döngülerinin baskın hale gelmesi, keşifsel testin önemini artırmıştır. Bu dönemde geliştirilen bug bash gibi uygulamalar, bir grup testçinin kısa süreli oturumlarda sistematik olmayan testler yürüttüğü yöntemler olarak dikkat çekmiş; keşifsel test bu kültürün akademik zeminini oluşturmuştur.
Öte yandan context-driven school yaklaşımı, test faaliyetlerinin mutlak kurallarla değil, bağlamın dinamiklerine uygun biçimde yürütülmesi gerektiğini savunarak keşifsel testi yalnızca bir teknik olmaktan çıkarıp bir düşünce biçimi haline getirmiştir. Bu yönüyle keşifsel test, geleneksel betimlenmiş testlere alternatif değil, tamamlayıcı bir paradigma olarak yazılım testi disiplininde kalıcı yerini almıştır.
Keşifsel testin temel felsefesi, yazılım testinin katı plan ve senaryolardan bağımsız olarak, sürekli öğrenmeye ve geri beslemeye açık bir biçimde yürütülmesi anlayışına dayanır. Keşifsel test, dört temel aşamadan oluşur:
Bu döngüsel yapı, keşifsel testi tek seferlik bir etkinlik değil, ürün yaşam döngüsüne paralel ilerleyen sürekli bir öğrenme ve kalite kontrol mekanizması haline getirir.
Keşifsel test, farklı senaryo ve ihtiyaçlara göre çeşitli biçimlerde uygulanabilir. Bu türler, test sürecinin amaçlarına, kapsamına ve uygulanış biçimine göre değişiklik gösterir:
Bu türler, farklı bağlamlarda birbiriyle kombin edilerek de uygulanabilir. Örneğin bir oturum hem charter bazlı hem de zaman kutulu olarak tasarlanabilir.
Keşifsel testin zayıf yönlerinden biri, sürecin belgelendirilebilirliğinin ve izlenebilirliğinin zayıf olabilmesidir. Bu nedenle James Bach tarafından geliştirilen Session-Based Test Management (SBTM) modeli, keşifsel testin esnekliğini korurken, kontrol edilebilirliğini artırmayı hedefler.
SBTM yaklaşımında test süreci, belirli oturumlara (session) bölünür. Her oturum:
Bu yapı, keşifsel testin doğasında yer alan freestyle akışı, planlanabilir ve raporlanabilir bir forma dönüştürür. SBTM, özellikle büyük ekiplerde veya yüksek riskli projelerde test faaliyetlerinin şeffaf, izlenebilir ve değerlendirilebilir olmasını sağlar.
Örneğin charter bazlı bir oturumda, testçiye şu görev verilebilir: “Kullanıcı girişi işlevini farklı cihazlarda deneyimle, karakter limiti ve parola sıfırlama senaryolarını denetle.” Bu charter, testçiye yön verir fakat adımları katı biçimde tanımlamaz. Bu sayede testçi, karşılaştığı yeni durumlara göre test akışını anlık olarak şekillendirir.
SBTM, keşifsel testin hem yaratıcı hem de hesap verebilir olmasına imkân tanıyarak, çağdaş yazılım geliştirme süreçlerinde (Agile, DevOps vb.) önemli bir köprü görevi görür.
Modern yazılım geliştirme paradigmaları, Agile, DevOps ve Sürekli Entegrasyon/Sürekli Teslimat (CI/CD) süreçlerinin merkezinde yer alan hız, esneklik ve geri bildirim odaklılık ilkelerini öne çıkarır. Bu bağlamda keşifsel test, geleneksel betimlenmiş testlerin tamamlayıcısı niteliğinde kritik bir rol oynar.
Agile geliştirme döngülerinde, kısa sprintler ve sık değişiklikler, önceden tanımlı test senaryolarının her zaman yeterli olmasını engeller. Gereksinimler ve özellikler hızlıca değişebildiğinden, testçilerin mevcut planları esneterek yeni risk alanlarını hızla keşfetmesi gerekir. Keşifsel test, bu ihtiyaca doğrudan yanıt verir. Testçi, sprint içinde ortaya çıkan yeni işlevleri, senaryo dışı akışları ya da öngörülmeyen kombinasyonları deneyerek kritik kusurları belirleyebilir. Bu esnek yapı, otomasyonun kapsamı dışında kalan karmaşık kullanıcı davranışlarının da test edilmesini sağlar.
DevOps kültürü ise geliştirme ve operasyon ekipleri arasında kesintisiz entegrasyon ve teslimatı destekler. Bu ortamda keşifsel test, otomasyon odaklı regresyon testlerinin tamamlayıcısı olarak özellikle son aşamalarda devreye girer. Sürekli entegrasyon akışında, otomatik testler yazılımın bilinen yönlerini doğrularken; keşifsel test, beklenmeyen davranışları, sistem entegrasyon hatalarını veya kullanıcı deneyimine dair detayları ortaya çıkarır.
CI/CD (Continuous Integration/Continuous Delivery) bağlamında keşifsel testin avantajı, sürüm sıklığı yüksek projelerde dahi testçilerin ürünü anlık olarak keşfederek geri bildirim sağlayabilmesidir. Böylece, klasik betimlenmiş testlerin gözden kaçırabileceği uç senaryolar, veri kombinasyonları veya gerçek kullanıcı davranışları test edilebilir.
Keşifsel test, uygulamada sık sık ad-hoc testing kavramıyla karıştırılmaktadır. Ancak bu iki yaklaşım, kaynaklarda da belirtildiği gibi temel ilke, süreç yönetimi ve çıktılar bakımından birbirinden ayrılır.
Ad-hoc testing, Latince kökeninden hareketle “bu işe özel” anlamına gelir ve çoğunlukla rastlantısal, plansız test faaliyetlerini ifade eder. Bu yöntemde testçi belirli bir plana ya da metodolojiye bağlı kalmaksızın yalnızca aklına gelen testleri uygular. Çoğu zaman bir defalık yürütülür, öğrenme amacı veya sistematik bilgi üretimi içermez.
Oysa keşifsel test, rastlantısallığın ötesinde, sistematik bir öğrenme, gözlem ve geri bildirim süreci barındırır. Burada testçi, her yeni bulguyu bir sonraki adımın tasarımında kullanarak test derinliğini ve kapsamını geliştirir. Ad-hoc testing, genellikle hızlıca uygulanır ancak testlerin yinelenebilirliği zordur ve çoğu zaman kayıt tutulmaz. Keşifsel testte ise oturumlar charter belgeleriyle yönlendirilir, notlar ve raporlar oluşturulur. Bu, hem izlenebilirlik hem de tekrarlanabilirlik açısından kritik bir farktır.
Bu bağlamda keşifsel test, ad-hoc testin aksine rastgele bir etkinlik değil, planlı bir keşif stratejisidir.
Kaynaklara göre keşifsel testin etkinliğini artırmak için bazı temel uygulamalar öne çıkar:
[1]
Kaner, Cem, Jack Falk, and Hung Q. Nguyen. Testing computer software. John Wiley & Sons, 1999. Erişim Adresi.

Yapay zeka ile oluşturulmuştur.
Henüz Tartışma Girilmemiştir
"Keşifsel Test" maddesi için tartışma başlatın
Tarihsel Arka Plan
Keşifsel Testin Temel İlkeleri ve Süreç Aşamaları
Keşifsel Test Türleri
Session-Based Testing: Yapılandırılmış Keşif
Agile, DevOps ve CI/CD Bağlamında Keşifsel Test
Ad-Hoc Testing ile Farkları
Öne Çıkan Uygulamalar
Bu madde yapay zeka desteği ile üretilmiştir.