Kısaca
Postman'ın resmi CLI çalıştırıcısı olan Newman, CI pipeline'ınızda npm ve Node.js gerektirir. Bu durum tedarik zinciri riski yaratır, bağımlılık yönetimi yükü ekler ve Postman'ın ücretsiz katmanında, API aracılığıyla koleksiyon çalıştırmaları artık hız sınırlıdır. Bu kılavuz, Newman olmadan CI'da API testlerini çalıştırmak için üç alternatifi kapsar: Apidog'un CLI çalıştırıcısı, k6 ve Hurl. Mevcut Postman koleksiyonlarınız varsa, Apidog en doğrudan yoldur çünkü bunları yerel olarak içe aktarır ve çalıştırma başına bir sınırı yoktur.
Giriş
Newman iyi bir fikirdi. Postman koleksiyonlarını CI pipeline'larında çalıştıran bir CLI aracı, API testini taşınabilir ve otomatikleştirilebilir hale getirdi. Postman'ın marka güveniyle birlikte geldi, popüler bir topluluk eylemi aracılığıyla GitHub Actions ile entegre oldu ve birçok ekibin tüm API test otomasyon stratejilerini üzerine kurduğu kadar iyi çalıştı.
Sonra üç sorun ortaya çıktı.
İlk olarak, Newman bir npm paketidir. Onu kullanan her pipeline, derleme sırasında npm deposundan çekim yapar. 2021'deki ua-parser-js uzlaşması ve 2022'deki node-ipc olayı, npm tedarik zinciri saldırılarının teorik olmadığını gösterdi. Güvenlik ekipleri, API test katmanının neden npm'e ihtiyaç duyduğunu sormaya başladı.
İkinci olarak, Postman ücretsiz ve temel ücretli katmanlarda koleksiyon çalıştırmalarını sınırlamaya başladı. CI'ın bir parçası olarak Postman API aracılığıyla koleksiyon çalıştırmaya güvenen ekipler kotalara ulaştı ve ya planlarını yükseltmek ya da pipeline'larını yeniden tasarlamak zorunda kaldı.
Üçüncü olarak, Newman'ın bakım hızı yavaşladı. Sorunlar aylarca GitHub'da açık kalıyor. Bazı yeni Postman betik API'lerinin Newman'da tutarsız desteği var.
Sonuç: CI pipeline'larını Newman üzerine kuran geliştiriciler artık alternatifler arıyor. İşte mevcut olanlar.
Seçenek 1: Apidog CLI (Postman koleksiyon kullanıcıları için önerilir)
Halihazırda Postman koleksiyonlarına yatırım yaptıysanız, Apidog'un CLI çalıştırıcısı Newman için en yakın işlevsel ikamedir.
Neleri destekler?
- Postman Koleksiyonu v2 ve v2.1 formatı
- Postman ortamları (JSON dışa aktarımı)
pm.test,pm.expect,pm.environment.set,pm.collectionVariables.set- İstek öncesi ve istek sonrası betikler
- CSV ve JSON veri dosyaları aracılığıyla veri odaklı test
- CI raporlaması için JUnit XML ve JSON çıktısı
npm gerekmez. Apidog CLI bağımsız bir ikili olarak dağıtılır. Bir kez indirir, PATH'inize eklersiniz ve çalışır.
Çalıştırma başına limit yok. Apidog, hiçbir planda koleksiyon çalıştırma sayısını sınırlamaz. Günde 500 koleksiyon çalıştıran bir pipeline, 5 koleksiyon çalıştıran bir pipeline ile aynı şekilde çalışır.
Kurulum
Platformunuz için CLI ikilisini apidog.com/cli adresinden indirin veya kabuk yükleyiciyi kullanın:
# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh | sh
# Doğrulama
apidog --version
Docker tabanlı CI çalıştırıcıları için Apidog resmi bir görüntü sağlar:
FROM apidog/cli:latest
Bir Postman koleksiyonunu çalıştırma
Koleksiyonunuzu Postman'dan (Dosya > Dışa Aktar > Koleksiyon v2.1) ve ortamınızı (Ortamları Yönet > Dışa Aktar) dışa aktarın.
Sonra şunu çalıştırın:
apidog run collection.json \
--environment environment.json \
--reporter-junit results.xml
GitHub Actions örneği
name: API Testleri
on: [push, pull_request]
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Apidog CLI Kurulumu
run: curl -sSf https://apidog.com/cli/install.sh | sh
- name: API testlerini çalıştır
run: |
apidog run ./tests/collection.json \
--environment ./tests/env.json \
--reporter-junit test-results.xml
- name: Test sonuçlarını yükle
uses: actions/upload-artifact@v4
if: always()
with:
name: api-test-results
path: test-results.xml
npm install yok, package.json yok, Node.js sürüm matrisi yok. İş daha hızlı çalışır ve bağımlılık yüzeyi daha küçüktür.
GitLab CI örneği
api-tests:
image: apidog/cli:latest
script:
- apidog run ./tests/collection.json
--environment ./tests/env.json
--reporter-junit test-results.xml
artifacts:
reports:
junit: test-results.xml
Seçenek 2: k6
k6, Grafana Labs'tan gelen ve aynı zamanda işlevsel API testini de yapan bir yük testi aracıdır. Bilmeye değer çünkü işlevsel kontrollerle birlikte performans testi için gerçekten mükemmeldir.
Neleri destekler?
- HTTP/1.1, HTTP/2, WebSocket, gRPC
- JavaScript test betikleri (ES6+)
- Performans iddiaları için eşikler
- InfluxDB, Prometheus, Datadog'a çıktı
Neleri desteklemez?
- Yerel Postman koleksiyon formatı. Postman koleksiyonlarını
postman-to-k6dönüştürücüsünü kullanarak k6 betiklerine dönüştürebilirsiniz, ancak çıktı genellikle manuel temizlik gerektirir, özellikle karmaşık betikler için. - Postman'ın
pm.*API'sini yerel olarak desteklemez. Dönüşüm katmanı onu taklit eder ancak eksiklikleri vardır.
Ne zaman k6'yı seçmeli?
Aynı pipeline'da işlevsel testi performans testiyle birleştirmeniz gerekiyorsa – örneğin, yük altında API doğruluğunu doğrulamak için – k6 geçiş maliyetine değer. Sadece işlevsel testler için Newman'ı değiştirmek istiyorsanız, Apidog kurulumu daha hızlıdır.
CI'da temel k6 kullanımı
# Kurulum (Linux)
sudo apt-get install k6
# Bir test betiği çalıştırın
k6 run api-tests.js
k6 CI, betiğinizdeki eşik tanımlarına göre geçiş/başarısızlık çıktısı verir. JUnit XML çıktısı k6-reporter paketi aracılığıyla mevcuttur.
Seçenek 3: Hurl
Hurl, Rust ile yazılmış açık kaynaklı bir HTTP test aracıdır. Hızlıdır, sıfır çalışma zamanı bağımlılığına sahiptir ve istekleri ve iddiaları tanımlamak için düz metin bir DSL kullanır.
Neleri destekler?
- HTTP/1.1 ve HTTP/2
- JSON, XPath ve regex iddiaları
- Değişkenler ve zincirleme istekler
- HTML, JUnit ve JSON çıktısı
Neleri desteklemez?
- Postman koleksiyon formatı. Hurl kendi
.hurldosya formatını kullanır. Otomatik dönüştürücü yoktur. - JavaScript test betikleri. İddialar bildirimseldir, programatik değildir.
Ne zaman Hurl'u seçmeli?
Testlerinizi Hurl'un DSL'sinde yeniden yazmaya istekliyseniz, çalışma zamanı olmayan oldukça küçük bir ikili elde edersiniz. İkili tek bir 10 MB'lık dosyadır. Hurl, Postman koleksiyon borcu taşımadığınız yeni projeler için güçlü bir seçenektir.
Temel Hurl test örneği
GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString
GitHub Actions'da Hurl
- name: Hurl Kurulumu
run: |
curl -LO https://github.com/Orange-OpenSource/hurl/releases/latest/download/hurl-x86_64-unknown-linux-gnu.tar.gz
tar -xf hurl-*.tar.gz
sudo mv hurl /usr/local/bin/
- name: API testlerini çalıştır
run: hurl --test tests/*.hurl
Üç seçeneği karşılaştırma
| Özellik | Apidog CLI | k6 | Hurl |
|---|---|---|---|
| Postman içe aktarma | Yerel | Dönüştürücü (kayıplı) | Hayır |
| npm bağımlılığı | Hayır | Hayır | Hayır |
| JavaScript betikleme | Evet (pm.* API) | Evet (ES6) | Hayır (yalnızca DSL) |
| Performans testi | Hayır | Evet | Hayır |
| İkili boyutu | ~50 MB | ~30 MB | ~10 MB |
| Ücretsiz çalıştırma sınırları | Yok | Yok | Yok |
| JUnit çıktısı | Evet | Eklenti aracılığıyla | Evet |
Newman'dan geçiş: pratik adımlar
Mevcut Newman tabanlı bir pipeline'ınız varsa, Apidog CLI'a geçiş yolu şöyledir:
Koleksiyonlarınızı dışa aktarın. Postman'da her bir koleksiyona sağ tıklayın ve v2.1 olarak dışa aktarın. Ortamlarınızı ayrı ayrı dışa aktarın.
Apidog CLI'ı yükleyin. CI yapılandırmanıza kurulum adımını ekleyin.
Newman komutunu değiştirin. Tipik bir Newman komutu şuna benzer:
newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
Apidog'daki karşılığı:
apidog run collection.json --environment environment.json --reporter-junit results.xml
Bayrak yapısı tasarım gereği benzerdir.
Betik uyumluluğunu kontrol edin. CI değişikliğini taahhüt etmeden önce koleksiyonunuzu Apidog CLI ile yerel olarak çalıştırın. Çoğu pm.* betiği değişiklik yapmadan çalışır. Harici modülleri yüklemek için pm.require kullanan betikler ayarlama gerektirebilir.
CI yapılandırmanızdan Node.js'i kaldırın. Newman, Node.js'in pipeline'ınızda görünmesinin tek nedeni ise, Node.js kurulum adımını ve npm install adımını tamamen kaldırabilirsiniz.
Sıkça Sorulan Sorular
Newman resmi olarak kullanımdan kaldırıldı mı?Hayır, 2026 başı itibarıyla Newman hala Postman tarafından bakımı yapılmaktadır. Ancak bakım hızı yavaştır ve birkaç açık sorun gerçek dünya kullanım durumlarını etkilemektedir. Yakın zamanda ortadan kalkmayacak, ancak üzerine yeni pipeline'lar kurmak artan risk taşır.
Apidog CLI bir Apidog hesabı gerektiriyor mu?Yerel olarak dışa aktarılan koleksiyonları çalıştırmak için hayır. Bir Apidog çalışma alanından koleksiyonları senkronize etmek için evet. Postman'dan geçiş yapıyorsanız, tamamen dışa aktarılan JSON dosyalarından çalıştırabilirsiniz.
Apidog CLI veri odaklı testleri çalıştırabilir mi?Evet. --iteration-data bayrağıyla bir CSV veya JSON veri dosyası geçirin. Bu, Newman'ın veri odaklı yineleme için -d bayrağına eşdeğerdir.
npm tabanlı çalıştırıcılarla tedarik zinciri riski nedir?CI sırasında npm'den çekilen herhangi bir paket potansiyel bir saldırı yüzeyidir. Güvenliği ihlal edilmiş paketler ortam değişkenlerini sızdırabilir; bu, bir CI bağlamında API anahtarlarını ve belirteçlerini içerir. HTTPS üzerinden indirilen ve bir sağlama toplamına sabitlenmiş bir ikili çalıştırıcı bu tür bir riski önler.
k6 gRPC testini destekliyor mu?Evet. k6, yerel gRPC desteğine sahiptir, bu da onu aynı test paketinde hem REST hem de gRPC'yi işleyen birkaç açık kaynaklı araçtan biri yapar. API yüzeyiniz gRPC uç noktalarını içeriyorsa, k6 değerlendirmeye değerdir.
Hurl kimlik doğrulama başlıklarını destekliyor mu?Evet. Hurl, Authorization, Bearer ve çerez tabanlı kimlik doğrulama dahil olmak üzere özel başlıkları destekler. Değişkenler, çalışma zamanında ortam değişkenlerinden sırları enjekte etmenize olanak tanır.
Newman'ın API testleri için varsayılan CI seçimi olma dönemi sona eriyor. Tedarik zinciri riskleri gerçek, ücretsiz katman sınırlamaları birçok ekip için dengeyi değiştirdi ve artık daha iyi alternatifler mevcut. Newman'sız bir pipeline'a geçiş kolaydır, özellikle mevcut Postman koleksiyonlarınızla Apidog CLI'a geçiyorsanız.
