Performans Testi
- İngilizcesi
- Performance Testing
- Okunuşu
- pırformıns testing
Kısaca
Performans 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.
Performans testi (performance testing) nedir?
Performans testi birkaç test türünü kapsayan bir şemsiye terimdir. Yük testi (load testing) beklenen trafik altındaki davranışı kontrol eder; stres testi bunun ötesine geçerek kırılma noktasını bulur; ani yük testi (spike testing), bir bilet satışının açılması gibi ani bir artış uygular; soak ya da dayanıklılık testi, bellek sızıntılarını ve yavaş bozulmayı ortaya çıkarmak için saatlerce sabit bir yük çalıştırır; ölçeklenebilirlik testi de kaynaklar eklendikçe performansın nasıl değiştiğini kontrol eder.
Temel ölçüler; genellikle ortalamalar yerine p95 ve p99 gibi yüzdelik dilimlerle raporlanan gecikme, saniyedeki istek sayısıyla throughput, hata oranı ve CPU, bellek ve veritabanı bağlantıları gibi kaynak kullanımıdır. "Saniyede 500 istekte p95 300 ms'nin altında" gibi net hedefler sonuçları geçti ya da kaldıya dönüştürür.
k6, JMeter, Gatling ve Locust gibi araçlar, gerçekçi yolculukları izleyen betiklerle çok sayıda kullanıcıyı simüle eder. Testler gerçekçi veri boyutlarıyla production'a benzeyen bir ortamda çalışmalı ve büyük değişikliklerden sonra, ideal olarak zamanlanmış bir hattın parçası olarak tekrarlanmalıdır; böylece gerilemeler kullanıcılar fark etmeden ortaya çıkar.
Sık yapılan bir yanlış, performans testinin yalnızca yayına çıkmadan hemen önce yapıldığını düşünmektir. Veritabanı tasarımının ölçeklenemediğini o zaman keşfetmek, bunu öğrenmenin en pahalı anıdır. Geliştirme sırasında yapılan küçük, düzenli performans kontrolleri, profilleme ve production izlemeyle birlikte sorunları henüz düzeltmesi ucuzken yakalar.
Önemli noktalar
- Performans testi yük altında hızı, kararlılığı ve ölçeklenebilirliği ölçer.
- Yük, stres, ani yük, dayanıklılık ve ölçeklenebilirlik testlerini kapsar.
- p95 ve p99 gibi yüzdelik dilimleri, throughput'u ve hata oranını izleyin.
- k6, JMeter, Gatling ve Locust yaygın araçlardır.
- Yalnızca yayından önce değil, production'a benzeyen bir ortamda düzenli olarak test edin.
Örnek
import http from "k6/http";
import { check, sleep } from "k6";
export const options = {
stages: [
{ duration: "1m", target: 200 }, // ramp up to 200 virtual users
{ duration: "5m", target: 200 }, // hold the load
{ duration: "1m", target: 0 }, // ramp down
],
thresholds: {
http_req_duration: ["p(95)<300"], // 95% of requests under 300 ms
http_req_failed: ["rate<0.01"], // fewer than 1% errors
},
};
export default function () {
const res = http.get("https://staging.example.com/api/products");
check(res, { "status is 200": (r) => r.status === 200 });
sleep(1);
}Sık sorulan sorular
Yük testi ile performans testi arasındaki fark nedir?
Performans testi şemsiye terimdir. Yük testi onun bir türüdür ve sistemi beklenen trafik miktarı altında kontrol eder. Stres, ani yük ve dayanıklılık testleri de diğer türleridir.
Neden ortalama yanıt süresi yerine yüzdelik dilimler kullanılır?
Ortalamalar yavaş istekleri gizler. 300 ms'lik bir p95, isteklerin %95'inin bundan hızlı olduğu demektir; bu da çoğu kullanıcının ne yaşadığını gösterir ve ortalamanın yumuşattığı yavaş kuyruğu ortaya çıkarır.
Performans testleri nerede çalışmalı?
Benzer donanım, yapılandırma ve veri hacimleriyle production'a olabildiğince yakın bir ortamda. Bir geliştiricinin dizüstü bilgisayarından gelen sonuçlar production davranışını nadiren öngörür.
İlgili sayfalar
- Yük TestiTest ve Kalite, s. 36Yü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.
- Stres TestiTest ve Kalite, s. 27Stres testi, kırılma noktasını bulmak ve düzgün biçimde başarısız olup toparlandığını doğrulamak için bir sistemi bilerek beklenen iş yükünün ötesine iter.
- 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.
- ThroughputAğlar, s. 30Throughput (verim), bir sistemin birim zamanda gerçekte işlediği veri ya da iş miktarıdır; ağda saniyedeki megabit, sunucuda saniyedeki istek sayısı gibi.
- Ö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.
- MetriklerDevOps ve Bulut, s. 33Metrikler, bir sistemden zamanla toplanan istek oranı, hata oranı ve CPU kullanımı gibi sayısal ölçümlerdir; panolar, uyarılar ve planlama için kullanılır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin