SpitfireYük Testi ve Gözlemlenebilirlikv1.4.9 · Yenilikler

Sürüm: 1.4.9Bu dokümantasyon Spitfire 1.4.9 içindir.

Giriş ve token

Korunan bir API'yi test ederken token'ı her adıma elle eklemeniz gerekmez. Giriş ve token bölümünde giriş isteğini bir kez tanımlarsınız; Spitfire her VU için girişi yapar, token'ı yanıttan alır ve testin her isteğine ekler. Süresi dolunca ya da sunucu 401 dönünce kendiliğinden yeniden giriş yapar.

Giriş isteğini tanımlayın

  1. Testler sayfasında Spitfire'da: /tests testi açın ve Düzenle'ye tıklayın.
  2. Senaryolar ve adımlar sekmesinin en üstündeki Giriş ve token kartında Giriş isteği'ni seçin.
  3. Metodu ve adresi yazın, ör. POST ve:
bash
{{base}}/auth/login
  1. Body sekmesinde JSON'u seçip kullanıcı bilgilerini yapıştırın:
json
{"username": "{{users.email}}", "password": "{{users.password}}"}
  1. Kaynak olarak JSON gövde kalsın; JSONPath alanına token'ın yolunu yazın (aşağıdaki örneklere bakın):
bash
data.access_token
  1. Değişken boş kalırsa token {{token}} olur. Nereye eklenir varsayılanı Authorization: Bearer {{token}} header'ıdır.
  2. Yenileme altında 401 dönerse yeniden giriş + bir kez tekrar işaretli kalsın.
  3. Girişi dene'ye tıklayın.

Başarılı olduğunu nasıl anlarsınız: düğmenin yanında yeşil Giriş tamam (200), token: yazar ve token'ın maskeli hali görünür (ör. eyJh…x9Qk (212)). Yol yanlışsa kırmızı kutuda yanıtta bulunan yollar listelenir (ör. $.token not found; the response has: data.access_token, data.expires_in); listeden doğru yolu kopyalayın.

Not

Giriş, sonuçlarda kendi Login satırında ölçülür: süresi, hata oranı ve kaç kez çalıştığı adımlardan ayrı görünür. Koşu sayfasındaki Giriş ve token kartı girişleri, yenilemeleri ve 401/403 sonrası tekrar gönderilen istekleri sayar.

JSONPath ile token'ı bulmak

Başta $. yazmanız gerekmez; data.token ile $.data.token aynıdır.

Yanıt Yol
{"token": "abc"} token
{"data": {"access_token": "abc", "expires_in": 3600}} data.access_token
{"sessions": [{"jwt": "abc"}]} sessions[0].jwt

Yanıt XML ise Kaynak olarak XML gövde'yi seçip XPath yazın:

bash
//LoginResult/Token

Token bir yanıt header'ındaysa Yanıt header'ı'nı seçip header adını yazın (ör. X-Auth-Token). Sunucu oturumu cookie ile açıyorsa Cookie'yi seçin: her VU'nun cookie kutusu cookie'yi kendisi gönderir, header eklenmez.

Token nasıl gönderilir

Nereye eklenir ve Biçim alanları API'nizin beklediği biçime göre doldurulur:

API ne bekliyor Nereye eklenir Ad Biçim
Bearer token Header Authorization Bearer {{token}}
Önekli token Header Authorization Token {{token}}
API key header'ı Header X-API-Key {{token}}
Query'de token Query parametresi access_token {{token}}

Eklenen header Ortak header'lar listesinde salt okunur bir satır olarak görünür (Giriş ve token'dan). Bir adım aynı adlı header'ı kendisi yazıyorsa adımınki kazanır.

Yenileme

  • Belirli aralıkla yeniden giriş: token her VU'da bu süre dolunca yenilenir (ör. 15 dk; en az 1 sn).
  • Süre (saniye) yolu: yanıt expires_in gibi bir süre veriyorsa yolunu yazın (data.expires_in); token bitmeden 30 sn önce yenilenir.
  • 401 / 403 dönerse: istek böyle dönünce VU yeniden giriş yapar ve aynı isteği bir kez daha gönderir. İkinci deneme de 401 dönerse adım başarısız sayılır; döngüye girmez. Adımda 401 bekleyen bir check varsa (ör. yetkisiz erişim testi) o adım tekrar gönderilmez.
  • Yenileme token'ı yolu: yanıttaki yenileme token'ı {{token_refresh}} değişkenine alınır; giriş isteğinin body'sinde kullanabilirsiniz.

