HAR dosyasından yük testi: tarayıcı kaydını JMX'e çevirmeden teste dönüştürmek
Bir kullanıcı akışını (giriş, arama, sepete ekleme) yük testine çevirmenin en kısa yolu onu tarayıcıda bir kez yapıp kaydetmektir. Tarayıcının geliştirici araçları bu kaydı HAR (HTTP Archive) dosyası olarak verir: sayfanın yaptığı her istek, header'ları, gövdeleri ve yanıtlarıyla bir JSON dosyası. Bu dosyayı önce bir JMeter planına (.jmx) çevirmek yaygın bir yoldur; Spitfire'da bu ara adım gerekmez: HAR dosyası doğrudan içe aktarılır ve akışı tekrarlayan bir teste dönüşür.
Ham bir kaydı tekrarlamak neden yetmez?
Kayıt bir kullanıcının bir anını tutar. Onu yüzlerce VU ile olduğu gibi tekrarlamak şu yüzden yanıltır:
- Sabit token'lar. Girişin döndürdüğü token ya da bir siparişin id'si kayıtta sabit bir değer olarak durur. Her VU aynı, belki de süresi dolmuş değeri gönderir; bu değerlerin her iterasyonda yanıttan alınması gerekir (korelasyon).
- Tek bir oturum. Kaydedilmiş bir session cookie'si bütün VU'ları aynı kullanıcı yapar; sunucu tek bir oturumu ölçer.
- Gürültü. Kayıtta resimler, stil dosyaları, font'lar ve CORS ön istekleri (preflight) de vardır. Bunlar çoğunlukla CDN'den gelir ve uygulamanın kapasitesi hakkında bir şey söylemez.
- Sabit adresler. Kayıt canlı sunucunun adresini taşır; aynı akışı staging'de koşturmak için her isteği elle değiştirmek gerekir.
HAR dosyasını kaydetmek
- Tarayıcıda geliştirici araçlarını açın ve Ağ (Network) sekmesine geçin.
- Akışı gerçek bir kullanıcı gibi baştan sona yapın; girişi de kayda dahil edin.
- İstek listesinde sağ tıklayıp HAR olarak kaydet (Save all as HAR) deyin.
Dikkat: HAR dosyaları parola, token ve kişisel veri içerebilir. Dosyayı paylaşmadan önce içeriğine dikkat edin. Spitfire kaydın kendisini teste yazmaz, yalnızca ondan türetilen istekleri yazar.
Spitfire ile: HAR'dan teste
- Testler → API / HAR içe aktar → Dosyadan ile HAR dosyasını seçin (en fazla 50 MB) ve Oku'ya tıklayın.
- Sayfa kayıttan neyin çıkarıldığını yazar: N istekten X statik dosya ve Y CORS ön isteği çıkarıldı. Kalan istekler kayıt sırasıyla listelenir.
- Varsayılan olarak yalnızca GET istekleri seçilidir; hedefte veri değişmez. POST, PUT/PATCH ya da DELETE eklerseniz bu istekler her iterasyonda tekrarlanır; test oluşturulmadan önce her grup ayrıca onaylanır ve hedef sunucunun adı yazılır. Onay denetim kaydına geçer.
- Temel adres (base) alanına test ortamınızın adresini yazın, test adını verin ve testi oluşturun. Düzenleyici açılır; testi gözden geçirip kaydedin.
İçe aktarma kaydı şöyle dönüştürür:
- Korelasyon: bir yanıtın döndürüp sonraki bir isteğin geri gönderdiği değerler (token, sipariş id'si) sabit olarak tekrarlanmaz, değişkene çıkarılır. Girişin döndürdüğü
{"token": "eyJ…"}sonraki her çağrıdaAuthorization: Bearer {{token}}olur. - Düşünme süresi: kullanıcının istekler arasındaki duraklamaları düşünme süresine (think time) dönüşür.
- Cookie'ler kayıttan atılır; her VU kendi cookie'lerini tutar.
- Kayıttaki hiçbir yanıtın üretmediği bir kimlik bilgisi (süresi dolmuş bir token) teste yazılmaz; yerine boş
{{authToken}}değişkeni konur. - Tarayıcının kendi eklediği header'lar (
sec-*, cache doğrulayıcıları, user agent) atılır. - Her origin bir değişken olur: en yoğun olanı
{{base}}, diğerleri{{base2}}… Aynı kayıt böylece bir staging sunucusuna yönlendirilebilir.
// kayıtta
POST /api/login → {"token": "eyJhbGciOi…"}
GET /api/orders Authorization: Bearer eyJhbGciOi…
// testte
POST {{base}}/api/login → token değişkene çıkarılır
GET {{base}}/api/orders Authorization: Bearer {{token}}Test oluştuktan sonra yük modelini seçin: beklenen trafikte bir yük testi, sınırı bulmak için basamaklı bir stres testi ya da saatlerce süren bir soak testi (yük testi türleri). Akış adımları düzenleyicide tek tek değiştirilebilir; kod yazılmaz (kod yazmadan yük testi).
Elinizde zaten bir .jmx varsa
HAR'ı daha önce bir JMeter planına çevirdiyseniz o planı da kullanabilirsiniz: Testler → Dosyadan aç ile .jmx dosyası okunur (çalıştırılmaz), Spitfire testine çevrilir ve neyin çevrildiğini anlatan bir rapor gösterilir (JMeter planlarını içe aktarma, geçiş rehberi).
Sık sorulan sorular
HAR dosyasını JMX'e çevirmem gerekir mi?Testler
HAR'dan gelen test neden 401 alıyor?Testler
{{authToken}} boş) ya da giriş isteği kayıtta yoktur. Girişi de kayda dahil edip yeniden kaydedin ya da authToken değişkenini doldurun.HAR dosyası en fazla ne kadar büyük olabilir?Testler
HAR dosyasındaki parolalar teste yazılır mı?Güvenlik
Aynı kaydı staging'de koşturabilir miyim?Testler
{{base}}, {{base2}}…); içe aktarırken ya da sonra düzenleyicide bu değişkenlere staging adresini yazmanız yeterlidir.Spitfire tek komutla Docker'a ya da Kubernetes'e kurulur; ücretsiz sürümde bütün test özellikleri ve protokoller açıktır.