Performans Testi Nedir ve Uygulamalar İçin Neden Önemlidir?


Bu yazımızda yazılım testinde çok önemli bir yere sahip olan performans testinden, performans test tiplerinden ve performans testinin yazılımın sürdürülebilirliği ve güvenilirliği açısından öneminden bahsedeceğiz. 


Öncelikle yazılım testi nedir bunu hatırlamakla başlayalım. 


Yazılım testi, bir uygulamanın ya da sistemin güvenli, verimli, hatasız ve kullanıcı/ürün sahibi beklentilerine uygun olup olmadığını doğrulayan, yazılım yaşam döngüsünün bir parçasıdır. Yazılım testleri içerisinde fonksiyonel ya da fonksiyonel olmayan testler bulunur. Fonksiyonel testler, adından da anlaşılacağı üzere uygulamanın beklenen işlevleri doğru şekilde yerine getirip getirmediğini doğrulamak için yapılan; smoke, regresyon, entegrasyon vb gibi testlerdir. 

Fonksiyonel olmayan testler ise sistem ya da uygulamanın performans, güvenilirlik, ölçeklenebilirlik ve kullanılabilirlik gibi seviyelerini ölçmek için kullanılan testlerdir. Her iki test grubu için de farklı test araçları üzerinden doğrulamalar ya da ölçmeler sağlanabilir ve belirlenen/beklenen metrikler üzerinden değerlendirmeler yapılır.


Bugün odaklanacağımız konu ise performans testinin ne olduğu ve sistemler ya da uygulamalar için neden önemli olduğudur. Yazılım testinden ve test tiplerinden bahsettikten sonra şimdi de performans testinin ne olduğundan bahsedelim.

Performans testi, bir uygulamanın beklenen kullanıcı ya da işlem sayısı altında sağlıklı bir şekilde çalışmasını ve darboğaz olduğu noktaların belirlenmesini sağlayan fonksiyonel olmayan yazılım testleridir. Bu testler uygulamanın çeşitli yükler ve koşullar altında stabilliğini, hızlı işlem kapasitesini, sağlamlığını ve güvenirliğini doğrulamayı hedefler.


Performans testinde kritik metrikler; işlem hızları, sistemin çökmeden sürekli çalışabilirliği (stabilite) ve artan yük altında kesintisiz ve hızlı yanıt verebilme kapasitesi (responsiveness) olarak değerlendirilir.


Optimize edilmemiş bir uygulama, kullanıcıya çeşitli kullanım zorlukları yaşatabilir ve hatta belirli aşamalarda uygulamanın tamamen kullanılamamasına neden olabilir.


Günümüzde bir uygulama veya web sitesine girdiğimizde, işlemlerimizi en kısa sürede tamamlamak ve sorunlarımızı hızlıca çözmek isteriz. Eğer kullanılan sistem optimize edilmemişse ve kullanıcı gereksiz beklemelerle ya da çeşitli hatalarla karşılaşıyorsa, bu durum kullanıcıyı uygulamadan uzaklaştırır. Hatta çoğu zaman kullanıcılar, yaşadıkları sorunlar arttıkça alternatif uygulamalara yönelmeyi tercih eder. Bu açıdan bakıldığında performans testlerinin yapılmaması veya testlerin doğru şekilde planlanıp analiz edilmemesi; hem prestij kaybına hem de ciddi maddi zararlara yol açabilecek kritik bir risktir.


Örnek olması açısından şöyle düşünelim; bir alışveriş sitesi üzerinden ürün satın almak istiyoruz ve almak istediğimiz üründe büyük bir indirim var. Her bir ürünün belirli sayıda stoğu olduğundan haliyle stok tükenmeden sipariş vermemiz gerekiyor. Böyle bir durumda sipariş veremediğimizi ve sürekli sipariş ver butonuna tıkladığımızı ya da ürün detay sayfasına gitmeye çalıştığımızda sayfaların sürekli çöktüğünü veya erişim sürelerinin çok uzun olduğunu hayal edelim. 


Bu tür durumlar kullanıcılar için ciddi bir sorundur (çünkü kullanıcı sabrı sınırlı bir kaynaktır). Benzer bir indirim başka bir site veya markada da varsa, kullanıcıların alternatif platformu tercih etme ihtimali hızla artar. Özellikle yılın belirli dönemlerinde — örneğin yılbaşı, Kasım indirimleri gibi dönemlerde — pek çok markada büyük kampanyalar düzenlenir. Bu yoğunluk altında performans sorunları yaşanması; potansiyel müşteri kaybı, prestij ve güven kaybı ile sonuç olarak ciddi maddi zararlara yol açar.


