Yük Testi
- İngilizcesi
- Load Testing
- Okunuşu
- lod testing
Günlük kullanımda iki ad da yaygın.
Kısaca
Yük testi, bir sistemin beklenen trafik altında nasıl davrandığını ölçmek için aynı anda çok sayıda kullanıcıyı ya da isteği simüle eden performans testidir.
Yük testi nedir?
Yük testi, birçok kişi uygulamayı aynı anda kullandığında uygulamanın nasıl performans gösterdiğini kontrol eder. Bir yük testi aracı, HTTP istekleri gönderen binlerce simüle kullanıcı gibi trafik üretir ve yanıt sürelerini, throughput'u (saniyede işlenen istek sayısı) ve hata oranlarını ölçer. Amaç, gerçek kullanıcılar sistemin sınırlarını bulmadan önce sistemin performans hedeflerini karşıladığını doğrulamaktır.
Tipik bir yük testi sanal kullanıcıları kademeli olarak artırır, bir süre sabit bir trafik düzeyini korur ve ardından düşürür. Sonuçlar ortalamalara değil yüzdelik dilimlere (percentile) odaklanır: 300 ms'lik bir p95 gecikmesi, isteklerin %95'inin 300 ms içinde tamamlandığı anlamına gelir; bu da bir ortalamanın gizlediği yavaş uç değerleri ortaya çıkarır. Test sürerken ekipler, darboğazı, yani ilk tükenen kaynağı bulmak için CPU, bellek, veritabanı bağlantıları ve kuyruk uzunlukları gibi sunucu metriklerini izler.
Yeni bir köprüyü halka açmadan önce üzerinden ağır kamyonlar geçirerek test etmeye benzer. Ekipler yük testlerini büyük lansmanlardan veya indirim etkinliklerinden önce, büyük mimari değişikliklerden sonra ve otomatik ölçeklendirme (autoscaling) kurallarını ayarlarken çalıştırır. Testler üretime yakından benzeyen bir ortamda çalıştırılmalıdır, çünkü küçük bir dizüstü bilgisayar kurulumundan elde edilen sonuçlar gerçek davranışı nadiren öngörür.
Yük testi sıklıkla stres testiyle karıştırılır. Yük testi, beklediğiniz trafik düzeylerindeki davranışı kontrol eder; stres testi ise kırılma noktasını bulmak ve sistemin nasıl başarısız olup nasıl toparlandığını görmek için trafiği bu düzeylerin ötesine çıkarmaya devam eder. İlgili türler arasında ani bir trafik patlaması uygulayan spike testleri ve yavaş sorunları, örneğin bellek sızıntılarını ortaya çıkarmak için saatlerce normal yükü koruyan soak testleri vardır.
Önemli noktalar
- Yük testi, bir sisteme karşı çok sayıda eşzamanlı kullanıcıyı ya da isteği simüle eder.
- Temel ölçümler yanıt süresi yüzdelik dilimleri, throughput ve hata oranıdır.
- p95 ve p99 gibi yüzdelik dilimler, ortalamaların gizlediği yavaş uç değerleri ortaya çıkarır.
- Yük testi beklenen trafiği kontrol eder; stres testi kırılma noktasını bulmak için onu aşar.
- Üretime benzer bir ortamda ve yalnızca yük bindirmenize izin verilen sistemlerde test yapın.
Örnek
import time
import urllib.request
from concurrent.futures import ThreadPoolExecutor
URL = "http://localhost:8000/" # only load-test systems you own
def timed_request(_):
start = time.perf_counter()
urllib.request.urlopen(URL).read()
return time.perf_counter() - start
# 50 concurrent virtual users send 1,000 requests in total
with ThreadPoolExecutor(max_workers=50) as pool:
durations = sorted(pool.map(timed_request, range(1000)))
print(f"p95 latency: {durations[949] * 1000:.0f} ms") # the 950th fastest of 1,000Sık sorulan sorular
Yük testi ile stres testi arasındaki fark nedir?
Yük testi, normal bir yoğun gün gibi beklediğiniz trafik altında bir sistemin nasıl performans gösterdiğini ölçer. Stres testi ise kırılma noktasını bulmak ve sistemin düzgün biçimde başarısız olup toparlandığını kontrol etmek için trafiği bilerek bu düzeyin ötesine çıkarır.
p95 gecikmesi nedir?
p95 gecikmesi, isteklerin %95'inin daha hızlı yanıtlandığı yanıt süresidir. Ortalamadan daha kullanışlıdır, çünkü ortalamanın gizleme eğiliminde olduğu en yavaş kullanıcıların deneyimini gösterir.
Üretime karşı yük testi çalıştırabilir miyim?
Bazen mümkündür, ama risklidir; çünkü test trafiği gerçek kullanıcılarla rekabet eder ve kesintiye neden olabilir. Çoğu ekip üretime benzeyen bir staging ortamını test eder ve bir yük testi yalnızca size ait olan ya da test etme izniniz bulunan sistemleri hedef almalıdır.
İlgili sayfalar
- GecikmeAğlar, s. 9Gecikme, bir istek ile yanıtın başlaması arasında geçen süredir; genellikle milisaniyeyle ölçülür ve bir uygulamanın ne kadar hızlı hissettirdiğini belirler.
- ÖlçeklenebilirlikYazılım Mimarisi, s. 30Ölçeklenebilirlik, bir sistemin daha fazla kullanıcı ya da veri gibi artan iş yükünü, kaynak ekleyerek performansı düşmeden karşılayabilme yeteneğidir.
- Otomatik ÖlçeklemeDevOps ve Bulut, s. 37Otomatik ölçekleme, sunucu ya da konteyner gibi bilişim kaynaklarının talebe göre otomatik eklenip çıkarılmasıdır; performans sabit, maliyet düşük kalır.
- Yük DengeleyiciDevOps ve Bulut, s. 54Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
- Bant GenişliğiAğlar, s. 4Bant genişliği, bir ağ bağlantısının saniyede taşıyabileceği en yüksek veri miktarıdır; genellikle saniyedeki megabit ya da gigabit (Mbps, Gbps) ile ölçülür.
- Rate LimitingBackend ve API'ler, s. 37Rate limiting, istemcinin belli bir sürede yapabileceği istek sayısını sınırlayıp sunucuyu ya da API'yi kötüye kullanımdan ve aşırı yükten koruyan tekniktir.
- Performans TestiTest ve Kalite, s. 19Performans testi, bir sistemin beklenen ve aşırı yük altındaki hızını, kararlılığını ve ölçeklenebilirliğini yanıt sürelerinden kırılma noktasına kadar ölçer.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin