Yazılım Test Süreçleri

bug-test

Merhabalar,
Günümüzde kaliteli yazılım dediğimizde aklımıza gelen rövanşta olan yazılımlar olmamalı. Hatasız, planlanan bütçe ile doğru zamanlamada bitirilen yada belirlenene sorunlara doğru şekilde çözüm üreten yazılımlar gelmeli. Ancak kalite sözcüğü göreceli olduğundan kişiden kişiye değişiklik göstermektedir. Bu konuda bir standardın olması amacı için yapılan işlemlere testler denilmektedir. Bu testler bağımsız kişi / kurum tarafından yapılmaktadır.

Yazılım Testi Neden Yapılır?

Geliştirilen yazılımlarda geliştirme süresinde dikkatsizlik ve bilgi eksikliği ile hatalar yapılabilir. Daha verimsiz çalışma, kaynak tüketimlerinin fazlalığı gibi sorunlar olabilir. Yapılan hataların zamanında ve testlerle önlenememesi sonucunda ciddi hatalar ve maddi kayıplar ortaya çıkabilir. Projenin büyüklüğüne göre ciddi zararlar ve hayati sonuçlar doğurabilir. Örneğin, askeri bir uygulamada hedefin yanlış tanımlanması sonucu yanlış hedefler zarar görebilir. Genel olarak;

  • Müşteriye ürün sunumunda kaliteden emin olmak
  • Geliştirme ve hata düzeltme masraflarını azaltmak
  • Kodlama esnasında yapmak erken çözüme ve müşteriye gitmeden sorunsuzluk sağlamak
  • Müşteri memnuniyeti ve yeni müşterilere referans gösterebilmek

amacıyla yapılmaktadır. Bazı anlaşmalar gereği sözleşmelerde test modülleri de yer alır nedeni ise güvenlik ve kaynak kullanımı önemseni. Doğru olan da budur ve doğru çalışmayan bir yazılımda ciddi tazminatlar doğurabilir.

Yazılım Test Süreçleri

Genel olarak yazılım proje süreçleri şu şekilde sıralanır;

yazılım proje süreci

bu süreçleri tamamlamak üzere planlanır. Bu planlamadan Test olan bu bölümde sizlere sektörel tecrübelerimi de aktaracağım. Test süreci ise bu süreçlere girift bir şekilde tüm yazılım sürecinde yapılması gerekmektedir. Ürün ortaya çıksın test yapalım yanlıştır. Sektörde eskilerin (eski yazılımcılar) yaptığı en büyük hata Test modülleri yazmadan normal yazılımları yazıp geçmektir, savundukları ise : “Ben eski yazılımcıyım hata yapmam.” doğru bir yaklaşım değildir. Aksine eski yazılımcı isen Testin önemini çok daha iyi biliyor olman lazım.

Test süreci, yazılım sürecine katılınca yeni şemamız;

yazılım proje test süreci

olan son halini almaktadır.

Test Hazırlık Süreci Nedir?

Tüm testlerin başarılı olması için hedefler ve değerler belirlenir. Kodlamanın başında olması genel kuralları ve gidiş yollarının belirlenmesi ve en yüksek verim hedeflenerek kodlama yapılmasına yardımcı olur. (Bir Dokümantasyonu Olması Şarttır.) Bu süreçte yapılacaklar ;

  • Test ekibi görev ve zaman yönetimi yapar
  • Teknik tasarım ve yazılım proje analizleri incelenir
  • Test edilecek ve edilmeyecek modüller belirlenir
  • Risk analizi yapılır
  • Programın girdi türleri ve çıktı türlerini test case senaryolarını hazırlarlar
  • Dinamik test için plan hazırlanır

bu kısın bittikten sonra test ekibi dinamik test sürecine geçerler.

Dinamik Test Süreci Nedir?

Bu süreç kodlamanın bitmeye yaklaştığında yani ortaya ürün prototipi çıkmaya başladığında başlar. Bulunan tüm hatalar çözülmeden bitmez. (Yani ürün olamaz, prototipken hatalar biter.) Yazılıma özel olarak değişkenlik gösterse de genel olarak şu testler yapılır;

  • Birim Testi (Unit Testing) : Fonsiyon, veri yapıları, nesler vs. gibi componentler test edilir. Programcı tarafından yapılabilir. Kod tasarımı iyi bir mimaride yazılmamış ise çok zaman harcanır.
  • Tümleyim Testi (Integration Testing) : Farklı bileşenlerin uyum içinde çalışma testidir. Bileşenler, modüller, bağımsız uygulamalar, istemci /sunucu uygulamaları ve dağınık sistemlerin testleri yapılır. Test uzmanı veya programcı tarafından yapılabilir.
  • Regresyon Testi (Regression Testing) : DAha önceki testlerde bulunan hatalar giderildikten sonra yapılan teste denir. (Yapılan değişiklikler sorun çıkartıyor mu? diye) Birkaç kez test edilir ve sorunsuzluk onaylanır. Test uzmanı tarafından yapılmalı.
  • Zorlama – Performans Testi (Performance Testing) : Sektörde “Yük Testi” diye adlandırılır. Beklenmedik ve normal olmayan durumlarda, fazla trafikte sistemin verdiği tepkileri ölçmek için kullanılır. Test uzmanı tarafından yapılmalı.
  • Kullanıcı Kabul Testi (User Acceptance Testing) : Müşteri isteklerine ve müşteri önemli vurgularına dayanan testtir. Müşterinin kabul etmesi için ürün olabilecek şekilde prototip test edilir ve raporlanır. Test uzmanı tarafından yapılmalı.
  • Beyaz Kutu Test Tekniği (White Box Testing Technic) : Hem kaynak kodun hem de derlenmiş kodun testi anlamına gelir. Yazılım içindeki açıklamalar, kullanılan her şeyin isimleri uluslar arası standarda uygunluk testidir. Deyimler, akış denetimleri ve koşullar test edilir. Test uzmanı tarafından yapılmalı.
  • Kara Kutu Test Tekniği (Black Box Testing Technic) : Test ekiplerinin en sevdiği test yöntemidir. 🙂 Derlenmiş kod üzerinden test yapılır. Bu teknikte, programatik yapı, tasarım veya kodlama tekniği hakkında herhangi bir bilgi olması gerekli değildir. Yazılımın gereksinim duyduğu şeylere yanıt verip veremediği ve işlevselliği sınanır.

Testi Sonlandırma ?

Yapılan testlerde bulunan hatalar giderilir ve testler sonlandırılır. Eğer Hazırlık Sürecinde belirlenen tüm kriterler kabul edilir düzeyde ise test tutanağı onaylanır ve sonlandırılır. Artık proje müşteri testine açılır ve live test dediğimiz canlı test yani müşteri testi yapar. Müşteri testinden de geçen proje artık yayın hayatına başlar.

Başarılı projeler ve doğru testler dilerim…