Bu yazımda özellikle yazılım projelerindeki test sürecinden
bahsetmek istiyorum.
Nedense bu süreç yazılım projelerinde nekadar
kabul edilmesede en yüzeysel geçilen en az zamanın, kaynağın ayrıldığı
süreçtir.Aslında kesinlikle bu işin daha uzmanca bir bakış açısıyla ele
alınması ve tamamlanması gerekir. Genelde ülkemizde hele bir başlayalım ara ara
test ederiz hallederiz ,nasılsa herkes test yapabilir bakış açısıyla
değerlendirilen süreç.Ama kanaatimce bu çok yanlış ve aslında maliyetli
bir bakış açısı.Peki test nedir ona
bakalım.Dokumanlarda yer alan bazı tanımları aktarmak istiyorum.
Ürünün beklenilen
saviyede olduğunu belirlemek ,değilse de
istenilen ölçüye gelmesini sağlamak için
yürütülenbir süreçtir.Bir diğer tanım geliştirilen bir yazılımın sistematik olarak kontrol edilmesi sürecidir. Tanımı
yürütülenbir süreçtir.Bir diğer tanım geliştirilen bir yazılımın sistematik olarak kontrol edilmesi sürecidir. Tanımı
aktarmışken hemen ardından test
türlerinnde bazılarından bahsetmek istiyorum .
Aşağıda belirttiğim
test türleri tabiki hepsi değil.Bu sektördeki herkesin bilmesi gerektiğini düşündüğüm test
çeşitleri.
çeşitleri.
· Bırımtest:Çalışan bir kod parçası ya da modül için, geliştiriciler tarafından gerçekleştirilir.Düşük seviyede işlem gerçekleştirir.
·
Tümleyim
testi(Integration testi):Bir uygulamanın farklı bileşenlerinin beraberce
uyum içinde çalışıp çalışmadığı kontrol edilir.
·
Regresyon
testi:Uygulamada ve uygulama ortamlarında gerekli
değişiklikler ve sabitlemeler yapıldıktan sonra yeniden
yapılan testlerdir.
·
Performans testi:Bu
test çoğu kez yük testi ile aynı anlamda kullanılır.
·
Kullanıcı kabul
testi:Son kullanıcı veya müşteri siparişine uygunluğun alındığı testtir.
Testler aslında
sistemde yer alan hataların yakalanması amacıyla yapılıyor.Peki hatalar neden
oluyor .Bir çok
nedeni var tabiki ama ilk aklıma gelenlen şunlar:
nedeni var tabiki ama ilk aklıma gelenlen şunlar:
·
Yazılım ürünü insanlar
tarafından yazılan kod lardan oluşur.İnsanlar birşeyleri
bilebilir ama herşeyi değil bu nedenle hep bu şekilde düşünüp yazılımcı hata
yapmış olabilir diye bakmak önemli. İnsanlar yetenekli
olabilir ancak kusursuz değillerdir
· Zaman kaygısı
kaliteyi düşürür.Kontrol için
yeterince zaman kalmamış veya verilmemiş olabilir.Yarım kalmış yapılar
olabilir
·
İşi birden fazla
yazılımcı yapmış olabilir. Bir yazılımcı
konusunda uzman iken diğeri asistan seviyesinde olabilir.
Hatalar nekadar
erken tespit edilirse maliyeti bize o kadar az olur.Bu maliyet göz önünde
bulundurularak test süreci gerçekten dikkat edilmesi ve önem verilmesi
gereken bir süreçtir.
Bu maliyet aslında çok bazit Aşağıdaki grafik hatanın zaman içindeki maliyetini göstermektedir.
Bu maliyet aslında çok bazit Aşağıdaki grafik hatanın zaman içindeki maliyetini göstermektedir.
Test sürecinin yazılım
sürecindeki yerini gösteren şemayada göz attığımızda test yapma sürecinin
yazılımın başlamasından bir süre sonra başlayabileceğini söyleyebiliriz.Teste
hazırlık ise analiz sürecinin başlaması ile başlayabilir diyebiliriz.
Testin önemini ve maliyetini göstren ufak bir
projeksiyon paylaşmak istiyorum.Yazılım hatalarının amerikan ekonomisine maliyeti yıllık
yaklaşık 60 milyar $ olduğu tahmin ediliyormuş .Ciddi bir rakam değilmi.
Test sürecinin
bazı temel ilkeleri vardır şimdi bunlara bir göz atalım isterseniz.
1.
Test defect in
varlığını gösterir:Test defectin ,bug ın varlığını gösterir ama yokluğunu ispat
etmez.Sadece keşfedilmemiş bugların olma olasılığını azaltır.Hiç bug bulmamış
olmak hata yok anlamına gelmez.
2.
Herşeyi kapsayan test
mümkün değildir.Herşeyi test edemeyiz dolayısıyla risk analizi yapıp öncelikler
belirlemeliyiz
3.
Erken test:Yazılım
yaşam döngüsünde mümkün olduğunca erken teste başlanmalı ve tanımlı
hedeflere odaklanılmalı
4.
Pesticide
Paradoksu:Aynı testler üst üste tekrarlandığında potansiyel diğer bugları
yakalama şansı azalıyor
Yukardada ifade ettim testyapan kişinin
bu işi uzmanlık bakış açısıyla ele alıyor olması yeterli
bilgiye, deneyim ve tecrübeye sahip olmaı gerekir .Test yapan kişide
aslında bazı temel özelliklerin olması gerekir diyebiliriz.Peki bunlar nelerdir
ilk aklıma gelenler şunlar:
·
Şüpheci olmak durumundadır
·
Sistemdeki hataları
bulmaya istekli ve hırslı olmalı
·
Sabırlı olmak
zorundadır
·
Detaycı olmak
durumundadır
·
Dikkatli olmak
zorundadır
·
Analitik zekaya sahip
olması beklenir
·
Bu yazımı belkide
yazının en can alıcı kısmı ile tamamlamak istiyorum oda şu peki
test yaparken nasıl bir yaklaşımla test yapılmalı hangi noktalar
ele alınmalı.Şu şekilde gruplanabillir.
·
Yazılımdan
istenilenler yerinde ve yapılmış mı?(validation)
·
Yazılım istenen
işlevleri yerine getiriyor mu?(verification)
·
Yazılım işlevleri
yaparken hata veriyor mu?(reliability)
·
Yazılım işlemi istenen
hızda yapıyormu?(performance)
·
Yazılım istenilen
kadarişlev yapabiliyor mu?(Load)
·
Yazılım istenilen
işlevleri en çok nekadar yapabiliyor?(stress)
·
Yazılımda istenilen
işlem kolay yapılabiliyor mu?( usability)
·
Yazılım istenilen
işlevi güvenli yapabiliyor mu?(security)
·
Yazılım işlevleri
herzaman yapabiliyor mu?(compatibility)
Yaşar ERKAN(PMP)
Endüstri Mühendisi
Hiç yorum yok:
Yorum Gönder