Negatif Test Nedir? Örnekli Test Durumları
⚡ Akıllı Özet
Negatif test, bir yazılım uygulamasının beklenmedik giriş verileri veya çalışma koşulları aldığında nasıl davrandığını kontrol eder; böylece ürün çökmek, veri bozulması veya güvenlik açığı ortaya çıkarmak yerine sorunsuz bir şekilde çalışmaya devam eder.
Negatif Test
Negatif Test Negatif test, bir yazılım uygulamasının beklenmedik giriş verilerine ve koşullarına karşı test edilmesi için kullanılan bir yazılım test türüdür. Beklenmeyen veriler veya koşullar, basit bir form alanındaki yanlış veri türünden kasıtlı bir siber saldırıya kadar değişebilir. Negatif testin amacı, uygulamanın geçersiz girişlerde çökmesini önlemek ve ürünün kalitesini ve istikrarını iyileştirmektir.
Tek başına pozitif test, sistemin yalnızca normal koşullar altında çalıştığını kanıtlar. Negatif test ise aynı sistemin anormal koşulları da idare edebildiğini doğrular; bu da hataya dayanıklı bir ürünün gerektirdiği şeydir.
Negatif Test Örneği
Asansör, negatif testlerin açıklanmasında en sık kullanılan örnektir, çünkü hem normal davranışı hem de arıza davranışı kolayca gözümüzde canlandırılabilir.
Asansörün çalışma prensipleri tanıdıktır: Kat numarasını tuşlamak asansörü o kata gönderir ve asansör belirtilen kata ulaştığında kapı otomatik olarak açılır.
Aynı asansör için bazı olumsuz senaryolar, pozitif test sonucunun yaptığı varsayımın yanında aşağıda listelenmiştir.
| 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ği varsayılır. |
| Asansörün içinde sigara içilirse veya yangın çıkarsa ne olur? | Asansörün içinde duman veya yangın olmayacağı varsayılmaktadır. |
| Çalışma sırasında elektrik kesintisi olursa ne olur? | Asansör çalışırken elektrik kesintisi olmayacağı varsayılmaktadır. |
Bu vakaların tamamı negatif test sonuçları kapsamına giriyor. Hiçbirinin asla gerçekleşmeyeceği garanti edilemez, bu nedenle her birinin kontrol altına alınması gerekiyor.
Diyelim ki aşırı yük durumu hiç kontrol edilmiyor ve asansör aşırı yüklendiğinde anormal davranıyor. Bu tek bir eksiklik, sistemin güvenilirliğine zarar verir ve hatta can güvenliğini tehlikeye atabilir. İşte olumsuz testin pratikteki anlamı ve önemi budur.
Yazılım da aynı şekilde davranır. Olumsuz bir test, normal çalışma prosedüründen kasıtlı olarak sapmayı ifade eder. Bir kayıt formunu ele alalım.
| Negatif Test | Pozitif Test |
|---|---|
| E-posta alanına geçersiz bir e-posta adresi girin. | E-posta alanına yalnızca geçerli e-posta adresleri girilir. |
| Telefon numarası alanına geçersiz bir telefon numarası girin (örneğin, karakterler). | Sayı alanına yalnızca rakamlar girilir. |
| Belirtilen sınırların dışında bir boyutta resim yükleyin. | Yalnızca belirtilen boyut sınırları içindeki görseller yüklenir. |
| Geçersiz dosyaları yükle, örneğin XML or SQL resim yükleme alanındaki dosyalar | Yalnızca .jpg veya .png gibi geçerli resim formatları yüklenebilir. |
Bu olumsuz durumların her birinde sistemin çalışmaya devam etmesi gerekir. Bir sayı alanına karakter yazılırsa, uygulama hiç beklemediği beklenmedik verileri işleyemez ve çökebilir. Daha da kötüsü, SQL enjeksiyonu Aynı alana girilen bir dize, veritabanının içeriğini silebilir. Bu tür kayıplar, negatif testlerin var olma nedenidir.
Neden Negatif Test Yapılır?
Testler zaman ve para tüketir, bu nedenle neyin, nasıl ve ne kadar test edileceğine karar vermek önemlidir. Bütçenin bir kısmını olumsuz testlere harcama gerekçesi, projenin iki tarafı açısından farklılık gösterir.
Organizasyon perspektifi
Müşteriye kaliteli bir ürün sunmak kuruluşun sorumluluğundadır ve olumsuz testler bu yükümlülüğün bir parçasıdır. Ayrıca, hiçbir sistem tamamen hatasız olmasa da, kuruluşun bir arızayı önlemek için makul olan her şeyi yaptığının kanıtıdır.
Etki belirleyici faktördür. Bir e-ticaret sitesi tüm olumlu testlerden geçebilir ancak yine de bir saldırganın SQL enjeksiyonu çalıştırmasına ve arkasındaki verileri silmesine olanak tanıyan bir güvenlik açığı içerebilir. Bu ciddi bir güvenlik ihlalidir ve yalnızca olumsuz testler bunu arar.
Özellikle web siteleri gibi halka açık uygulamalar, ziyaretçilerin bunları nasıl kullandığı konusunda neredeyse hiç kontrol imkanı sunmaz; bu nedenle, olağandışı kullanımın kapsandığını ve kontrol altına alındığını doğrulamak için tek yol olumsuz testlerdir. Aynı durum kötü niyetli kullanıcılar için de geçerlidir: Saldırganlar aktif olarak bir sistemi kırma fırsatı ararlar ve siber saldırı senaryoları kesinlikle olumsuz test kapsamına girer.
Müşteri perspektifi
Müşteriler sıfır güvenlik açığına sahip bir ürün bekler ve olumsuz testler bu beklentiyi destekler. E-ticaret veya çevrimiçi hisse senedi ticareti gibi hassas ürünler için, güvenlik testi Negatif test sonuçları ise isteğe bağlı değil, zorunludur.
Müşterinin tek gerçek endişesi maliyettir. Bir arızanın etkisi analiz edildikten sonra, müşteri olumsuz test çalışmalarının ne kadar ileriye götürülmesi gerektiğine karar verebilir.
Negatif Test nasıl yapılır?
Negatif test, uygulamanın alması gereken girdilerle sınırlı kalmayıp, fiziksel olarak alabileceği her girdiyi dikkate alarak başlar. Bu girdilerin her biri bir kategoriye aittir. Test Durumu Bu özelliğin kullanımının açıkça yanlış olduğu durumlarda bile. Bir e-posta alanı, geçerli bir e-posta adresi olmayan her şeyle test edilir ve bir resim yükleme denetimi, resim olmayan her dosya türüyle test edilir.
Geçersiz girdilerin olası listesi neredeyse sonsuzdur, bu nedenle olumsuz test durumlarına öncelik verilmelidir. Yalnızca .png dosyalarını kabul eden bir resim alanı için aday yüklemeler arasında .jpeg, .xml, .xls ve daha birçok dosya türü bulunur. Bir XML veya SQL dosyasının .jpeg dosyasına göre çok daha büyük bir potansiyel etkisi vardır, bu nedenle bu durumlar önce yürütülür. Yürütmeden önce durumları etkiye göre sıralamak, olumsuz testlerin uygun maliyetli olmasını sağlar.
Olumsuz test vakalarının çoğu, doğaçlamadan ziyade, yerleşik tasarım tekniklerinden oluşan küçük bir gruptan kaynaklanmaktadır:
- Sınır değerleri: Geçerli bir aralığın hemen dışındaki değerleri kullanın; örneğin, 1 ile 100 arasında değer kabul eden bir alan için 0 ve 101 gibi.
- Geçersiz eşdeğerlik sınıfları: Reddedilen girdilerin her sınıfından bir temsilci seçin; örneğin, sayısal bir alandaki harfler.
- Tahmin hatası: Geçmişteki hatalardan edinilen deneyimlerden yararlanarak, bu tür bir özelliğin bozulmasına en çok yol açabilecek girdileri hedefleyin.
- Bozuk ve düşmanca veriler: Doğrulama ve güvenlik işlemlerini test eden komut dosyası etiketleri, SQL parçaları ve aşırı büyük veri paketleri.
- tüy testi: Kontrolsüz çökmeleri bulmak için otomatik olarak büyük miktarda rastgele veya mutasyona uğramış girdi üretir.
- Kesintiye uğramış akışlar: İşlem yarıda kesilirse, işlem yenilenirse, zaman aşımı olursa veya bağlantı kesilirse sorun yaşanabilir.
Hangi teknik sonucu üretirse üretsin, beklenen sonuç kontrollü, okunabilir bir hata olarak – bir doğrulama mesajı, reddedilen bir yükleme, sorunsuz bir geri alma – yazılmalı ve asla sadece "sistem çökmüyor" şeklinde ifade edilmemelidir.
Negatif Testin Artıları ve Eksileri
Diğer tüm test tekniklerinde olduğu gibi, negatif testin de nerede, ne zaman ve ne kadar uygulandığına bağlı olarak avantajları ve dezavantajları vardır.
Negatif Testin Avantajları
- Bu, ürün kalitesini doğrudan korur, çünkü kaliteli bir ürün, istismar edilebilir güvenlik açıkları olmayan bir üründür.
- Kapsamı genişletir. Geçersiz girdiler kasıtlı veya kaz accidentally canlı bir sisteme ulaşır, bu nedenle anlamlı bir kapsam için olumsuz durumların olumlu durumlarla birlikte çalışması gerekir.
- Bu, bir sürüm yayına girmeden önce müşteri güvenini artırır.
- Bu yöntem, pozitif testlerin yapısal olarak ulaşamadığı, ele alınmayan istisnalar ve zayıf girdi doğrulaması gibi kusurları ortaya çıkarır.
Negatif Testin Dezavantajları
- Bazı durumlarda zaman ve enerji kaybıdır. Bir uygulama tek kullanıcı için geliştirilmişse, 100 eş zamanlı kullanıcının durumunu test etmenin bir anlamı yoktur; bu nedenle doğru koşulları seçmek önemlidir ve bazı sistemler neredeyse hiç olumsuz test gerektirmez.
- Bu tür kılıfların tasarlanması için yetenekli ve deneyimli kişilere ihtiyaç duyulmaktadır.
- Müşteri açısından bakıldığında, bu durum maliyeti artırır ve ürünün piyasaya sürülmesini geciktirebilir.
- Çabalar arasında rekabet söz konusu. Negatif testlere çok para harcayan bir ekip, pozitif testlere yeterince yatırım yapmayabilir.
