Social Icons

Pages

7 Ocak 2015 Çarşamba

Yazılım Projelerinde Test Süreci Ve Önemi

                    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ı
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.
·       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:

·        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.
 
Hatanın zaman içindeki maliyeti

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

 

Yaşar ERKAN

Yaşar ERKAN
 
Blogger Templates