Image 185
Yazılımın Kalitesi ve Güvenliği Test Mühendislerinin Elinden Geçiyor

Merhabalar, bu yazımda test alanında bazı başlıklar üzerinden genel bilgilere değineceğim. Değineceğimiz başlıkları özetlemek gerekirse “test nedir, yazılım hatalarında tarihi örnekler, test mühendislerinin sorumlulukları, özellikleri ve yetenekleri” şeklinde başlıklar yer alacak. Sizlere şimdiden keyifli okumalar dilerim. ☺️

Test Nedir?

Test, yazılım yaşam döngüsünün adımlarından biridir. Testin sözlük anlamına baktığımızda “Bir kimsenin, bir topluluğun doğal veya sonradan kazanılmış yeteneklerini, bilgi ve becerilerini ölçmeye yarayan sınama.” (TDK) şeklindedir. Yazılımda teste odaklandığımızda ise bu tanımı “Ürünün ilgili iş gereksinimlerini karşılayıp karşılamadığını ve amaca uygunluğunu kontrol eden süreçtir.” diyebiliriz. 

Tanımlarına baktığımızda sürecin önemli bir parçası olarak görünse bile sektörde bakış açısı çoğunlukla böyle olmamakta ve birçok test mühendisi iş hayatında “Test et geç, test için iki saat yeter” gibi cümlelerle karşılaşmaktadır. Sanıldığının aksine test bu kadar kısa ve kolay bir iş değildir. Bizlerin test ederken amacı ürün kullanıcı ile buluştuğunda ya da hayata geçtiğinde oluşabilecek riskleri en az seviyeye indirmektir. Zira doğru çalışmayan bir ürün hayata geçtiğinde bu durum şirketlere para, zaman ve itibar kaybı gibi sonuçlarla geri dönüş yapabilir. Tarihte yaşanmış ve maliyeti yüksek birkaç hata örneğinden bahsedelim… 

İngiltere’de Hava Trafik Kontrol Sistemi Arızası 

İngiltere’de hava trafik sisteminde meydana gelen yazılım kaynaklı bir problem sebebiyle, 28 Ağustos 2023 tarihinde sistem devre dışı kalmış ve 2000’den fazla uçuş iptal edilmek veya ertelenmek durumunda kalmıştır.  Hatanın uçuş veri işleme sisteminde meydana geldiği söylenmektedir. Hata sonucunda ülke çapında tüm uçuşlar iptal edilirken etkisi dünya çapındaki İngiltere üzerinden aktarma yapacak tüm yolcuları mağdur etmiştir. [1] 

Toyota Prius  

Toyota, 2014 yılında Prius Hybrid modeli aracını yazılım hatası gerekçesiyle geri çağırdı. Yazılım hatasının araçtaki transistörlere zarar verebileceğini belirttikleri açıklamada bunun sonucunda uyarı lambalarının bozulabileceğini, tahrik gücünün azalabileceğini ve seyir halindeyken güç kaybıyla aracı durmaya zorlayarak stop edebileceğini belirtti.[2] 

Mars Climate Orbiter  

1997’de fırlatılan Mars Orbiter, 1999’da kayboldu. Kazanın bir yazılımda İngiliz ölçü birimlerinin metrik sisteme yanlış çevrilmesinden kaynaklandığı belirtildi. NASA ekibi hesaplarında İngiliz ölçü birimini (inç, feet), projeye katılan diğer ekipse metrik (mm, cm, m) sistemi kullanmıştı. Uydu yörüngeye sabitlenmeye çalışırken Mars’a olması gerekenden fazla yaklaşması sebebiyle Mars’ın atmosferinde yok olduğu düşünülüyor.[2] 

Ariane 5 Flight 501 

1996 yılında Ariane 4 roketinin çalışma kodu Ariane 5’te yeniden kullanıldı fakat roket fırlatıldıktan 40 saniye sonra parçalandı. Parçalanma sebebinin ise Ariane 4 geliştirilirken yapılan bir yazılım hatası olduğu anlaşıldı. Hata 64 bitlik ondalıklı sayıyı 16 bitllik tam sayıya çevrilirken oluşmuştu. Ariane 4’te bulunan motora göre daha hızlı olan Ariane 5’in motoru daha büyük sayılar oluşturdu ve sayısal taşmaya sebep oldu. Bu durum Flight 501 in destek bilgisayarının çökmesine ve çöken bilgisayar sonucu roketin ana işlemcisi motorlara fazla güç yüklemesine yol açtı. Ariane 5 in infilak oluşu tarihteki en pahalıya mal olan yazılım hatalarından biri oldu.[3] 

Patriot Füze Bataryası 

