Newman ve Postman rakip değildir. Aynı API test iş akışının iki farklı aşamasını çözerler: Postman ile istekleri tasarlar, testleri yazarsınız; Newman ile aynı koleksiyonları GUI olmadan terminalde, CI/CD içinde çalıştırırsınız. Kısa kural: Postman geliştirme ve hata ayıklama içindir, Newman otomasyon içindir.
Bu ayrımı doğru kurarsanız API testlerini hem geliştirici makinesinde hızlıca hazırlayabilir hem de her pull request, gece çalışması veya deploy sonrası kontrol için otomatik hale getirebilirsiniz. Aşağıda Postman ve Newman'ın rollerini, Newman'ın nasıl kurulacağını ve CI/CD işlem hattına nasıl ekleneceğini adım adım göreceksiniz.
Postman Nedir?
Postman grafiksel bir API platformudur. Masaüstü uygulaması üzerinden istekler oluşturur, bunları koleksiyonlar ve klasörler halinde düzenler, ortam değişkenleriyle baseUrl, token veya kullanıcı bilgisi gibi değerleri yönetirsiniz.
Postman'de her isteğin Tests sekmesine JavaScript tabanlı testler yazabilirsiniz. Örneğin:
pm.test("Durum kodu 200", function () {
pm.response.to.have.status(200);
});
pm.test("Toplam sipariş pozitif bir sayı", function () {
const body = pm.response.json();
pm.expect(body.total).to.be.a("number");
pm.expect(body.total).to.be.above(0);
});
Bu yaklaşım özellikle şu işler için uygundur:
- Yeni bir endpoint'i hızlıca denemek
- Header, body veya auth ayarlarında hata ayıklamak
- Yanıt yapısını incelemek
- Regresyon testleri için koleksiyon hazırlamak
- Takım içinde ortak API koleksiyonları paylaşmak
Postman interaktif kullanım için güçlüdür. Bir geliştirici isteği gönderir, yanıtı inceler, değişkenleri düzeltir ve saniyeler içinde tekrar dener. Bu iş akışı grafiksel arayüzden faydalanır. Daha ayrıntılı bir örnek için Postman ile API'ler nasıl test edilir kılavuzuna bakabilirsiniz.
Ancak Postman'in zayıf olduğu alan katılımsız çalıştırmadır. Bir CI sunucusu Postman uygulamasını açıp Collection Runner düğmesine tıklayamaz. Bu noktada Newman devreye girer.
Newman Nedir?
Newman, Postman'in resmi komut satırı koleksiyon çalıştırıcısıdır. Postman'de oluşturduğunuz koleksiyon JSON dosyasını alır, içindeki istekleri ve pm.test betiklerini terminalde çalıştırır.
Newman bir npm paketidir ve şu şekilde kurulabilir:
npm install -g newman
Bir koleksiyonu çalıştırmak için:
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json
Bu komut şunları yapar:
-
orders-api.postman_collection.jsondosyasındaki istekleri sırayla çalıştırır. -
staging.postman_environment.jsoniçindeki değişkenleri kullanır. - Her isteğin test betiklerini yürütür.
- Sonuçları terminalde özetler.
- Testlerden biri başarısız olursa sıfırdan farklı exit code döndürür.
Bu son madde CI/CD için kritiktir. CI sistemi exit code'u okuyabilir:
-
0: Testler geçti, işlem hattı devam eder. -
0dışı: Testlerden biri başarısız oldu, build başarısız sayılır.
Newman, Postman ile aynı yürütme motorunu kullandığı için Postman'de geçen bir koleksiyon Newman'da da aynı test mantığıyla çalışır. Ayrı bir test dili öğrenmeniz gerekmez.
Postman ve Newman Karşılaştırması
| Yön | Postman | Newman |
|---|---|---|
| Arayüz | Grafiksel masaüstü uygulaması | Komut satırı, UI yok |
| Birincil kullanım | Yazma, hata ayıklama, keşfetme | Otomatik, katılımsız yürütme |
| Nerede çalışır | Geliştirici makinesi | CI sunucusu, terminal, zamanlayıcı |
| Maliyet | Ücretsiz katman ve ücretli planlar | Açık kaynak, ücretsiz |
| Kurulum | Masaüstü yükleyici | npm paketi veya Docker imajı |
| Test betikleri | Uygulamada yazılır ve çalıştırılır | Aynı betikleri başsız çalıştırır |
| Raporlama | Uygulama içi sonuç paneli | Terminal çıktısı, JUnit, HTML raporlayıcıları |
| En iyi olduğu alan | İnteraktif geliştirme | Tekrarlanabilir otomasyon |
Aralarındaki köprü koleksiyon JSON dosyasıdır. Koleksiyonu Postman'de hazırlarsınız, Newman ile otomasyonda çalıştırırsınız.
Newman CI/CD'ye Nasıl Eklenir?
Temel akış her CI sağlayıcısında benzerdir:
- Postman koleksiyonunu dışa aktarın.
- Ortam dosyasını dışa aktarın.
- Bu JSON dosyalarını repoya ekleyin.
- CI işinde Newman'ı kurun.
-
newman runkomutunu çalıştırın. - Newman'ın exit code'una göre build'i başarılı veya başarısız sayın.
1. Koleksiyon ve ortam dosyalarını dışa aktarın
Postman'de:
- Koleksiyonunuzu seçin.
- Export seçeneğiyle JSON dosyası alın.
- Kullanacağınız environment için de export alın.
Örnek dosya yapısı:
.
├── postman
│ ├── orders-api.postman_collection.json
│ └── staging.postman_environment.json
└── src
2. Newman'ı yerelde deneyin
CI'a eklemeden önce komutu lokal terminalde çalıştırın:
newman run postman/orders-api.postman_collection.json \
--environment postman/staging.postman_environment.json
Başarılı çalışırsa CI'a taşımak daha güvenli olur.
3. GitHub Actions'a ekleyin
Örnek GitHub Actions adımı:
- name: API testlerini çalıştır
run: |
npm install -g newman
newman run postman/orders-api.postman_collection.json \
--environment postman/staging.postman_environment.json \
--reporters cli,junit \
--reporter-junit-export results.xml
JUnit raporu üretmek CI panolarında test sonuçlarını daha okunabilir hale getirir. --reporters cli,junit ile hem terminal çıktısı alırsınız hem de XML raporu üretirsiniz.
Daha kapsamlı örnekler için CI/CD'de API testlerini otomatikleştirme ve GitHub Actions ile API test otomasyonu rehberlerine bakabilirsiniz.
Faydalı Newman Komutları
Newman'ı sadece temel run komutuyla değil, CI için önemli bayraklarla kullanmak gerekir.
Belirli environment ile çalıştırma
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json
Bu, Postman'de aktif olan ortamı varsaymak yerine CI'da hangi değişkenlerin kullanılacağını açıkça belirtir.
Veri odaklı test çalıştırma
CSV veya JSON dosyasındaki her satır için koleksiyonu tekrar çalıştırabilirsiniz:
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json \
--iteration-data test-data.csv
Örnek test-data.csv:
orderId,expectedStatus
1001,200
1002,200
9999,404
Postman testlerinde bu değerlere değişken olarak erişebilirsiniz:
pm.test("Beklenen durum kodu döner", function () {
pm.response.to.have.status(Number(pm.iterationData.get("expectedStatus")));
});
İlk hatada durdurma
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json \
--bail
--bail, ilk hata sonrası çalışmayı durdurur. Hızlı geri bildirim istediğiniz pull request kontrollerinde kullanışlıdır.
İstek zaman aşımı belirleme
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json \
--timeout-request 10000
Bu örnekte tek bir isteğin en fazla 10 saniye sürmesine izin verilir. Yanıt vermeyen servisler nedeniyle CI job'ının takılı kalmasını önler.
İstekler arasında bekleme ekleme
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json \
--delay-request 500
--delay-request 500, istekler arasında 500 ms bekler. Rate limit uygulayan API'lerde faydalıdır.
Sadece belirli klasörü çalıştırma
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json \
--folder "Smoke Tests"
Bu sayede aynı koleksiyon içinde küçük bir smoke test setini pull request'lerde, tam regresyon setini gece çalışmasında kullanabilirsiniz.
Docker ile Newman Çalıştırma
Node.js kurmak istemiyorsanız Newman'ı Docker ile çalıştırabilirsiniz:
docker run --rm \
-v "$PWD/postman:/etc/newman" \
postman/newman run /etc/newman/orders-api.postman_collection.json \
--environment /etc/newman/staging.postman_environment.json
Bu yaklaşım özellikle CI ortamlarında kullanışlıdır çünkü build makinesine Node.js veya global npm paketi kurmanız gerekmez.
Postman'den Newman'a Geçerken Yaygın Hatalar
1. Environment dosyasını CI'a eklememek
Postman'de çalışan bir istek, aktif environment sayesinde değişkenleri buluyor olabilir. Newman'da bu environment dosyasını açıkça vermeniz gerekir:
newman run collection.json --environment staging.postman_environment.json
Aksi halde {{baseUrl}}, {{token}} gibi değerler çözümlenmez.
2. Gizli bilgileri repoya koymak
Environment dosyaları token, API key veya şifre içerebilir. Bunları doğrudan repoya eklemek yerine CI secret'larıyla yönetmek daha güvenlidir.
Örnek:
newman run collection.json \
--env-var "baseUrl=$BASE_URL" \
--env-var "token=$API_TOKEN"
3. Postman Cloud durumuna güvenmek
CI, Postman masaüstü oturumunuzu veya cloud senkronizasyon durumunuzu bilmez. CI sadece verdiğiniz JSON dosyalarını çalıştırır. Bu yüzden dışa aktardığınız koleksiyonun gerçekten güncel olduğundan emin olun.
4. Koleksiyon JSON'unu güncel tutmamak
Postman'de koleksiyonu düzenleyip repodaki JSON dosyasını güncellemezseniz CI eski testleri çalıştırmaya devam eder.
Pratik çözüm:
- Koleksiyon değiştiğinde export işlemini pull request'in parçası yapın.
- Koleksiyon dosyasını kod değişikliğiyle birlikte review edin.
- CI'da kullanılan dosyanın kaynağını net tutun.
5. Lokal ve CI ortamlarını farklı yapılandırmak
Lokal makinede çalışan test CI'da başarısız oluyorsa genellikle fark şuradadır:
- Farklı
baseUrl - Eksik token
- Farklı test datası
- Network erişim problemi
- Zaman aşımı değeri
Bu yüzden CI komutunu lokal terminalde mümkün olduğunca aynı parametrelerle test edin.
Ne Zaman Postman, Ne Zaman Newman Kullanmalı?
Postman'i şu durumlarda kullanın:
- Yeni API endpoint'i geliştirirken
- Request body veya header denemeleri yaparken
- Auth problemlerini debug ederken
- Test betiklerini yazıp doğrularken
- Koleksiyon yapısını düzenlerken
Newman'ı şu durumlarda kullanın:
- Pull request açıldığında API testleri çalıştırmak için
- Deploy sonrası smoke test yapmak için
- Gece regresyon testleri çalıştırmak için
- Test sonuçlarını CI raporlarına aktarmak için
- Script veya cron job içinde koleksiyon yürütmek için
Pratik ayrım şudur: İnsan yazarken Postman, makine çalıştırırken Newman.
Newman kullanmadan CI'da Postman koleksiyonlarını çalıştırmaya yönelik diğer yaklaşımlar için Newman olmadan CI'da Postman koleksiyonlarını çalıştırma rehberine bakabilirsiniz.
Birleşik Alternatif: Apidog
Postman ve Newman birlikte güçlü bir akış sağlar, ancak iki ayrı parçayı yönetmeniz gerekir: Postman'de koleksiyon hazırlamak, JSON olarak dışa aktarmak, repoda güncel tutmak ve Newman ile çalıştırmak.
Apidog, bu süreci tek platformda birleştirir. Aynı uygulama içinde API tasarlayabilir, isteklerde hata ayıklayabilir, görsel doğrulamalarla otomatik test senaryoları oluşturabilir ve bu senaryoları yerleşik komut satırı çalıştırıcısıyla CI/CD içinde çalıştırabilirsiniz.
Bu yaklaşımda test tanımları ve çalıştırma mekanizması aynı platformda bulunduğu için dışa aktarma ve senkronizasyon yükü azalır. Apidog ayrıca aynı çalışma alanında API tasarımı, mock server ve performans testi gibi iş akışlarını da kapsar.
Apidog'u indirebilir ve test özelliklerini ücretsiz kullanabilirsiniz. Alternatif araçları karşılaştırmak isterseniz API testi için en iyi Postman alternatifleri listesine göz atabilirsiniz.
Sıkça Sorulan Sorular
Newman, Postman'in yerine geçer mi?
Hayır. Newman koleksiyon oluşturmaz veya düzenlemez. Sadece var olan Postman koleksiyonlarını terminalde çalıştırır. Koleksiyon yazma ve hata ayıklama için Postman veya benzer bir araca ihtiyacınız vardır.
Newman ücretli mi?
Hayır. Newman açık kaynaklı ve ücretsizdir. npm paketi olarak dağıtılır. Postman'in ücretsiz ve ücretli planları vardır, ancak Newman'ın kendisi ücretsizdir.
Postman testlerim Newman'da aynı şekilde çalışır mı?
Evet. Newman, Postman ile aynı yürütme motorunu kullanır. pm.test onaylamaları, request akışı ve test betikleri aynı mantıkla çalışır. Yine de CI'a almadan önce koleksiyonu lokal terminalde Newman ile denemek iyi bir pratiktir.
Newman test hatalarını nasıl bildirir?
Newman terminale özet çıktı yazar ve herhangi bir test başarısız olduğunda sıfırdan farklı exit code ile çıkar. CI sistemi bu exit code'u okuyarak build'i başarısız sayabilir. Ayrıca JUnit XML ve HTML gibi raporlayıcılarla sonuçları CI panolarına aktarabilirsiniz.
Node.js kurmadan Newman çalıştırabilir miyim?
Evet. Newman doğrudan npm paketi olduğu için normal kurulumda Node.js gerekir. Ancak Node.js kurmak istemiyorsanız postman/newman Docker imajını kullanabilirsiniz. Bu yöntem CI ortamlarında sık tercih edilir.
Top comments (0)