Download CV

Yazılım Testlerinin 7 Prensibi

Aralık 17, 2021

Test Nedir?

En genel ifadesiyle Yazılım testi (Software testing) test altında hizmetlerin veya ürünlerin kalitesi hakkında paydaşlara bilgi sağlamak için yürütülen bir araştırmadır, yazılım testi aynı zamanda, yazılım uygulamalarının risklerini anlamak için yazılımı bağımsız ve nesnel olarak incelemektir. Bir başka tanımda Yazılım testi, yazılımdaki kusurları veya uygulamadaki hataları tanımlayan yazılım geliştirme yaşam döngüsünün ayrılmaz bir parçasıdır

Test hakkında genel bir anlayışlardan biri testin sadece test koşumundan ibaret olduğu yönündedir, fakat test koşumu test sürecinin sadece bir parçasıdır. Testin başından sonuna tüm aşamaları ise test koşumundan çok daha komplekstir. Test süreci öncesinde planlama ve kontrol, test koşullarını seçme, test senaryolarını tasarlama aşamalarından sonra testi koşturur ve sonrasında sonuçları kontrol etmeçıkış kriterini değerlendirme, test süreci ve test edilen sistem ile ilgili raporlama ve test fazı tamamlandıktan sonra kapanış işlemlerini sonlandırma ve tamamlama ile test sürecini bitirmiş oluruz. Bunun yanında test, dokümanların ve ya kaynak kodun gözden geçirilmesi ve statik analiz işlemlerini de içermektedir.

ISTQB müfredatı ile tanımlanan bu temel test prensipleri, test ekiplerinin test süreçlerini daha etkin hale getirmelerine, zamanlarını ve çabalarını daha verimli kullanmalarına yardımcı olur. Kısaca bu ilkeleri inceleyelim:

1. Testing shows presence of defects

2. Exhaustive testing is impossible

3. Early Testing

4. Defect clustering

5. Pesticide paradox

6.Testing is context dependent

7. Absence of error fallacy

1- Test, hataların varlığını gösterir. (Testing shows presence of defects)

Test, yazılımda ki hataları bulabilir ama hata olmadığını kanıtlayamaz. Hiç hata bulunamaması kesinlikle yazılımın hatasız olduğu anlamına da gelmez. Testler, yazılımdaki hata oranını azaltır ve daha fazla hata bulmak için tasarlanmalıdır.

2- %100 test mümkün değildir. (Exhaustive testing is impossible)

Bir yazılımı %100 test etmek imkansızdır. Çünkü o yazılımdaki bütün kombinasyonları test etmek mümkün değildir. Bunun yerine yapılacak test için risk analizi ve önceliklendirme yapılmalıdır.

3- Erken testler zamandan ve maliyetten tasarruf sağlar. (Early Testing)

Hataları erken bulmak için, mümkün olduğunca yazılım geliştirme sürecinde erkenden test faaliyetleri başlatılmalıdır. Hataları gereksinim aşamasında yakalamak daha az maliyetlidir. Hata ne kadar ileri aşamada yakalanırsa o kadar fazla maliyete ve zaman kaybına yol açar. Bu yüzden erken test çok önemlidir.

4- Hatalar yazılımın belli alanlarında yoğunlaşır. (Defect clustering)

Yazılımda hatalar belirli yerlerde toplanırlar. Yazılımın tümüne baktığımızda, hataların büyük çoğunluğunun küçük bir modül kısmında bulunacağı görülecektir. Buna Pareto prensibi 80–20 kuralı diyebiliriz. Hataların %80 ‘i yazılımın %20 ‘lik alanında bulunur.

5- Antibiyotik Direnci (Pesticide paradox)

Projelerde yazmış olduğumuz test senaryolarımız bir noktadan sonra etkisini azaltır. Çünkü sürekli olarak aynı senaryoları test edip bulduğumuz hataları düzelttiğimizde o senaryolarda hata bulma oranımız azalır. Bu yüzden düzenli olarak senaryolarımızı güncellemeliyiz.

6- Test, projenin koşullarına göre değişiklik gösterir. ( Testing is context dependent)

Test faaliyetleri, yazılımın özelliklerine ve içeriğine göre farklı biçimlerde ele alınmalıdır. Örneğin Oyun yazılımı ve hastane yazılımını aynı test senaryolarını kullanarak test edemeyiz. İkisi de uygulamasına göre farklı şekilde test edilmelidir.

7- Hata Yoksa Ürün Hatasızdır Düşüncesi (Absence of error fallacy)

Bulunan hataların düzeltilmesi ve yeni hataların bulunulmaması hatasız olduğu anlamına gelmez. Test hataların tümünü önleyemez, bütün hataları tespit edemez ve ürünün hatasız olduğunu kanıtlamaz.

Posted in Software Testing
Write a comment