Herkese Merhaba;
Bu yazıda siz değerli Medium okurlarına İSTQB verilerini baz aldığım 7 test prensibinden bahsetmek istiyorum. Aslında testin işlevlerini anlatmak için çok daha fazla faktörden dem vurmak gerekir. 7 prensip genel olarak test kurallarını bir çatı altında toplar. Buyurun başlayalım:

- Test hataların varlığını gösterir, hata bulunmadığını değil: Yazılım testinin amacı hataları tespit etmektir. Bug’lar test edilerek ortaya çıkarılır. Bunu yapmanın başka yolu olsaydı o da yapılırdı. O zaman test edilmiş bir yazılımdaki hataların tamamen tespit edildiğini söyleyebilir miyiz? Bunu söylemek imkansız olduğu gibi aynı zamanda mantıksızdır . Zira diyelim ki yazılım bir dizi testlere tabi tutuldu ve düzeltmeler yapıldıktan sonra yeniden test edildi. Genelde bu kısma gelindiğinde hataların önemli bir kısmı tespit edilip düzeltilir veya eğer ihmal edilebilecek bir hata ise bir sonraki sürümde düzeltmek üzere ertelenebilir. Test hataları ortaya çıkartır ama %100 hatasızlık getirmez. Testler yapıldıktan sonra bile ürün konusunda şüpheci olmak gerekir. Beklenmeyen veya öngörülemeyen sorunlar olabilir.
- Her şeyi test etmek imkansızdır: Örneğin yenidenalbeni.com adında on bin kullanıcıya hitap eden ikinci el al-sat e-ticaret sitesinin web sitesini ele alalım. Sizce bir kullanıcı hangi durumlarda bu uygulamaya erişim sağlar? Herkes Windows veya MacOS kullanmayabilir. Kimi kullanıcı Linux üzerinden erişim sağlayabilir. Peki kullanıcılar nerelerde web sitesine erişim sağlar? Ev, araba, sokak belki birbirine benzeyebilir. Metro ya da asansörde kullanıp, internet erişimi kesilip metrodan veya asansörden çıkınca siteye erişmeye devam ettiğini varsayalım. Bu durumda siteden en son göndermek üzere olduğu mesaj, teklif gönderme butonu, sayfa yenileme, filtreler gibi isteklerin düzgün çalışacağını garanti edebilir miyiz? Bir testte mümkün olduğunca veri elde edilmeye çalışır. Ancak kullanıcı farklı durum ve şartlarda ürünü kullanabilir o yüzden her şeyi test etmek imkansızdır.
- Yeni hata yoksa yazılım başarılıdır yanılgısı: Yazılım testinden başarısız geçen hatalar developer ekibine ayrıntılı açıklamalarla geri gönderilir. Düzeltmeler yapıldıktan sonra yeni test koşumu yapılır. Eğer bu kısımda bir hatayla karşılaşılmazsa bu durum ekipte yazılımda hata yok ve canlı ortama sunabiliriz algısına neden olur. Hatasız olsa bile kullanıcıların üründen verim alabileceği tüm durumlar hesaplanmalıdır. Bir butonun doğru çalışsa bile onun yeri veya rengi kullanıcılar açısından sorunlar yaratabilir ve bunların da düzeltilmesi gerekir. Hatasız yazılım başarılıdır manasına gelmez.
- Test projenin içeriğine bağlıdır: Her proje için aynı test uygulanmaz. Farklı ürünlerin farklı gereksinimleri vardır. Testin amacı yazılımın gerekliliklerine uygun bir veri elde etmektir. Zira bir banka uygulamasıyla bir drone yazılımının farklı testlere tabi tutulması gerekir. Bankada güvenlik açıkları, müşteri para transferleri, kredi faiz hesaplaması gibi kritik önemdeki ve müşteri odaklı testler yapılırken; bir drone kalkıştan itibaren manevraları, konsol tuşlarının testi, hava durumunun değişmesi durumundaki tepkileri, çarpmalara karşı refleksi gibi hususlar teste tabi tutulur. Her proje farklı testlerden geçer.
- Antibiyotik Paradoksu: Bir mandıra sahibi olduğunuzu ve hasta olan bir ineği sürekli ona antibiyotik vererek iyileştirdiğinizi düşünün. Sizce ne olur? Bir süre sonra iyileşmediğini ve ilacın fayda etmediğini görürsünüz. Bunun sebebi ineğin metabolizmasının antibiyotiğe karşı direnç kazanmasıdır. Antibiyotik işe yaramadığı için farklı ilaçlar denemek zorunda kalırsınız. Bu prensip bize aynı testleri yapmanın farklı sonuçlar vermeyeceğini açıklamaktadır. Sürekli aynı testleri yapa yapa yazılım buna karşı direnç gösterir ve hata vermemeye başlar. Siz de hatasız bir yazılıma sahibiz düşüncesine kapılıp öngörmediğiniz hatalarla karşılaşacağınız günü beklersiniz. Senaryolar dönem dönem gözden geçirilmeli, değiştirilmeli ve güncellenmelidir.
- Hatalar belli bir alanda yoğunlaşır:Yazılımın %20'lik kısmı hataların %80'lik çoğunluğunu barındırır. Küçük modüllerde çok fazla hata çıkar. Testlerin bu alanlara odaklanması birçok hatayı hızlıca bulmayı kolaylaştırır. Bilgi ve deneyim bu tür hataları bulma konusunda yol gösterici olacaktır. Pareto kuralı olarak bilinen bu prensip hayatın birçok yerinde çalışmaktadır. Bir restorandaki müşterilerin %80'i menüdeki yemeklerin %20'sini sipariş eder. Kalan yemekler daha az tercih edilir. Pareto dönemindeki (19.yy) İtalya’da toprakların %80'inin nüfusun %20'sine ait olduğunu ortaya koymuştur.
- Erken test zamandan ve paradan tasarruf sağlar: Testlerin yazılım sürecinin başlarından itibaren yazılımla entegre ve organize şekilde sürekli olarak yapılması sonradan ortaya çıkacak daha büyük sorunların başlarda tespit edilip temizlenmesine ve uzun vadede getireceği masrafların önlenmesine yardımcı olur. Şirketler için zaman ve para tasarrufu en değerli iki şeydir. Binanın temelinde var olan hata yukarıdaki katları ciddi bir şekilde etkiler. Temeldeki hatanın düzeltilmesi zor belki de imkansızdır ve bütün yatırımın çökmesine sebebiyet verebilir. Katmanları oluşturmadan evvel testlerin yapılması ve her katmanda ihtiyaç olan yeni testlerin koşulması yazılım faaliyetine uygun testler yapılması yatırımı güvence altına alır, daha büyük hataları önler ve hem çalışanların hem de şirketin kaynaklarını etkin kullanmasını sağlar.
7 Test Prensibinden bahsettim. Umarım faydalı olur. Vakit ayırdığınız için teşekkür ederim.