Performans, Yük ve Stres Testleri
Merhaba arkadaşlar;
Bu yazıda başlığa konu olan Performans, Yük ve Stres testlerinden tam olarak ne anlam çıkarılması gerektiğinden bahsetmek istiyorum. Bu üç test ismi başlangıçta sizlere aynıymış gibi bir his verebilir, fakat bu kavramların hepsi birbirinden farklı ya da en azından amaçları farklı bulunmaktadır.
Performans Testi
Performans testi kavramı elbette sadece yazılım uygulamaları için geçerli bir kavram değil. Bir endüstriyel sistemin de performans testi olabilir. Fakat biz burada elbette yazılım uygulamalarına ait olandan bahsedeceğiz.
Yazılım uygulamalarında performans testlerinin yapılmasındaki amaç, belirlenen kısıtlar ölçüsünde uygulanan yük altında, sistemde ortaya çıkabilecek darboğazları (bottleneck) ortaya çıkarmaktır. Burada sistem kelimesinin altını çizmek istiyorum. Performans testlerinde darboğazlar; Uygulama seviyesinde olabileceği gibi; Veritabanı, Network ya da İşletim sistemi gibi önemli ortamlarda da gerçekleşebilir.
Performans testlerinin güvenilir sayılabilmesi için test uygulanacak ortamın stabil halde olması gerekmektedir. Tutarsız bir ortamda yapılacak performans testlerinin sonuçları da tutarsız olacaktır.
Performans testlerinde amaç sistemin bir açığını bulmak değildir. Asıl amaç sisteme yapılan girdilerden alınan dönütlerle, arzulanan/olması gereken sonuçların uygunluğunu tespit etmektir.
Bir web uygulaması içi uygulanan örnek performans testi senaryosu şu olabilir;
Aynı anda 250 eşzamanlı Http isteği yapıldığında, sistem 5 saniyede tüm istekleri karşılamalı. Bu senaryo başarılı mı? Başarılıysa bir üst senaryoya geçilebilir. Aynı anda 500 eşzamanlı kullanıcı erişimini sağla ve 5 kere tekrarla! Hedef tamamlanma süresi 10 saniyenin altı. Hedef başarılı mı? Başarılıysa test seviyesi artırılarak bu süreç devam edebilir. Ya da sistem aranılan kısıtlarda yeterli performans’ ı gösteriyor denebilir. Beklenilen sonuçlar dönüt alınan sonuçlarla uyuşmuyorsa, bu aşamada bunun sebepleri araştırılmalıdır. Örnek olarak en başta; Profiling yaparak uygulamanın tıkanıklık gösteren noktaları tespit edilebilir. [Bkz. En iyi Java Profiler Ürünleri]. Elde edilen sonuçlara göre uygulam seviyesinde bir kusurla karşılaşılmıyorsa, diğer seviyelerde sorunlar aranabilir.
JMeter kadar zengin olmasada Grinder, ab, httperf ve siege gibi komut dizini araçlarıyla da bu testler yönetilebilir.
Yük Testi
Yük testi aslında Performans testlerini bir türevi olarak kabul edilebilir. Burada temel olarak fark; Yük testlerinin uygulamaya dönük bir açık, bug gibi normal çalışma şartlarında ortaya çıkmayan, ama ağır yüklenmeler karşısında ortaya çıkabilecek sonuçlar oluşturmaktadır.
Stress Testi
Stress testlerinde ise amaç Yük ve Performans testlerinden biraz farklı. Buradaki amaç adı üzere sistemi baskı altına alarak strese sokmak 🙂