Performans Testi Nedir, Nasıl Yapılır?

Ismail Ozturk
Fiba Tech Lab
Published in
5 min readSep 16, 2021

Yazılımcının işi sadece uygulamayı geliştirmeyi tamamlayıp bitmeyebilir. Ortaya çıkacak sorunları ön görüp uygulamasını daha kararlı hale getirmek için yeni çözümler arayabilir. Bazen, fonksiyonların belirli bir yük altında nasıl davrandığını görmek için performans testi yapmaları istenebilir. Bazense büyük bir uygulamanın ufak bir kullanıcı davranışında nasıl tepkiler vereceğini ölçmek için test yapabiliriz. Bu durumda öncelikle cevap vermemiz gereken bir soru var.

Performans Testi Nedir?

Performans testi, uygulamanın/sistemin belirli bir yük altında nasıl performans gösterdiğine odaklanan bir yazılım testi biçimidir. Performans testi, organizasyonlara oluşabilecek darboğazları ortadan kaldırmak için ihtiyaç duydukları bilgileri vermelidir.

Performans testi, bir yazılımın veya uygulamanın kullanıcı trafiğini ne kadar iyi idare edebileceğini görmenizi sağlar ve kullanılabilirliğini, verimliliğini, ölçeklenebilirliğini, güvenilirliğini ve yanıt verebilirliğini belirlemek için yazılım geliştirmedeki en önemli adımlardan biridir.

Performans testi, bir yazılım uygulamasının tasarımı ve mimarisindeki performans sorunlarını belirlemeye ve ele almaya odaklanan performans mühendisliğinin bir alt kümesidir.

Performans Testi Neden Gereklidir?

Günümüzde hız olmazsa olmaz duruma gelmiştir. Alışveriş yaparken, para gönderirken veya önemli bir sınav sonucuna hızlı, anında ulaşmak istiyoruz. Sistemsel sorunlar, yavaşlıklar bizi kullandığımız ürünlerden hemen soğutmaya, uzaklaştırmaya başlıyor ve yerine hemen bir başka ürün almayı düşünüyoruz. Bu tür sorunlar firmalar için hem itibar kaybı hem de maddi kayıplara yol açmaktadır. Tüm bunlara baktığımızda aslında çoğu zaman bu sadece bir milisaniye meselesi olduğunu görmekteyiz. Örnek verecek olursak Google, arama sayfası oluşturma süresinde fazladan 500 milisaniyenin trafiği %20 oranında arttırdığını bulmuştur.(1)

Performans Testinin Amacı Nedir?

Bu soruya genellikle hata/sorun bulmaktır diye cevap verildiğine şahit olmuşuzdur fakat burada büyük yanılgı vardır. Bu soruya uzun uzun düşünüp heykel olacak düzeye gelmeden hızlıca cevap vermeye çalışalım.

Performans testinin amacı, hataları bulmak değil, ancak performans darboğazlarını ortadan kaldırmak ve sistemin beklenen sürekli yükü sürdürüp sürdüremeyeceğini kontrol etmektir.

Performans Testi Tipleri

Performans testi nedir, neden gereklidir, amacı nedir gibi sorulara yanıt bulduktan sonra sıradaki soru bu testlerin hangi tipleri olduğunun cevaplarını öğrenmeye geçebiliriz.

Pek çok farklı performans testi türü vardır ve aşağıda en yaygın beş türü ele alacağız.

1- Yük Testi (En çok kabul gören)

Uygulamanın beklenen kullanıcı yükleri altında gerçekleştirme yeteneğini kontrol eder. Amaç, yazılım uygulaması yayınlanmadan önce performans darboğazlarını tespit etmektir.

2- Stres Testi

Yüksek trafik veya veri işlemeyi nasıl işlediğini görmek için bir uygulamayı aşırı iş yükleri altında test etmeyi içerir. Amaç, bir uygulamanın kırılma noktasını belirlemektir.

3- Spike Testi

Sistemin ani yüksek kullanımının benzersiz senaryosunu simüle eder.

4- Dayanıklılık Testi

Sistemin sürekli beklenen yükü ne kadar devam ettirebileceğini belirlemek için kullanılır.

5- Baseline Testi

Bu testin amacı tepki sürelerinin bozulmaya başladığı yükü belirlemektir.

Performans testi ile ilgili çoğu soruya yanıt bulduktan sonra sırada ne test edilecek / aday kimliği nasıl belirlenecek bunlara yanıt arayalım.

Performans testi projeleri, Proaktif ve Reaktif performans testleri olmak üzere bu iki kategoriden birinde kategorize edilebilir. Bir organizasyonun yürüttüğü reaktif performans testi projelerinin miktarı, performans olgunluğunun ve bir Performans CoE kurma isteğindeki seviyenin göstergesidir. Proaktif performans testindeki yaklaşımı ne kadar sistematik olursa, reaktif performans testleri için o kadar az ihtiyaç olması beklenir. Amaç, beklenmedik davranışları en aza indirgemek için bir uygulamanın dağıtımından önce etkin bir şekilde devreye girmektir.