Giriş başarısız olursa (hata kodu ya da yanıtta token yok) o VU'nun iterasyonu biter, VU bir saniye bekleyip bir sonraki iterasyonda yeniden dener; böylece bozuk bir giriş yük altında dövülmez.

Token'ı elle girmek

Token'ı başka bir yerden alıyorsanız (ör. bir geliştirici portalı) Token'ı elle gireceğim'i seçin:

  1. Token alanına token'ı yapıştırın.
  2. Nereye eklenir, Ad ve Biçim alanlarını yukarıdaki tabloya göre ayarlayın.
  3. Testi kaydedin.

Başarılı olduğunu nasıl anlarsınız: sayfanın üstündeki Dene ile adımlar 200 döner; Ortak header'lar listesinde token satırı görünür.

Dikkat

Elle girilen token yenilenmez. Süresi dolunca buradan güncelleyin. Token şifreli saklanır ve yalnızca maskeli görünür (ilk ve son 4 karakter). Test JSON'unda, dışa aktarmada ve CLI çıktısında yer almaz. Değiştirmek için yenisini yapıştırın. Kopyalanan ya da başka bir kuruluma taşınan testte token'ı yeniden girmeniz gerekir. OpenAPI içe aktarmada girilen parola ve client secret da aynı şekilde secret_ değişkenlerinde şifreli saklanır.

Herkese açık adımlar

Ana sayfa, sağlık kontrolü ya da kayıt gibi girişsiz çalışan adımlar için:

  1. Adımı açıp Diğer sekmesine geçin.
  2. Herkese açık · giriş gerekmez'i işaretleyin.

Bu adıma token header'ı eklenmez, adım girişi beklemez ve 401 dönerse yeniden giriş yapılmaz (normal bir hata sayılır). Giriş, VU'nun herkese açık olmayan ilk adımından hemen önce çalışır; testin tüm adımları herkese açıksa giriş hiç çalışmaz. İşaretli adımın başlığında Herkese açık rozeti görünür.

İçe aktarmada

  • OpenAPI: dokümandaki securitySchemes okunur. Bir login işlemi ya da OAuth2 akışı seçerseniz test Giriş ve token bloğuyla gelir (OAuth2'de süre yolu expires_in hazır gelir); token ya da API key'i elle verirseniz Token'ı elle gireceğim kipiyle gelir. security: [] olan işlemler ve doküman genelinde güvenlik tanımlı değilken güvenliği olmayan işlemler herkese açık adım olur.
  • Postman: koleksiyon düzeyindeki bearer ya da API key auth bloğa taşınır. Giriş yapan ya da token kuran ön betikler çalıştırılmaz; içe aktarma ekranı bunu not olarak gösterir, giriş isteğini düzenleyicide tanımlayın.
  • HAR ve Recorder: kayıttaki giriş isteği adım olarak gelir. Düzenleyici, token'ı çıkarıp başka adımların header'ında kullanan adımı fark eder ve Bu adımı Giriş olarak kullan'ı önerir: tıklayınca adım giriş isteği olur, adımlardaki elle yazılmış token header'ları silinir.

Demo hedefinde deneyin

install.sh --demo ile gelen demo hedefinde süresi dolan bir token veren giriş var; yenilemeyi canlı izleyebilirsiniz:

  1. Giriş isteği: POST ve demo hedefinin adresi, sonunda /login?ttl=120; ör.:
bash
http://testtarget:8090/login?ttl=120
  1. Gövde (JSON):
json
{"user": "ada", "password": "secret"}
  1. JSONPath token, Süre (saniye) yolu expires_in.
  2. GET http://testtarget:8090/items adımı ekleyip testi 5 dakika koşturun.

Başarılı olduğunu nasıl anlarsınız: koşu sayfasındaki Giriş ve token kartı VU başına birden çok giriş sayar. Token 120 sn yaşar; süresi dolunca /items 401 {"error": "token expired"} döner. 401'i, yeni girişi ve tekrarlanan isteği görmek için süre yolunu boş bırakın.

Not

ttl saniyedir (0 = süresiz). ttl yoksa token eskisi gibi hiç dolmaz. Demo hedefini çalıştıran kişi spitfire-testtarget -token-ttl 2m ile tüm token'ları süreli yapabilir.

Bilinmesi gerekenler

  • Token HTTP, GraphQL, WebSocket ve SSE adımlarına eklenir. Tarayıcı adımlarına token eklenmez; sayfa kendi oturumunu açar.
  • Giriş, çalıştığı iterasyonun veri satırını kullanır ({{users.email}}); her VU kendi kullanıcısıyla girer.
  • Harici motorla (JMeter, Gatling, Locust, k6) koşan testlerde bu bölüm yoktur.