Performans testleri tek sefer koşulan ve sonrasında koşulmayan testler de değildir. Uygulamalar sürekli değişebilen ya da güncellenebilen sistemler olduğundan her güncelleme sonrasında da performans testleri koşularak sistemin belirlenen performans seviyelerinde olduğu doğrulanır. Bu testler sayesinde hem uygulama üzerinde hızlı yüklenme süreleri, sayfaların çökmemesi ve stabil bir şekilde çalışması sağlanır hem de bugün ve gelecek için potansiyel performans sorunları tespit edilir.


Performans testlerinin etki ve öneminden bahsetmişken, bu testlerin kimler tarafından koşulabileceğinden de kısa bir bahsedelim.


Bildiğiniz üzere yazılım yaşam döngüsünde analiz, geliştirme ve test gibi adımlar bir bütünün parçalarıdır. Bu nedenle ürün geliştirilirken yazılım geliştiriciler, kod seviyesinde darboğaz noktalarını tespit etmek amacıyla performans testleri gerçekleştirebilir. Bu aşamada tespit edilen sorunlar erken dönemde çözülerek sonraki süreçlere geçişi engellenir. Aksi hâlde performans problemlerinin geliştirme sonrası aşamalarda ortaya çıkması; zaman, efor ve maliyet açısından çok daha büyük yükler doğurabilir.


Geliştiriciler dışında elbette yazılım test ekipleri tarafından da performans testleri koşularak sistem kapasitesinin beklendiği gibi yoğun işlem ve trafiğe sorunsuz bir şekilde dayanabildiği, donma, yavaşlık veya anormal bir davranış sergilemediği doğrulanır.


Bu ekipler dışında DevOps ekipleri de performans testleri gerçekleştirebilir ve çok nadir de olsa iş birimleri performans testi talep edebilir veya kendileri yapabilir.


Yazımızın sonuna doğru gelirken performans testinin önemi ve etkilerini kısaca özetleyelim. Ardından kullanılabilecek test araçlarından kısa bir bahsedelim. Bu performans test araçları nedir, nasıl kullanılır ve test yapılır v.b gibi detaylara daha sonraki yazılarımızda değineceğiz.


Performans testinin önemi ve etkileri:
  • Uygulamada oluşabilecek darboğaz noktalarını önceden tespit eder; böylece kullanıcılar uygulama içinde donma, gecikme veya benzeri performans sorunlarıyla karşılaşmaz.
  • Uygulamanın beklenen yük ve koşullar altında hızlı, stabil, güvenli ve verimli şekilde çalıştığını doğrular. Böylece kullanıcılar yoğun anlarda bile sorunsuz bir şekilde uygulamada aktif kalabilir ve işlemlerini kesintisiz olarak gerçekleştirebilir.
  • Gelecek için sistem kapasitesinin geliştirilmesine katkı sağlar.
  • Düzenli olarak çalıştırıldığında uygulama performansının yeni özellikler ya da güncellemeler sonrasında halen beklendiği seviyede olduğu ve yeni geliştirmelerin mevcut performans seviyelerini olumsuz etkilemediğinden emin olunur.
  • Marka veya kurum güvenirliğini ve prestijini korur.

Performans testlerinin koşulabileceği zamanlar:

  • Büyük paketler ya da önemli güncellemelerden önce,
  • Performansı etkileyebilecek yeni bir özellik eklendiğinde,
  • Canlı ortamı taklit eden bir test ortamında düzenli olarak,
  • Potansiyel performans sorunlarını belirlemek için geliştirmelerin erken aşamalarında,
  • Kullanıcı ya da trafik artışlarından önce koşulabilir.


Bu testlerin koşumu sağlanırken Apache Jmeter, Load Runner, Gatling, BlazeMeter, k6, LoadNinja, Locust, WebLoad ve New Relic gibi araçlar kullanılabilir. Bunlar dışında da pek çok performans test aracı bulunmaktadır ancak hepsini burada listelemek mümkün değil. İlerleyen yazılarımızda birkaç performans test aracından bahsedeceğiz.


Şu ana kadar performans testinin ne olduğundan, etkisinden, öneminden ve ne zaman koşulabileceği gibi konulardan bahsettik. Yazımızın daha fazla uzamaması adına performans test tiplerinin başlıklarından bahsederek yazımızı sonlandıralım. Sonraki yazımızda performans testlerinden bahsetmeye devam edeceğiz.


Performans test tipleri :

  • Yük Testi (Load Testing)
  • Stres Testi (Stress Testing)
  • Ani Yük Testi (Spike Testing)
  • Dayanıklılık Testi (Endurance / Soak Testing)
  • Hacim Testi (Volume Testing)
  • Ölçeklenebilirlik Testi (Scalability Testing)
PRFMSTSTA7F9K2P3QD

Erhan Eşkin

pi404 kurucu, Yazılım Test Uzmanı, Blogger

http://pi404.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir