DEV Community

Cover image for Newman ve Postman Arasındaki Fark Nedir?
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Newman ve Postman Arasındaki Fark Nedir?

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.

Apidog'u bugün deneyin

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);
});
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Bir koleksiyonu çalıştırmak için:

newman run orders-api.postman_collection.json \
  --environment staging.postman_environment.json
Enter fullscreen mode Exit fullscreen mode

Bu komut şunları yapar:

  1. orders-api.postman_collection.json dosyasındaki istekleri sırayla çalıştırır.
  2. staging.postman_environment.json içindeki değişkenleri kullanır.
  3. Her isteğin test betiklerini yürütür.
  4. Sonuçları terminalde özetler.
  5. 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.
  • 0 dışı: 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:

  1. Postman koleksiyonunu dışa aktarın.
  2. Ortam dosyasını dışa aktarın.
  3. Bu JSON dosyalarını repoya ekleyin.
  4. CI işinde Newman'ı kurun.
  5. newman run komutunu çalıştırın.
  6. 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Örnek test-data.csv:

orderId,expectedStatus
1001,200
1002,200
9999,404
Enter fullscreen mode Exit fullscreen mode

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")));
});
Enter fullscreen mode Exit fullscreen mode

İlk hatada durdurma

newman run orders-api.postman_collection.json \
  --environment staging.postman_environment.json \
  --bail
Enter fullscreen mode Exit fullscreen mode

--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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

--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"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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)