Herkese Selamlar! Bugün sizler ile beraber tam olarak bu hata tipleri neler? Bunları çözmek için neden önceliklendirmek ve sınıflandırmak zorunda olduğumuza bir bakacağız.
Yazılım Hatalarını 3 Temel Sınıfı
Temel olarak yazılımsal hataları 3 ana sınıf altında toplarız. Her bir sınıfın kendine ait alt sınıflarıda tabikide söz konusu. Peki bu 3 hata tam olarak nedir? Burada sadece bir seferlik türkçe olarak nitelendireceğim ve ardından ingilizce olarak bahsetmeye devam edeceğim. Sebebi ise bu kavramlar genelde çalıştığımız ortam içerisinde ingilizce olarak kullanılmakta, buna uygun olarakta sizlerin bunları duyar duymaz yabancılık çekmenizi istemiyor oluşumdan kaynaklı. Uzatmadan hemen 3 hata ne onları söyleyelim; Doğası gereği (By Nature), önceliği gereği (by priority), önemi gereği (by severity). Yazımızın kalan kısımlarında bu terimlerin ingilizcelerni kullanacağımı bir kez daha hatırlatmak isterim.
Doğası Gereği Yazılımsal Hatalar (Software Defects by nature)
Fonksiyonel Hatalar (Functional Defects)
Fonksiyonel hatalar, tasarlanmış ya da kodlanmış olan yazılımın kendisinden beklenen işlevsel gereksinimlere uygun olmaması durumuna ortaya çıkan hatalardır. Bu tür hatalar genelde QA yani quality assuarance daha da açıklayacak olursak kendi firmamızda yer alan tester, iş analisti ya da kalite sorumluları tarafından tespit edilen hatalardır. Örnek verecek olursak şu an üzerinde çalıştığım projede Login butonu tıklandığında dashboard sayfasına gitmesini beklerken çok farklı bir alana gittiğini fark ettik. Aslında çalışıyordu ama yanlış bir şekilde. Sonra kodu kontrol ettiğimizde buton tıklanıldığında yanlış bir kod satırına gidip işlem yaptığını gördük. Bunu düzellttiğimizde ise artık sorun, sorun olmaktan çıktı.
Performans Hataları (Performance Defects)
Performans hataları, yazılımın hızına, kararlılığına, sistemden talep etmiş olduğunuz herhangi bir hizmetin respone yani geri dönüş süresine ve tüm bunları gerçekleştirirken hangi bilgisayar üzerinde çalışıyorsa o bilgisayarın donanım gücünü nasıl kullandığı ile alakalıdır. Performans testleri genelde kişiler tarafından gerçekleştirilmez. Bariz bir şekilde yavaşlık söz konusu ise tabiki de bunun üzerinde çalışmaya başlanır ama çok geniş kapsamlı bir test söz konusu ise;
- Test edilecek sistemin yapısının belirlenmesi
- Normal ve maksimum yük seviyelerinin belirlenmesi
- Senaryoların ve sanal kullanıcıların yaratılması
- Kullanılacak toolun seçiminin yapılması
- Testin execute edilmesi
- Test sonuçlarının incelenmesi ve yorumlanması
Şeklinde daha detaylı ve işlevsel bir test yapılması iyileştirme yapacağınız alanı tespit etme ve ona uygun bir çözüm üretmede size net bir cevap verecektir.
Kullanılabilirlik Hataları (Usability Defects)
Komik bir tanım olacak ama kullanılabilirlik hataları genelde yazılımın kullanımının uygunsuz hale getiren hatalardır. Gözlemlemesi ve takip etmesi zor bir menu, giriş bilgilerinin düzensiz girmeye zorlayan üyelik sistemi prosedürü ya da sayfa üzerinde tüm işlerinizi yaptıktan sonra bulamadığınız “gönder” butonu bunların tamamı sayılabilir ve genelde bunlara ilk müdahele müşteriden gelir. Onun isteği doğrultusunda yeniden tasarımınız yapar ve kullanıma sunarsınız.
Uyumluluk Hataları (Compatibility Defects)
Uyumluluk hataları geliştirdiğimiz herhangi bir yazılım ürününün, donanım, işletim sistemi, web tarayıcıları, farklı aygıtlar ya da belirli ağ kofigürasyonu altında çalışırken ortaya çıkan hatalardır. Benim gerçekten hoşlanmadığım hatalardan biridir. Gerçekten başarılı bir şekilde çalışan yazılımın bir gecede web tarayıcı ya da işletim sistemine gelen güncelleme ile çalışmadığına defalarca kez tanık oldum. Bu tarz durumlarda elimine etmek zorunda kalacağınız sistemler olabilir. Müşteriniz ile tartışarak bu durumu netleştirmek ve ona göre geliştirme sürecine devam etmek mantıklı bir davranış şekli olacaktır.
Güvenlik Hataları (Security Defects)
Güvenlik hataları ya da açıklarıda diyebiliriz bir yazılım projesi içerisinde güvenlik saldırısına izin veren zayıflıklardır. Güvenlik testi yapılan projelerde en çok karşılaşılan güvenlik kusurları, şifreleme hataları SQL Injection, XSS açıkları, rol tabanlı erişimlerde yaşanan mantık hataları ve kimlik doğrulamalara ortaya çıkmaktadır. Bu tarz açıkları düşünerek kodlamay yapmak projelerinizi daha güvenli bir ortam haline dönüştürecektir.
Önemi Gereği Yazılımsal Hatalar (Software Defects by severity)
Genelde şirketler içerisinde hatanın sistem üzerinde ki teknik etkisine dayalı olarak hataları/kusurları önem sırasına göre sınıflandırılır ve bu önem sırasına göre müdahele edilir. Önem sıralaması ise;
Kritik Hatalar: Genellikle tüm projenin ya da bir proje içerisinde yer alan modülün tamamının işlevselliğini engelleyen hatalardır. İster production ortamında olsun ister development ortamında bu hatalar giderilmeden projenin ilerleyen modüllerinde geliştirme yapılamaz, ilerlenemez. Login olduktan sonra dashboard sayfasına gitmek yerine sunucu hatası almak buna örnek olarak gösterilebilir.
Yüksek Önem Dereceli Hatalar: Bir uygulamanın temel işlevi etkilenmiştir. Uygulama davranması gerektiğinden çok farklı bir şekilde davranıyordur. Aynı zamanda sistem çalışmaya devam eder fakat yanlış çalışır.
Orta Önem Dereceli Hatalar: Proje içerisinde yer alan belirli bir modül üzerinde akışı ve işleyişi bozmayan ama mümkün olan ilk fırsatta düzeltilmesi gereken hatalardır.
Düşük Önem Dereceli Hatalar: Projenin işleyişi ile kesinlikle ilgisi yoktur. Genellikle ara yüz üzerine müşteriyi rahatsız eden butonun konumu, rengi ya da son kullanıcıya verilecek olan bir mesajın konumu ile ilgili olabilir.
Öncelikleri Gereği Yazılımsal Hatalar (Software Defects by priority)
Genellikle bir hatanın önceliğini belirlemekte ki esas amaç o hatanın proje üzerinde ki ticarı etkinisi karakterize etmektir. Şirketlerde bir proje içerisinde yer alan testciler, iş analistleri ya da kalite sorumluları müşteriler ile girdikleri toplantılarda bunlara karar verirler ve en kısa sürede çözmeye çalışırlar. 4 ayrı alt başlıkta inceleriz.
Acil Hatalar: Genelde bildirildikten sonra ki 24 saat içerisinde düzeltilmesi gereken hatalardır. Kritik önem derecesine sahip olan hatalar bu kategori içerisinde de yer alabilir fakat bazı zamanlarda ilginç bir şekilde düşük önem derecesine sahip hatalarda bu kategoriye girebilir mesela müşterinizin firmasının ismi proje üzerine yanlış yazılmışsa zor bir şey değildir bu gerçi ama müşteriniz bunun en kısa süre içerisinde düzeltilmesi için size ateş püskürebilir. Ciddi bir teknik sorun değildir ama can sıkar. Yine de ciddi bir teknik sorun ile karşılaşıp saatlerce debug yapmaktansa bu tarz acil hatalar çok daha iyidir.
Yüksek Öncelikli Hatalar: Geliştirilen proje ilk defa gerçek hayatta kullanılacaksa yani minimum value product, türkçesi ile kullanılabilir en basit sürüm olacaksa bu tarz hatalar giderilmeden ürünleştirme söz konusu olamaz. Proje zaten canlı ortamda çalışan bir proje ise bu hata acil hatalardan sonra gelen ilk hatadır. Örnek verecek olursak, kullanıcı login ekranı üzerinde giriş bilgilerini doğru girmesine rağmen giriş yapamıyorsa ya da sayfa üzerinde bazı bilgileri belirli bir dosya formatında indirebilme yeteneğine sahipken bunu yapamıyorsa gibi örnekler vererek bunları çoğaltabiliriz.
Orta Öncelikli Hatalar: Mevcut sürüm içerisinde değil fakat bir sonra ki sürüm üzerinde düzeltilebilecek olan hatalardır. Uygulamanın doğru çalışması ama ara yüz üzerinde göstereceği bir verinin yanlış formatta göstermesi bu tarz hatalar arasında gösterilebilir.
Düşük Öncelikli Hatalar: Uygulamanın ürünleşme kritlerini etkilemeyen ama yine de ürünleşmeden önce düzeltilmesi beklenen hatalardır. Yazı tipi, hizalar, bazı ara yüz elementlerinin boyutu genel olarak kozmetik hatalar bu gruba dahil edilir.
Hataları Doğru Sınıflandırmak Neden Önemlidir?
Genellikle bu tarz sınıflandırma yapmayan ve doğaçlama çalışan şirketler hataları yanlış çalışanların üzerine atadıkları için çok vakit kaybettikten sonra müşterilerine karşı mahçup olmaktalar. Bunu bir alışkanlık haline getiren şirketler ise hatalarını ciddi anlamda çabuk düzeltmekte, test ve geliştirme sürecinin verimliliğini arttırmaktadırlar. Bu yazılıkta bu kadar. Okuduğunuz için şimdiden teşekkürler. Sonra ki yazılarda görüşmek üzere.