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
- Testler sayfasında
Spitfire'da: /teststesti açın ve Düzenle'ye tıklayın. - Senaryolar ve adımlar sekmesinin en üstündeki Giriş ve token kartında Giriş isteği'ni seçin.
- Metodu ve adresi yazın, ör.
POSTve:
{{base}}/auth/login- Body sekmesinde JSON'u seçip kullanıcı bilgilerini yapıştırın:
{"username": "{{users.email}}", "password": "{{users.password}}"}- Kaynak olarak JSON gövde kalsın; JSONPath alanına token'ın yolunu yazın (aşağıdaki örneklere bakın):
data.access_token- Değişken boş kalırsa token
{{token}}olur. Nereye eklenir varsayılanıAuthorization: Bearer {{token}}header'ıdır. - Yenileme altında 401 dönerse yeniden giriş + bir kez tekrar işaretli kalsın.
- 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.
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:
//LoginResult/TokenToken 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_ingibi 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:
- Token alanına token'ı yapıştırın.
- Nereye eklenir, Ad ve Biçim alanlarını yukarıdaki tabloya göre ayarlayın.
- 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.
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:
- Adımı açıp Diğer sekmesine geçin.
- 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
securitySchemesokunur. Bir login işlemi ya da OAuth2 akışı seçerseniz test Giriş ve token bloğuyla gelir (OAuth2'de süre yoluexpires_inhazı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:
- Giriş isteği:
POSTve demo hedefinin adresi, sonunda/login?ttl=120; ör.:
http://testtarget:8090/login?ttl=120- Gövde (JSON):
{"user": "ada", "password": "secret"}- JSONPath
token, Süre (saniye) yoluexpires_in. GET http://testtarget:8090/itemsadı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.
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.