Proaktif Performans Testleri

Hepsi değilse de büyük çoğunluğu performans testleri ideal olarak proaktif testler olarak yürütülmelidir.

Reaktif Performans Testleri

Reaktif Performans Testleri, esasen, üretimde beklenmedik bir uygulama çökmesinin veya önemli performans sorunlarının gözlemlendiği bir süreçle mücadele durumudur. Operasyon personeli veya uygulama sahibi, altta yatan nedenleri incelemek ve çözmek amacıyla performans testleri başlatacaktır. Bu testler tipik olarak yüksek profilli ve çok acil olup, Kıdemli Performans Mühendislerinin katılımını ve test programındaki olası değişiklikleri gerektirir.

Performans Testine alınacak uygulamalar için sorular;

Bir uygulama/sistemi performans testine almaya karar verdikten sonra sorulması gereken sorulara bir göz atalım. Bu sorular hem uygulamayı/sistemi anlamak için hem de mimariye hakim olmak için bize bir pencere oluşturacaktır.

1 — Uygulama işlevsel olarak stabilite açısından test edildi mi?

2 — Performans testi için dikkate alınması gereken iş senaryoları nelerdir?

3 — Uygulamada kullanıcı eylemleri arasındaki ortalama bekleme süreleri nedir? (sayfa gezinmeleri 5–10 sn, form doldurma 20–25 sn vb)

4 — Simüle edilmesi gereken belirli bir ağ koşulları var mı? (Belirli bir bant aralığı veya paket kaybı)

5 — Ortalama sayfa yanıt süresi nedir?(SLA?)

6 — Her senaryo için saniyede kaç işlem (min / maks / ortalama), bir kullanıcı ziyaretinin ortalama süresi nedir?

7 — Birden fazla kullanıcı oturumu aynı IP adresini kullanabilir ve yine de oturum açıp siteyi kullanabilir mi?

8 — Performans çalıştırmasına başlamadan önce veritabanındaki maksimum (işlemsel) kayıt sayısı nedir?

9 — Uygulamada kullanılan farklı teknolojiler nelerdir?

10 — Özel koordinasyon gerektiren başka bileşenler veya uygulamalar var mı?(Entegrasyon noktaları, dışa açılan servisler)

11 — Performans testi ortamındaki tüm sunucular izleme için APM ile yapılandırılmış mı?

Yukarıdaki sorulara cevap aldıktan sonra iyi tanımlanmış Giriş ve Çıkış kriterleri, herhangi bir projenin başarısı için bir zorunluluk oluşturmaktadır. Ne zaman başlayıp ne zaman bitirileceğini bilmemek, yetersiz ve dolayısıyla başarısız bir test stratejisinin işaretidir. Bu kriterler, test sürecinin herhangi bir aşamasında değerli test süresinin boşa gitmesini önleyecektir.(2)

Giriş Kriterleri

- Sistem kararlı olmalıdır.

- Performans Test araçları mevcut ve yapılandırılmış olmalıdır.

- İş yükü profili belirlenmiştir.

- Test Ortamı — tüm bilinen sorunların çözüldüğü, canlı ortamın teknik özelliklerine mümkün olduğunca yakın(pre-live)

- Test Verileri — doğru seviyelerde istenen test verisi hacimleri ortam veritabanlarına yüklenir. Veri maskeleme tamamlanır(gerekirse)

- Firewall, connectivity, database gibi sorunların çözümlenmiş olmalı

Çalıştırılma Kriterleri

Performans testinin önerilen yürütme sayısı:

- SRS(Software requirements specification) hazırlık aşamasında uygulama sayısının tanımlanması gerekir.

- Proje sırasında herhangi bir değişiklik talebi, değişiklik talebi olarak kabul edilir.

- Ortalama iş yükünü simüle eden iki tutarlı yük testi çalıştırılması

- En yüksek iş yükünü simüle eden iki tutarlı yük testi çalıştırılması

- Beklenen en yüksek iş yükünün iki katında bir stres testi çalıştırılması

- Ortalama iş yükünü simüle eden on iki saatlik bir dayanıklılık testi çalıştırılması

Çıkış Kriterleri

- Performans Test Durumlarının% 100'ü gerçekleştirilmiştir.

- Test aracı ve izleme aracı ile istatistikler toplanmıştır.

- Talep sahibi tarafından tanımlanan diğer kriterler karşılanmıştır.

Bir sonraki yazımızda performans testinde kullanılan ürünler ve en yaygın olan open source JMeter avantajları, dezavantajları, kullanımını anlatmaya çalışacağız.

İsmail Öztürk,

Fibabanka A.Ş, Bilgi Teknolojileri, Çevik Geliştirme ve Teslimat Uzmanlık Merkezi

Kaynaklar:

(1)https://www.gartner.com/

https://www.microfocus.com/en-us/what-is/performance-testing

(2)https://jmeter.apache.org/

--

--