Junior
Yük testleri hakkında bana bilgi verin.
sobes.tech yapay zeka
AI'dan gelen yanıt
Yük testleri, uygulamanın (sistemin) farklı yükler altında performansını, stabilitesini ve ölçeklenebilirliğini belirlemeye yönelik bir test türüdür.
Yük testlerinin görevleri:
- Sistemin dayanabileceği azami yükü belirlemek.
- Darbo noktalarını (bottleneck) tespit etmek.
- Belirli bir yük altında sistemin yanıt süresini değerlendirmek.
- Uzun vadeli yük altında sistemin stabilitesini kontrol etmek.
- Sistem ölçeklenebilirliğini test etmek.
Yük testleri türleri:
- Yük Testi (Load Testing): Sistemin beklenen (normal) yük altında davranışını kontrol etmek.
- Stres Testi (Stress Testing): Sistemi, normal sınırları aşan yük altında, arızalara kadar test etmek. Amaç, dayanıklılık sınırını belirlemektir.
- Dayanıklılık / Doygunluk Testi (Endurance/Soak Testing): Sistem, orta veya yüksek seviyedeki yük altında uzun süre çalıştırılarak, bellek sızıntıları ve zamanla performans düşüşü tespiti.
- Ani Yük Artışı Testi (Spike Testing): Sistem, ani ve büyük yük artışlarına karşı davranışını test etmek.
- Ölçeklenebilirlik Testi (Scalability Testing): Sistem, yatay veya dikey kaynak ölçeklendirmeleri ile artan yükü kaldırma kapasitesini değerlendirmek.
- Hacim Testi (Volume Testing): Veri tabanları veya diğer depolama alanlarındaki veri hacmi arttıkça sistem davranışını test etmek.
Yük testi aşamaları:
- Hedeflerin belirlenmesi: Yanıt süresi, geçiş kapasitesi, hata sayısı gibi metriklerin ve başarı kriterlerinin net tanımlanması.
- Senaryoların planlanması ve tasarımı: Kullanıcı senaryolarının analizi, yük profili (sanal kullanıcı sayısı, istek yoğunluğu) belirlenmesi.
- Test scriptlerinin geliştirilmesi: Yük testi araçları kullanılarak kullanıcı hareketlerini taklit eden scriptlerin yazılması.
- Test ortamının hazırlanması: Çalışma ortamını taklit eden test ortamının kurulması.
- Testlerin yürütülmesi: Farklı yüklerle testlerin başlatılması.
- İzleme ve veri toplama: Sistem, sunucu ve veritabanı performans metriklerinin toplanması.
- Sonuçların analizi ve raporlama: Elde edilen sonuçların hedef metriklerle karşılaştırılması, sorunların tespiti ve rapor hazırlanması.
Yük testi araçları:
- JMeter
- LoadRunner
- Gatling
- k6
- Locust
Basit bir JMeter script örneği (HTTP İsteği):
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.2">
<hashTree>
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Örnek Yük Testi">
<hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="İplik Grubu">
<intProp name="ThreadGroup.num_threads">100</intProp>
<intProp name="ThreadGroup.ramp_time">10</intProp>
<longProp name="ThreadGroup.duration">60</longProp>
<boolProp name="ThreadGroup.scheduler">true</boolProp>
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP İsteği Örneği">
<stringProp name="HTTPSampler.domain">example.com</stringProp>
<stringProp name="HTTPSampler.path">/</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
<boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp>
<boolProp name="HTTPSampler.embedded_url_report">true</boolProp>
<boolProp name="HTTPSampler.connect_timeout"></boolProp>
<boolProp name="HTTPSampler.response_timeout"></boolProp>
<stringProp name="HTTPSampler.protocol">https</stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.comment"></stringProp>
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.image_parser">true</stringProp>
<stringProp name="HTTPSampler.concurrentDwn">Both</stringProp>
<stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
<stringProp name="HTTPSampler.implementation_status">OK</stringProp>
<boolProp name="HTTPSampler.postBodyRaw">false</boolProp>
<listProp name="HTTPSampler.HTTP_HEADERS"></listProp>
</HTTPSamplerProxy>
<hashTree/>
</hashTree>
</hashTree>
</hashTree>
</TestPlan>
</hashTree>
</jmeterTestPlan>
Yük testi sırasında toplanan metrikler:
- Yanıt süresi
- Transfer kapasitesi
- Hata sayısı / saniye
- İstek sayısı / saniye
- CPU kullanımı
- Bellek kullanımı
- Disk I/O aktivitesi
- Ağ aktivitesi
- Veritabanı metrikleri
Yük testleri, sistemin yüksek yük altında üretimdeki arızalarını önlemeye ve son kullanıcılar için kabul edilebilir bir kalite seviyesini sağlamaya yardımcı olur.