Sürüm: 0.21.0Bu dokümantasyon Spitfire 0.21.0 içindir.
Başlarken — hangi işi hangi sırayla
Spitfire, kendi sunucunuza kurduğunuz (self-hosted), web arayüzlü, dağıtık bir yük testi platformudur. Testi arayüzde adım adım tanımlarsınız; yükü bir veya birden çok lokasyondaki runner'lar üretir; sonuçları canlı grafiklerle, p95/p99 latency, RPS ve hata oranıyla izler, threshold ile geçti/kaldı kararı alırsınız.
Bu sayfa bir yol haritasıdır: kurulumdan ilk load test'e, oradan CI/CD'ye kadar işleri hangi sırayla yapmanız gerektiğini anlatır. Her adımın kendi ayrıntılı sayfası vardır; takıldığınız yerde o sayfaya geçin.
Ne işe yarar
- Hangi adımın hangisinden önce gelmesi gerektiğini gösterir (ör. runner bağlanmadan koşu başlatılamaz, connection tanımlanmadan bir SQL adımı çalışmaz).
- Her adımda kimin (kurulum yöneticisi, workspace admin, kullanıcı) ne yapacağını söyler.
- Kavramları tek bir tabloda toplar; diğer sayfalarda geçen terimleri buradan kontrol edebilirsiniz.
Ne zaman kullanılır
- Spitfire'ı ilk kez kuruyorsanız: baştan sona sırayla izleyin.
- Bir ekip arkadaşınız "nereden başlayayım?" diye soruyorsa: bu sayfanın bağlantısını verin.
- Bir şey çalışmıyor ve hangi ön koşulun eksik olduğunu bilmiyorsanız: yol haritasında o adımdan önceki adımları kontrol edin.
Yol haritası
Aşağıdaki sıra, en az sürprizle ilerlemenizi sağlar. Opsiyonel adımlar işaretlidir; atlayıp sonra dönebilirsiniz.
1. Kurulum
Controller'ı (web arayüzü + API + Postgres) ve yerel runner'ları kurun. Linux/macOS'ta tek komut yeter:
curl -fsSL https://spitfire.tr/install.sh | bash -s -- dockerKubernetes için kubernetes, Windows'ta (Docker Desktop) irm https://spitfire.tr/install.ps1 | iex. Makinede yalnızca Docker (Kubernetes için ek olarak kubectl) gerekir. Docker kurulumu Postgres, controller ve 2 runner başlatır; yani kurulumdan hemen sonra koşu yapabilirsiniz. Ayrıntılar, portlar, proxy ve yedekleme: Kurulum.
2. İlk giriş ve setup code
Kurulumun sonunda Kurulum tamamlandı. Tarayıcıda açın: http://... satırındaki adresi açın. İlk açılışta İlk admin'i oluşturun ekranı gelir ve kurulumun sonunda basılan tek kullanımlık setup code'u (Kurulum kodu) ister. Burada oluşturduğunuz hesap kurulum yöneticisidir (install admin); diğer herkesi sonradan o ekler. Kodu kaybettiyseniz: Kurulum → İlk giriş ve kurulum kodu.
3. Lisans: ücretsiz anahtar ya da ücretli plan
Anahtarsız bir kurulum, ilk görüldüğü andan itibaren 14 gün ücretsiz limitlerle çalışır; sonra yeni koşu başlatmak için bir license key ister (testler ve sonuçlar silinmez). Ücretsiz anahtarı spitfire.tr/ucretsiz-anahtar adresinden e-postayla alın ve Lisans sayfasına yapıştırın. Birden çok kullanıcı, daha yüksek VU/RPS, birden çok runner veya lokasyon, SSO ve audit log için ücretli plan gerekir. Ayrıntılar: Lisans.
Ücretsiz sürümde 1 etkin kullanıcı vardır. Ekibinizi eklemeden önce lisans adımını tamamlayın; aksi hâlde yeni kullanıcı etkinleştirilemez.
4. Kullanıcılar, gruplar ve SSO (opsiyonel)
Ekip kullanacaksa Kullanıcılar sayfasından hesapları açın, Gruplar sayfasında hangi testi kimin görüp koşturabileceğini belirleyin. Kurumsal kimlikle giriş istiyorsanız SSO sayfasında OpenID Connect (Entra ID, Okta, Google, Keycloak…) ya da LDAP / Active Directory tanımlayın. Ajans planında her müşteri için ayrı bir workspace açabilirsiniz. Ayrıntılar: Kullanıcılar ve erişim.
5. Runner'lar ve lokasyonlar
Kurulumla gelen yerel runner'lar local lokasyonundadır ve ilk testler için yeterlidir. Yükü başka bir şehirden ya da bulut bölgesinden göndermek istiyorsanız Runner'lar sayfasında lokasyonlu bir runner token'ı oluşturun ve verilen komutu o sunucuda çalıştırın. Runner controller'a dışarı doğru bağlanır; uzak sunucuda gelen port açmanız gerekmez. Ayrıntılar: Runner'lar ve lokasyonlar.
Dashboard'da "Bağlı runner yok; test başlatılamaz." uyarısı görüyorsanız önce bu adımı tamamlayın.
Dashboard: çalışan koşu, son 24 saatteki koşular, 7 günlük başarı, boştaki runner sayısı ve son koşular listesi
6. Connection'lar ve secret'lar
HTTP dışındaki protokoller (gRPC, Kafka, MQTT, RabbitMQ, Redis, SQL, MongoDB) ve mTLS istemci sertifikası için önce Bağlantılar sayfasında bir connection tanımlayın (ör. {connection:orders-db}). Parolalar ve diğer secret'lar şifreli saklanır; testler connection'a adıyla başvurur, parolayı hiç görmez. Ayrıntılar: Protokoller ve bağlantılar.
7. Data file'lar (opsiyonel)
Her VU'nun farklı kullanıcı adı, kart numarası, ürün kimliği… kullanmasını istiyorsanız Veri dosyaları sayfasından CSV yükleyin; satırlar sıralı, rastgele ya da runner'lar arasında tekil dağıtılabilir. Ayrıntılar: Test verisi.
8. İlk test: editör
Testler sayfasında Yeni test ile editörü açın. Bir test bir ya da daha çok scenario'dan, her scenario sıralı step'lerden oluşur. Her step'e check (status, JSONPath, header, latency…) ve extract (yanıttan değişken çıkarıp sonraki step'te kullanma) ekleyebilirsiniz. Elinizde k6 betiği, JMeter planı, OpenAPI/Postman dokümanı, HAR kaydı ya da erişim logu varsa sıfırdan yazmak yerine içe aktarın: Dosyadan aç ve API / HAR içe aktar. Ayrıntılar: Test editörü ve İçe aktarma.
9. Load model ve threshold'lar
Editörde her scenario için bir executor (yük modeli) seçin: constant-vus, ramping-vus, constant-arrival-rate, ramping-arrival-rate, shared-iterations, per-vu-iterations. Ramp-up süresini, hedef VU ya da RPS'i ve think time'ı burada belirlersiniz. Eşikler sekmesinde geçti/kaldı ölçütlerini yazın (ör. req_duration için p(95)<500, req_failed için rate<0.01). Threshold olmayan bir koşu "geçti" sayılır; anlamlı bir karar için en az bir latency ve bir hata oranı threshold'u ekleyin. Ayrıntılar: Yük modeli ve threshold'lar.
10. İlk koşu ve sonuçları okumak
Test sayfasında Çalıştır'a basın. Testi çalıştır penceresinde runner'ları Sayıyla, Etiketle, Seçerek ya da Lokasyonla seçin ve Başlat'a tıklayın. Koşu sayfası canlı RPS, aktif VU, p95 latency, hata oranı, step tablosu ve threshold sonuçlarını gösterir; koşu bitince bulgular (en yavaş step, hata türleri, gerileme…) listelenir. İyi bir koşuyu Baseline yap ile referans olarak işaretleyin (ör. {run:checkout-baseline}); sonraki koşular ona göre karşılaştırılır. Ayrıntılar: Koşu ve sonuçlar.
Veri yazan step'ler (SQL/Mongo yazma, tehlikeli Redis komutları, veri değiştiren HTTP istekleri) koşudan önce onay ister. Bu, production verisini yanlışlıkla değiştirmenizi önlemek içindir.
11. Raporlar ve paylaşım
Koşu sayfasındaki Rapor menüsü HTML raporu açar, PDF indirir, CSV verir ve Paylaşım bağlantısı… ile hesabı olmayan birine 1–90 gün geçerli bir bağlantı oluşturur. Ayrıntılar: Koşu ve sonuçlar.
12. Zamanlanmış koşular, sentetik izleme ve bildirimler
Testi düzenli koşturmak için test sayfasındaki Zamanla ya da Zamanlanmış koşular sayfası; düşük yükle aralıklı kontrol için Sentetik izleme; Slack, Teams, e-posta, SMS ya da webhook bildirimleri için Entegrasyonlar. Ayrıntılar: Zamanlama ve izleme.
13. CI/CD
Kullanıcı menüsü → API token'ları'ndan bir API token oluşturun, pipeline'ınızda SPITFIRE_TOKEN gizli değişkeni yapın ve kayıtlı testi spitfire cloud run "<test adı>" ile koşturun. Komut koşunun bitmesini bekler ve threshold sonucuna göre çıkış kodu verir (0 geçti, 99 eşik kırıldı…). Ayrıntılar: CI/CD.
14. Sürüm karşılaştırma
İki sürümü (ör. mevcut ve aday) iki ortamda aynı anda, aynı yükle koşturup step step karşılaştırmak için karşılaştırmalı koşu (sürüm A/B) kullanın; ölçüm gürültüsünü A/A kalibrasyonuyla ölçün. Ayrıntılar: Sürüm karşılaştırma.
15. Observability
Bir observability bağlantısıyla (OpenTelemetry Collector'dan OTLP, Prometheus, Tempo, Jaeger, Loki) koşunun Backend sekmesi sistemlerinizin kendi trace, metrik ve loglarını yük basamaklarıyla hizalar: hangi servis ya da veritabanı hangi basamakta yavaşladı. Ayrıntılar: Gözlemlenebilirlik.
16. Mock servisler, fault injection ve kapasite planlama (ileri düzey)
Dış API'leri (ödeme, SMS, kargo…) mock servislerle taklit edin, Kubernetes'te yük altında pod silip ağ gecikmesi ekleyin, kırılma noktası koşusundan kapasite tahmini çıkarın. Ayrıntılar: Mock, chaos ve kapasite.
17. Bir şey ters giderse
Arayüzde bir sunucu hatası gördüyseniz hata kodunu kopyalayın; kurulum yöneticisi Sistem olayları sayfasından olayları görebilir ve Destek paketi indir ile bir zip hazırlayabilir. Ayrıntılar: Sorun giderme.
En kısa yol: 15 dakikada ilk koşu
Ekip, SSO, uzak runner gibi her şeyi sonraya bırakıp yalnızca "çalışıyor mu?" görmek istiyorsanız:
- Docker kurulu bir makinede
curl -fsSL https://spitfire.tr/install.sh | bash -s -- dockerçalıştırın. - Çıktıdaki adresi açın, Kurulum kodu ile Admin'i oluştur ve giriş yap.
- Testler → Yeni test; ilk step'in URL'sine test edeceğiniz bir endpoint yazın (kendi sisteminiz; başkasının sistemine izinsiz yük göndermeyin).
- Eşikler sekmesinde bir latency threshold'u ekleyin, Kaydet.
- Çalıştır → Başlat. Koşu sayfasında grafiklerin dolmasını izleyin.
Lisans adımı ilk 14 gün beklemeye alınabilir; ama 14 günün sonunda yeni koşular anahtar ister.
Kim ne yapar
| İş | Kim yapabilir |
|---|---|
| Kurulum, güncelleme, yedek | Sunucuya erişimi olan kişi (sistem yöneticisi) |
| Lisans, kullanıcılar, SSO, Mobil ve Gate, Sistem olayları | Kurulum yöneticisi (kullanıcı rolü admin) |
| Runner token'ı oluşturma, runner kaldırma | Admin |
| Test, connection, data file, grup, bildirim kanalı | Admin; çok workspace'li kurulumda o alanın Alan yöneticisi |
| Test koşturma | Admin'ler her testi; Kullanıcı rolündekiler yalnızca bir grubun Koşturabilir işaretlediği testleri |
| Sonuçları görme | Admin'ler her şeyi; kullanıcılar yalnızca gruplarına Görünür olan testleri |
| API token | Her kullanıcı kendi token'ını açar; token sahibinin o anki yetkileriyle çalışır |
Kavramlar
| Kavram | Anlamı |
|---|---|
| Controller | Web arayüzünü, REST API'yi ve runner'ların bağlandığı gRPC endpoint'ini sunan merkezi servis. Testleri, connection'ları, kullanıcıları ve sonuçları Postgres'te saklar; yükü runner'lara böler. |
| Runner | Yükü üreten süreç. Controller'a bir token'la bağlanır, her saniye metrik gönderir. |
| Lokasyon (location) | Runner'ın yükü nereden gönderdiği (ör. istanbul, frankfurt). Koşu lokasyonlara yüzdeyle bölünebilir. |
| Test | Kaydedilmiş bir yük testi tanımı: scenario'lar, threshold'lar, değişkenler, ortamlar. Her kayıt yeni bir sürümdür. |
| Scenario (senaryo) | Bir testin içinde kendi executor'ı ve step listesi olan bir kullanıcı akışı. Bir testte birden çok scenario aynı anda koşabilir. |
| Step (adım) | Tek bir istek ya da işlem: bir HTTP request, bir SQL sorgusu, bir Kafka produce… |
| Executor / load model | Yükün biçimi: kaç VU, hangi hızda, ne kadar süre (constant-vus, ramping-arrival-rate…). |
| VU (virtual user) | Sanal kullanıcı: scenario'nun step'lerini baştan sona tekrar tekrar çalıştıran bağımsız bir döngü. |
| Iteration (iterasyon) | Bir VU'nun scenario'yu bir kez baştan sona çalıştırması. |
| Ramp-up | VU sayısının ya da istek hızının zamanla artırıldığı aşama. |
| Think time | İki step arasında gerçek kullanıcıyı taklit eden bekleme. |
| Check | Bir yanıtın doğru olup olmadığının kontrolü (status, JSONPath, XPath, regex, header, latency). Başarısız check hata sayılır. |
| Extract | Yanıttan bir değeri (ör. token) değişkene çıkarıp sonraki step'lerde {{değişken}} olarak kullanma. |
| Threshold (eşik) | Koşunun geçti/kaldı kararı: ör. req_duration p(95)<500. Aşılan threshold koşuyu "Eşik aşıldı" yapar; istenirse koşuyu durdurur. |
| Run (koşu) | Bir testin bir kez çalıştırılması ve sonuçları. |
| Baseline | Sonraki koşuların karşılaştırıldığı referans koşu. |
| Connection (bağlantı) | Bir veritabanı, broker ya da gRPC servisi için adres ve kimlik bilgileri; secret'lar şifreli saklanır. |
| Secret | Parola, token, client secret gibi gizli değer; arayüzde bir daha gösterilmez, yalnızca değiştirilebilir. |
| Data file (veri dosyası) | Step'lere satır satır değer besleyen CSV. |
| Workspace (çalışma alanı) | Ajans planında her müşterinin ayrı ve birbirinden görünmez alanı. |
| Group (grup) | Kullanıcıların hangi testi görüp koşturabileceğini belirleyen liste. |
| API token | CI hatlarının sizin adınıza test koşturduğu kişisel anahtar. |
| Setup code (kurulum kodu) | İlk yöneticiyi oluşturmak için kurulumun bastığı tek kullanımlık kod. |
| License key (lisans anahtarı) | SPF1.… ile başlayan, internete çıkmadan doğrulanan imzalı anahtar. |
| Audit log (denetim kaydı) | Kim, ne zaman, neyi yaptı; yalnız eklenebilir kayıt. |
Sık karşılaşılan sorunlar
Belirti: Dashboard'da "Bağlı runner yok; test başlatılamaz." yazıyor.
Neden: Hiçbir runner controller'a bağlı değil (yerel runner container'ları durmuş olabilir ya da Kubernetes'te --runners 0 ile kurulmuş olabilir).
Çözüm: Runner'lar → Sık karşılaşılan sorunlar bölümünü izleyin.
Belirti: Başlat'a basınca "Yeni koşular için lisans anahtarı gerekiyor" mesajı çıkıyor. Neden: Anahtarsız 14 günlük süre bitti. Çözüm: Ücretsiz anahtar alıp Lisans sayfasına yapıştırın: Lisans.
Belirti: Ekip arkadaşınızı ekleyemiyorsunuz; "Yeni kullanıcı etkinleştirilemez" uyarısı çıkıyor. Neden: Ücretsiz sürüm 1 etkin kullanıcıya izin verir. Çözüm: Ücretli plana geçin ya da kullanılmayan bir hesabı Devre dışı yapın: Lisans.
Belirti: Kullanıcı rolündeki bir ekip arkadaşı testleri göremiyor. Neden: Kullanıcılar yalnızca gruplarına atanmış testleri görür. Çözüm: Gruplar sayfasında onu bir gruba ekleyin ve testleri Görünür / Koşturabilir işaretleyin: Kullanıcılar ve erişim.