Negatif Test Nedir? Örnekli Test Durumları
Negatif Test
Negatif Test beklenmedik giriş verileri ve koşulları açısından yazılım uygulamasını kontrol etmek için kullanılan bir yazılım test türüdür. Beklenmeyen veriler veya koşullar, yanlış veri türünden güçlü bilgisayar korsanlığı saldırılarına kadar her şey olabilir. Negatif testin amacı, yazılım uygulamasının negatif girdiler nedeniyle çökmesini önlemek, kaliteyi ve kararlılığı arttırmaktır.
Sadece pozitif test yaparak sistemimizin normal koşullarda çalıştığından emin olabiliriz. %100 hatasız bir sistem sağlamak için sistemimizin beklenmedik koşulları kaldırabileceğinden emin olmalıyız.
Negatif Test Örneği
Negatif testin yaygın olarak kabul edilen bir örneği olan bir asansör durumunu düşünün.
Asansörün işlevselliğini hepimiz biliyoruz. Bunlar asansörün kat numarasına basılarak asansörün o kata gitmesini sağlaması gibi gereklilikler olarak değerlendirilecektir.
Asansör belirtilen kata ulaştığında kapı otomatik olarak açılır ve bu şekilde devam eder.
Şimdi yükselişe ilişkin bazı olumsuz senaryoları ele alalım. Onlardan bazıları,
| Negatif Test | Pozitif Test |
|---|---|
| Kişi sayısı (ağırlık) belirlenen sınırı aşarsa ne olur? | Asansöre yalnızca belirtilen sayıda kişinin gireceğini varsayarız |
| Birisi asansörün içinde sigara içerse veya yangına neden olursa ne olur? | Asansörün içinde duman veya ateş olmayacak |
| Çalışma sırasında elektrik kesintisi olursa ne olur? | Asansörün çalışması sırasında elektrik kesintisi yaşanmayacak |
Tüm bu vakalar negatif teste tabi tutulacak. Bunun önemi, yukarıda bahsedilenlerin hepsinin olmayacağından emin olamamamızdır, bu yüzden bunların kontrol altına alınmasına ihtiyacımız var.
Aşırı ağırlık durumunun kontrol edildiği ve uygulamada aşırı ağırlık durumu olduğunda asansörün anormal performans gösterdiği durumu düşünün. Bu, sistemin güvenilirliğini potansiyel olarak etkileyebilir ve hatta hayati tehlikelere yol açabilir. Bu, negatif testin ne olduğunu ve önemini açıklar.
Aynı durum yazılımda da uygulanmaktadır. Negatif testlerde normal operasyonel prosedürden saptık. Bazı örnekler üzerinden gidelim.
Örneğin bir kayıt formunu düşünün.
| Negatif Test | Pozitif Test |
|---|---|
| E-posta alanına geçersiz bir e-posta kimliği girmeyi deneyin | E-posta alanına yalnızca geçerli e-posta kimlikleri girilecektir |
| Telefon numarası alanına (karakterler) geçersiz bir telefon numarası girmeyi deneyin | Sayı alanına tek sayı girilecektir |
| Boyutu belirtilen sınırın dışında olan resmi yükleyin | Yalnızca belirtilen sınırın altındaki boyuttaki resimler yüklenecek |
| Şunun gibi geçersiz dosyalar yükleyin: XMLResim yükleme alanındaki , SQL vb. dosyalar | Yalnızca jpg.png vb. gibi geçerli resim formatlarını yükleyin. |
Daha önce de söylediğimiz gibi tüm bu olumsuz durumlarda sistemimizin düzgün çalışacağından emin olmalıyız. Birisinin sayı alanına bir karakter girmeye çalıştığı ve sistemin bir sayı beklediği için beklenmeyen verileri işleyemediği ve sonunda sistemin çöktüğü durumu düşünün. Ya birisi bir şey yapmaya çalışırsa SQL enjeksiyonu ve tüm verilerimizi veritabanından silin. Bu tür olası kayıplara dayanamayız. Bu nedenle negatif test önemlidir.
Neden Negatif Test Yapılır?
Test etmek zaman ve maliyet tüketen bir görev olduğundan, 'ne', 'nasıl' ve 'ne kadar' test edileceğine karar vermek gerçekten önemlidir. Sistemimizde negatif test yapıp yapmayacağımızı akıllıca seçmeliyiz. O halde negatif testin önemine bir bakalım.
Organizasyon perspektifi
Müşterisine kaliteli bir ürün sunmak kuruluşun sorumluluğundadır. Bunu başarmak için negatif test yapılması gerekir.
Bir başarısızlığa karşı doğrulamanın bir parçası olarak kuruluşun negatif test yapması gerekir.
Belki %100 hatasız bir sistem kuramayız, ancak negatif test yapmamızı sağlamak için bir arızayı önlemek için her şeyi yaptığımızdan emin olmalıyız.
Etki, dikkate almamız gereken faktörlerden biridir. Bir e-ticaret sitesinde pozitif test yaptığımızı ve her şeyin yolunda olduğundan emin olduğumuzu düşünün. Peki ya sistemimizde birisinin SQL enjeksiyonu yapıp tüm verilerimizi silebileceği bir boşluk varsa? Bu büyük bir güvenlik ihlali olacak. Bu tür vakalardan kaçınmak için negatif testlerin de yapılması gerekir.
Başta web siteleri olmak üzere halka açık uygulamalar için, uygulamanın kullanım prosedürünü fazla kontrol edemediğimizi her zaman aklımızda tutmalıyız, dolayısıyla tüm bu tür durumların kapsandığından ve kontrol altına alındığından emin olmak için negatif testler yapmalıyız.
Dikkat etmemiz gereken bir diğer şey de, sistemi yok etmek için fırsat kollayan çok sayıda siyahi hackerın var olmasıdır. Hacking, negatif test kapsamında ele alınan önemli bir durumdur
Müşteri perspektifi
Negatif testin zorunlu olmasını sağlamak için müşteriler her zaman sıfır güvenlik açığı içeren ürünler bekler
E-ticaret, çevrimiçi stok vb. gibi hassas bir ürünse güvenlik ve negatif test şarttır.
Müşterinin negatif testle ilgili tek endişesi maliyettir. Ancak etki analiz edildikten sonra negatif test yapılıp yapılmayacağına karar vermek müşteriye kalmıştır.
Negatif test nasıl yapılır
Negatif test yapmak için olası tüm durumları dikkate almalıyız. Yani eğer mümkünse bunu dikkate almalıyız. Test Durumu doğru kullanım şekli olup olmadığı önemli değil. Örneğin, bir e-posta alanı gördüğümüzde, doğru e-posta biçimi dışında oraya koyabileceğimiz tüm olası girdileri düşünelim. Aynı şekilde bir resim yükleme seçeneği gördüğümüzde, bunu tüm olası dosyalarla test etmeliyiz.
Olumsuz test durumları oluştururken girdileri öncelik sırasına koymalıyız, aksi takdirde çok sayıda olası durum olacaktır. Örneğin, yalnızca '.png' dosyalarının girilmesi gereken bir resim alanı için 'jpeg', 'xml', 'xls' vb. gibi yüklemek için çok sayıda seçeneğimiz olabilir. Bu nedenle XML ve SQL jpeg ve xls'den daha büyük etkiye sahip olabilir, bu nedenle öncelikle SQL ve XML durumlarıyla ilgilenmeliyiz. Bu şekilde, zamandan ve test maliyetinden tasarruf etmek için yürütmeden önce vakalara öncelik vermemiz gerekiyor.
Negatif testin artıları ve eksileri
Diğer tüm test teknikleri gibi, negatif testlerin de temel olarak 'nerede', 'ne zaman' ve 'nasıl' kullanılacağına bağlı olarak artıları ve eksileri vardır. Gelin şuna bir göz atalım.
Negatif Testin Avantajları
- Hepimizin bildiği gibi, bir ürünün kalitesinden emin olmak için negatif test çok önemlidir. Kaliteli bir ürün, sıfır güvenlik açığına sahip bir üründür, negatif testlerin çok önemli olmasını sağlamak için.
- Negatif test yapmak tüm olası vakaların kapsandığından emin olmanızı sağlar. Kasıtlı veya kasıtsız olarak olumsuz test vakalarının meydana gelme ihtimali vardır. Bu nedenle tüm vakaların kapsandığından emin olmak için pozitif testlerin yanı sıra negatif testler de yapmalıyız.
- Negatif testler, yayına geçmeden önce müşteriye daha fazla güven verecektir.
Negatif Testin Dezavantajları
- Yazılım Mühendisliğinde, bazı durumlarda negatif testler zaman ve enerji kaybı haline gelir. Çoğu durumda aşırı negatif test yapılmasına gerek yoktur. Örneğin tek kişinin kullanımına yönelik bir uygulama oluşturulmuşsa, sistemi aynı anda 100 kullanıcının kullanması durumunu dikkate almamıza gerek kalmıyor. Bu nedenle, negatif test durumlarında koşulların belirlenmesi çok önemlidir. Belirli bir sistemde negatif test yapmak zorunda kalmayacağımız zamanlar olacaktır.
- Negatif test senaryoları oluşturmak için yetenekli ve deneyimli kişilere ihtiyaç duyulur.
- Müşteriye göre negatif test, sürümde gereksiz gecikmelere ve maliyet artışına neden olan başka bir şeydir.
- Bir ekibin negatif testlere daha fazla zaman ve enerji harcaması şansı. Test uzmanlarının negatif testlere çok fazla zaman ve enerji harcaması ve bunun da pozitif testlerde daha düşük konsantrasyona yol açması ihtimali vardır.
