JMeter, bir tarayıcı ile yetkilendirilmiş hedef uygulama arasında yerel bir kayıt proxy'si görevi görerek HTTP İstek örnekleri oluşturabilir. Mevcut sürümler bu bileşene HTTP(S) Test Komut Dosyası Kaydedici adını vermektedir . Bu bileşen, bir tarayıcı yolculuğunu Kayıt Denetleyicisine kaydeder; ardından komut dosyası temizlenmeli, ilişkilendirilmeli, doğrulanmalı ve protokol düzeyinde bir test olarak yürütülmelidir.
JMeter HTTP Proxy Sunucusu nedir?
Kayıt cihazı genellikle yerel bir bağlantı noktasından dinleme yapar. 8888Bir tarayıcı, bu proxy'ye HTTP ve HTTPS istekleri gönderir ve JMeter, eşleşen trafiği seçilen bir denetleyici altında örnekleyicilere dönüştürür. Tekrar oynatma sırasında, JMeter istekleri doğrudan gönderir; her sanal kullanıcı için bir tarayıcı başlatmaz.
Senaryoyu elle yazmak yerine neden kayıt altına almalıyız?
- Gerçekçi istek sırasını, yönlendirmeleri, formları ve arka plan API'lerini yakalar.
- Gözden kaçması kolay olan XHR veya fetch çağrılarını ortaya çıkarır.
- Karmaşık kullanıcı yolculuğu için hızlı bir temel oluşturur.
- Başlık ve parametrelerdeki yazım hatalarını azaltır.
Küçük ve belgelenmiş bir API için manuel yapılandırma daha temiz bir yöntemdir. Tarayıcı ağ davranışının henüz anlaşılmadığı durumlarda kayıt tutmak faydalıdır. Terminoloji için proxy türleri kılavuzumuza bakın.
JMeter 5.x'te Komut Dosyası Nasıl Kaydedilir?
- Komut dosyası oluşturmak için JMeter'ı grafik arayüzü modunda başlatın.
- Test Planına bir İş Parçacığı Grubu ekleyin.
- Thread Grubu altına bir Kayıt Denetleyicisi ekleyin.
- Gerektiği yerlere HTTP İstek Varsayılanlarını ve HTTP Çerez Yöneticisini ekleyin.
- HTTP(S) Test Komut Dosyası Kaydedicisini ekleyin ve hedef olarak Kayıt Denetleyicisini seçin.
- İlgisiz trafiği sınırlamak için dahil etme/hariç tutma kalıplarını kullanın.
Resmi Apache JMeter kayıt kılavuzu, sürüme özel yetkili referans kaynağıdır.
Adım 1) HTTP Proxy sunucusunun ayarlanması
8888Hedef kontrol cihazını ayarlayın ve tıklayın. Ana Sayfa.Test tarayıcısını HTTP ve HTTPS proxy sunucularıyla yapılandırın. 127.0.0.1 ve aynı bağlantı noktası. Tarayıcı başka bir sanal makinede veya konteynerde çalışıyorsa, localhost o ortamı ifade eder; bunun yerine onaylanmış, erişilebilir bir özel adres kullanın.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
İlk aşamada çok agresif filtreleme yapmayın çünkü bir uygulama API'si başka bir alt alan adı kullanıyor olabilir. Bir kez kaydedin, sunucuları inceleyin, ardından kalıpları iyileştirin.
Adım 2) Etkinliğinizi kaydedin
- Kaydediciyi başlatın ve geçici sertifikasına yalnızca izole edilmiş test tarayıcısında güvenin.
- Yetkilendirilmiş test ortamını açın.
- İnsan hızında, kusursuz bir yolculuk gerçekleştirin.
- Son işlem gerçekleştikten hemen sonra kaydı durdurun.
- Tarayıcının normal proxy ayarlarını geri yükleyin.
Örnekleyicileri iş eylemine göre yeniden adlandırın ve işlem denetleyicileri altında ilgili istekleri gruplandırın. Kapsam dahilinde açıkça belirtilmedikçe analitik verileri, reklamları, tarayıcı güncellemelerini, sohbet widget'larını ve yinelenen statik kaynakları kaldırın.
Her bir örnekleyiciyi gizli bilgiler açısından inceleyin. Parolalar korumalı çalışma zamanı verilerinden gelmeli, belirteçlerin değiştirilmesi ise ilişkilendirme gerektirir.
Adım 3) Test Planınızı Çalıştırın
Yük eklemeden önce bir kullanıcıyı ve bir yinelemeyi doğrulayın. Geçici olarak Sonuç Ağacını Görüntüle'yi kullanın, yönlendirmeleri ve yanıt gövdelerini kontrol edin ve beklenen iş sonucu için doğrulamalar ekleyin. Yalnızca HTTP 200, oturum açma veya ödeme işleminin başarılı olduğunu kanıtlamaz.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Hata ayıklama işlemi bittikten sonra, yoğun dinleyicileri kaldırın ve grafik arayüzü olmayan işlemi çalıştırın:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
Rapor dizini yeni veya boş olmalıdır. Yükü kademeli olarak artırın ve hedef sistemi ve JMeter'ı izleyin.
Adım 4) Test sonucunuzu kaydedin
Yeniden kullanılabilir planı saklayın .jmx Dosyayı oluşturun ve oluşturulan verileri ayrı tutun:
- JMX: Örnekleyiciler, kontrolcüler, doğrulamalar, zamanlayıcılar, değişkenler ve yapılandırma.
- JTL: Analiz için ham örnek sonuçları.
- HTML kontrol paneli: Yüzdelikler, verimlilik, hatalar ve aktif iş parçacıkları.
- Sunucu ölçümleri: CPU, bellek, veritabanı, kuyruk ve hizmet telemetrisi.
Planı gizli olmayan özellikler ve test verileriyle sürümlendirin. JMeter ve Java sürümlerini, hedef derlemeyi, ortamı, kullanıcı sayısını, artış süresini ve süreyi kaydedin.
HTTPS Trafiğinin ve Sertifikalarının Kaydedilmesi
HTTPS için, JMeter kayıt işlemi başladığında geçici bir sertifika yetkilisi oluşturur. Bunu yalnızca özel test tarayıcısına aktarın, yetkilendirilmiş siteyi kaydedin ve ardından kaldırın.
- HTTP(S) Test Komut Dosyası Kaydedicisini başlatın.
- Oluşturulan ApacheJMeterTemporaryRootCA sertifikasını bulun.
- İzole edilmiş profilde güvenilir bir yetkili olarak içe aktarın.
- Onaylanmış HTTPS yolculuğunu kaydedin.
- İşlem bittiğinde sertifikayı çıkarın.
Sertifika sabitleme, karşılıklı TLS, yönetilen tarayıcılar, mobil uygulamalar ve yeni taşıma protokolleri, müdahaleyi engelleyebilir. Üretim güvenliği kontrollerini zayıflatmayın. Bir test ortamı sürümü, API spesifikasyonu veya onaylanmış alternatif yakalama yöntemi kullanın.
Korelasyon: Kaydedilmiş Bir Senaryonun Tekrar Oynatılabilir Hale Getirilmesi
Oturum kimlikleri, CSRF belirteçleri, OAuth durumu, istek imzaları ve kaynak kimlikleri çalıştırmalar arasında değişir. Korelasyon, bir yanıttan yeni bir değer çıkarır ve bunu sonraki isteklere yerleştirir.
- Dinamik değeri ilk içeren yanıtı bulun.
- JSON, CSS, XPath veya Düzenli İfade Çıkarıcı ekleyin.
- Sonucu adlandırılmış bir JMeter değişkenine kaydedin.
- Daha sonra kod içine sabit olarak yazılmış değerleri değişken referansıyla değiştirin.
- Çıkarma işlemi eşleşme bulamadığında açıkça başarısız olun.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Parametrelendirme, genellikle CSV dosyalarından alınan bağımsız kullanıcı verilerini sağlar. Korelasyon ise yürütme sırasında sunucu tarafından oluşturulan verileri yakalar. Gerçekçi planlar genellikle her ikisine de ihtiyaç duyar.
Sorun giderme
| Sorun | Muhtemel sebep | sabit |
|---|---|---|
| Kayıtlı istek yok. | Yanlış proxy, durdurulmuş kayıt cihazı, port çakışması veya atlama kuralı | Sunucu ve bağlantı noktasını onaylayın, kaydediciyi başlatın ve hedef dışlamalarını kaldırın. |
| HTTPS uyarısı | Geçici CA eksik veya süresi dolmuş | Yeni bir kayıt sertifikası oluşturun ve yalnızca test profiline aktarın. |
| Çok fazla trafik | Uzantılar, telemetri, diğer sekmeler veya genel kalıplar | Temiz bir profil kullanın ve dahil etme/hariç tutma filtrelerini iyileştirin. |
| Giriş tekrarı başarısız oldu | Eksik çerezler, belirteçler, OAuth akışı veya korelasyon | Çerez yöneticisini ekleyin, dinamik değerleri çıkarın ve yönlendirmeleri inceleyin. |
| Tarayıcı daha sonra çevrimdışı | Hâlâ durdurulmuş yerel proxy'yi işaret ediyor. | Otomatik veya proxy'siz ayarları geri yükleyin. |
| JMeter bellek hatası | GUI dinleyicileri veya büyük yanıt depolama alanı | Grafik arayüzü olmayan modu kullanın ve kaydedilen yanıt verilerini sınırlayın. |
| Tarayıcıdan farklı | JMeter sayfa JavaScript'ini oluşturmaz veya çalıştırmaz. | Temel API'leri test edin ve ölçümleri görüntülemek için tarayıcı araçlarını kullanın. |
JMeter bir protokol performans aracıdır. En Büyük İçerik Boyama gibi görsel olayları tek başına ölçemez.
SSS
JMeter'da HTTP Proxy Sunucusu adının yerini ne aldı?
Bu bileşen artık HTTP(S) Test Komut Dosyası Kaydedici olarak adlandırılıyor.
Hangi kayıt portunu kullanmalıyım?
Kullanılmayan herhangi bir yerel port kullanılabilir. 8888 numaralı port yaygındır ve tarayıcının aynı değeri kullanması gerekir.
JMeter HTTPS trafiğini kaydedebilir mi?
Evet, izole edilmiş test tarayıcısı JMeter'ın geçici kayıt sertifikasına güvendiğinde.
Kaydedilmiş bir metin tekrar oynatıldığında neden başarısız oluyor?
Dinamik belirteçler, çerezler, kimlik doğrulama akışları, sunucu farklılıkları ve eksik veriler genellikle ilişkilendirme ve parametreleştirme gerektirir.
JMeter Chrome'u kaydedebilir mi?
Evet. JMeter'ın yerel kaydedicisini kullanmak için temiz bir Chrome profili yapılandırın.
JMeter GUI üzerinden yük testleri çalıştırmalı mıyım?
Hayır. Önce grafik arayüzü (GUI) modunda derleyin ve hata ayıklayın, ardından yükleme işlemini GUI olmayan modda gerçekleştirin.
JMeter gerçek bir tarayıcı gibi mi davranıyor?
Hayır. Protokol istekleri gönderir ancak HTML oluşturmaz veya tarayıcı JavaScript'ini çalıştırmaz.
Üretim oturum açma işlemlerini kaydetmek güvenli mi?
Test ve hazırlık ortamı hesapları tercih edilmelidir. Üretim ortamında veri yakalama, açık yetkilendirme ve sıkı gizlilik yönetimi gerektirir.
