k6 ve JMeter'dan geçiş
Elinizdeki k6 betiklerini ve JMeter planlarını yeniden yazmanız gerekmez. Testler → Dosyadan aç bir k6 betiğini (.js, .ts) ya da JMeter planını (.jmx) Spitfire testine çevirip editörde açar; gözden geçirip kaydedersiniz. Dosya yalnız okunur, hiç çalıştırılmaz. Karşılığı olmayan her şey satır numarasıyla bir raporda listelenir: hiçbir şey sessizce atlanmaz.
Nasıl
- Testler sayfasında Dosyadan aç'a basın, dosyayı seçin (en çok 4 MB).
- Editörün üstündeki rapor neyin nasıl çevrildiğini söyler: çevrilmedi (testte yok), kontrol et (yaklaşık çevrildi), not (nasıl çevrildiği).
- Adımları, eşikleri ve değişkenleri gözden geçirin; Dene seçili senaryodan tek iterasyon gönderip her isteği ve yanıtı gösterir. Sonra kaydedin.
Bir test takımını tek seferde
Yüzlerce test için dosyaları tek tek açmanız gerekmez. Dosyadan aç'ta birden çok dosya seçin: toplu içe aktarma sayfası her birini çevirir, doğrular ve raporuyla listeler; adlarını düzeltip seçtiklerinizi bir düğmeyle kaydedersiniz. Düzeltilmesi gerekenler düzenleyicide açılır. Bir klasörün tamamı için komut satırı:
spitfire convert ./jmeter-tests ./k6 -o spitfire-tests/ -r report.csvHer betik için bir test dosyası yazılır ve doğrulanır; çevrilecek isteği olmayan betikler (yalnız gRPC, WebSocket…) ayrıca sayılır, raporun her satırı CSV'ye düşer (dosya, test, satır, düzey, mesaj). Çıkan dosyaları yine Dosyadan aç ile toplu yüklersiniz 0.5.16+.
k6 betiğinden
| k6 | Spitfire |
|---|---|
options.vus / duration / stages | Yük modeli: sabit ya da kademeli VU |
options.scenarios | Her senaryo ayrı senaryo; executor, startTime ve tüm k6 yürütücüleri aynı adla |
options.thresholds | Eşikler, aynı sözdizimiyle (p(95)<500, abortOnFail, etiketle adım/senaryo) |
http.get / post / put / patch / del / request | HTTP adımı: metot, adres, başlıklar, gövde (JSON ya da form) |
check(res, {...}) | Kontroller: durum kodu, gövdede metin, JSONPath, süre |
res.json('a.b') · JSON.parse(res.body) · res.headers['X'] | Yanıttan değişken çıkarma (JSONPath ya da başlık); sonraki isteklerde {{ad}} |
sleep(n) · randomIntBetween | Düşünme süresi (sabit ya da aralık) |
group(name, fn) | Adım adlarının önüne grup adı |
__ENV.BASE || 'https://…' | Değişken, varsayılan değeriyle |
__VU · __ITER | {{__VU}} · {{__ITER}} |
setup() | Döndürdüğü değerler değişken olur; istekleri her VU için bir kez, ilk adımlar olarak koşar (k6'da tüm teste bir kez) |
Eşik ifadeleri ve CI çıkış kodları (99 eşik kırıldı, 97 eşik koşuyu durdurdu) k6 ile aynıdır: pipeline'daki kapı değişmez, yalnız komut spitfire cloud run "Test adı" olur.
JMeter planından
| JMeter | Spitfire |
|---|---|
Thread Group | Senaryo: süre varsa sabit ya da kademeli (ramp-up) VU, döngü sayısı varsa VU başına iterasyon |
HTTP Request | HTTP adımı: metot, adres, parametreler, gövde |
HTTP Request Defaults · Header Manager | Alttaki her isteğe adres öneki ve başlıklar |
Response · Duration · JSON Assertion | Kontroller |
JSON Extractor · Regular Expression Extractor | Yanıttan değişken çıkarma |
Constant · Uniform Random Timer | Düşünme süresi |
User Defined Variables · ${__P(x,default)} | Değişkenler, varsayılan değerleriyle |
${__Random} · ${__UUID} · ${__time} · ${__threadNum} | Spitfire şablon işlevleri |
Transaction · Simple Controller | Düzleştirilir; adı adımların önüne |
Devre dışı bırakılmış öğeler alınmaz. Hem süre hem döngü sayısı olan Thread Group süreyle çevrilir, sonsuz döngülü ve süresiz olan 10 dakikaya ayarlanır; ikisi de raporda yazar.
Çevrilmeyenler
Bunlar raporda satırıyla listelenir; testi kaydetmeden önce Spitfire'daki karşılığıyla elle kurarsınız:
- Döngüler ve koşullar (
for,if; If/Loop/While Controller): Spitfire adımları sırayla koşar, her iterasyon tüm akıştır. - Veri dosyaları (
SharedArray,open(), CSV Data Set): CSV'yi Veri dosyaları'na yükleyip teste bağlayın; sütunlar{{kullanicilar.email}}olur. - HTTP dışı istekler (k6 WebSocket/gRPC, JMeter JDBC/JMS…): Spitfire bunların çoğunu yerleşik destekler (WebSocket, gRPC, SQL, Kafka, MQTT, AMQP, Redis, MongoDB); adımı editörde ekleyin.
- Özel metrikler ve serbest kod (Trend/Counter, JSR223/BeanShell): karşılığı yok; adım başına süreler, kontroller ve eşikler çoğu durumda yeter.
- JMeter eklentileri ve sonucu dosyaya yazan dinleyiciler: sonuçlar koşu sayfasında, raporlar PDF/HTML.
Geçtikten sonra
Test bir kez Spitfire'da olunca kod yazmadan şunlar gelir: koşuyu lokasyonlara yüzdeyle bölmek, ortamlar (aynı testi staging ve production'a karşı, değişken ve bağlantı farklarıyla), Koşu penceresinden yük ölçeği, kırılma noktası (sistemin hangi hızda ölçütü kaçırdığını basamaklı yükle bulur), biten koşuda kendi rakamlarıyla bulgular, zamanlanmış koşular, referans koşuya göre kötüleşme uyarısı ve paylaşılabilir PDF rapor.
Kurulum tek komut: kurulum rehberi. Araçların yan yana karşılaştırması: karşılaştırma.
Dosyadan aç Spitfire 0.5.14, toplu içe aktarma 0.5.16 ile geldi. Çevrilemeyen yaygın bir kalıp görürseniz yazın; dönüştürücüye ekleyelim.