25 Şubat 1991 tarihinde Körfez Savaşı esnasında Irak tarafından ateşlenen Scud füzesi vurulamamış ve Scud füzesinin askeri barakalara isabet etmesi sonucunda çok sayıda yaralanmaya ve ölüme sebep olmuştur. Yapılan incelemeler sonrasında, sistemdeki bir yazılımda yuvarlama hatasından dolayı füzenin imha edilemediği ortaya çıkmıştır.[4]

Yukarıda bahsettiğimiz örnekler, testin kritik bir rol oynadığına dair çarpıcı kanıtlar sunuyor. Ancak her ne kadar testler gerçek ortama yakın koşullarda yapılıyor olsa da bir ürünü %100 hata içermeyecek şekilde test etmek imkansızdır. Her üründe keşfedilmemiş hatalar bulunabilir. Bu noktada biz test mühendislerinin en önemli görevi, bu gizli tehlikeleri olabildiğince erken tespit etmek ve bu hataların takibini sağlamaktır. Erken aşamalarda fark edilen hataların düzeltilmesi, şirketlere sadece zaman ve maliyet tasarrufu sağlamakla kalmaz, aynı zamanda ölümcül sonuçlar doğurabilecek hataların önüne geçilmesine de yardımcı olur. Bu nedenle, yazılım testi, ürünün güvenliği ve başarısı için kritik bir öneme sahiptir. 

Peki ama kim bu test mühendisleri, neler yaparlar kısaca değinelim.

Test Mühendislerinin Sorumlulukları ve Süreçleri

  • Testin planlanması, tasarımı, gerçekleştirilmesi ve raporlanmasına kadar olan tüm süreçleri takip eder.  
  • Ürün ile ilgili dokümanları okuyup, toplantılara katılım sağlayarak iş gereksinimlerini anlar.  
  • Elde ettiği bilgilerle test senaryosunu oluşturur.  
  • Test senaryolarına göre beklenen sonuçları analiz eder.  
  • Ürün teste açıldığında iş gereksinimleri ışığında fonksiyonel gereksinimlerini kontrol eder.  
  • Ürünü sadece pozitif senaryo ile değil en olumsuz senaryolarla test etmeye çalışırlar.  
  • Test süreçlerinde fark edilen hataların raporlanmasını sağlar.  
  • Raporladığı hataların takibinde olur.  
  • Hata düzeltmeleri sonrasında test süreçlerini yeniden ilerletir.  
  • Ürünün fonksiyonel isterleri karşıladığından emin olduktan sonra fonksiyonel olmayan gereksinimlerini kontrol ederek raporlar.   
  • Kullanıcı dostu ve kaliteli bir ürün ortaya koymayı hedefler.  
  • Ekibin ihtiyacı doğrultusunda otomasyon test süreçlerini oluşturur. [5] 

İyi Bir Test Mühendisinin Özellikleri ve Yetenekleri 

  • Meraklı ve şüpheci kişilerdir  
  • Detaylara önem verirler  
  • İletişim becerileri gelişmiştir  
  • Yapıcı iletişim kurarlar 
  • İkna kabiliyeti yüksek kişilerdir  
  • Mantıksal düşünceye sahiptirler, küçük parçadan sonucu öngörebilirler  
  • Odaklanma ve inceleme yetenekleri yüksektir  
  • Kaliteden ödün vermezler  
  • Empati yeteneği gelişmiştir, olaylara kullanıcı gibi bakabilirler  
  • Planlama yetenekleri gelişmiştir  
  • Asla %100 kapsam sözü vermezler  
  • Riskleri belirleyebilir ve yönetebilirler  
  • Test esnasında olumsuza odaklanarak detaylı testi hedeflerler [6] 

Kaynakça

  1. https://www.emniyetkritikyazilim.com/post/uk-air-traffic-control-incident  
  1. https://www.fizikist.com/unutulmayan-yazilim-hatalari-ve-sonuclari 
  1. https://acikbilim.yok.gov.tr/bitstream/handle/20.500.12812/89079/yokAcikBilim_10062556.pdf?sequence=-1&isAllowed=y 
  1. https://www.emniyetkritikyazilim.com/post/patriotmissilefailure 
  1. https://www.teknorun.net/yazilim-test-muhendisi-nedir-gorevleri-nelerdir/ 
  1. https://www.softwaretestinghelp.com/software-tester/ 

Kapak görsel: https://www.monkeyuser.com/2018/the-struggle/ 

Ara görsel: https://www.netsolutions.com/insights/wp-content/uploads/2022/07/top-25-software-testing-types.webp 

Aleyna Kanber
Mart 02 , 2024
Diğer Blog İçerikleri