Newman dan Postman bukanlah pesaing. Keduanya adalah dua bagian dari satu alur kerja. Postman adalah aplikasi desktop tempat Anda merancang permintaan, menulis pengujian, dan menjelajahi API secara manual. Newman adalah alat baris perintah yang mengambil koleksi yang Anda buat di Postman dan menjalankannya tanpa GUI. Jika Postman adalah bengkelnya, Newman adalah mesin yang menjalankan pekerjaan Anda yang sudah selesai sesuai jadwal.
Kebingungan biasanya muncul dari pertanyaan "mana yang harus saya gunakan?" Jawaban jujurnya adalah keduanya, pada tahapan yang berbeda. Anda membuat di Postman karena antarmuka grafis membuatnya cepat. Anda mengeksekusi di Newman karena pipeline tidak dapat mengklik tombol. Artikel ini menjelaskan hubungan tersebut secara tepat, menunjukkan tempat masing-masing, dan memandu Anda memasukkan Newman ke dalam pipeline CI/CD.
Apa itu Postman
Postman adalah platform API grafis. Anda menginstalnya sebagai aplikasi desktop, membuat permintaan, mengaturnya ke dalam koleksi dan folder, serta melampirkan lingkungan yang menyimpan variabel seperti URL dasar dan token. Setelah setiap respons, Postman menjalankan skrip pengujian JavaScript yang Anda tulis di tab Tests permintaan.
Skrip pengujian Postman memeriksa respons:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Order total is a positive number", function () {
const body = pm.response.json();
pm.expect(body.total).to.be.a("number");
pm.expect(body.total).to.be.above(0);
});
Postman dibuat untuk pekerjaan interaktif. Seorang pengembang yang men-debug endpoint baru mengirimkan permintaan, memeriksa respons, mengubah header, dan berulang dalam hitungan detik. Seorang insinyur QA mengubah permintaan tersebut menjadi rangkaian regresi yang tersimpan. Tim berbagi ruang kerja sehingga setiap orang bekerja dari koleksi yang sama. Semua itu mendapat manfaat dari antarmuka visual. Panduan kami tentang cara menguji API dengan Postman membahas alur kerja tersebut secara mendalam.
Apa yang tidak dibangun untuk Postman adalah eksekusi tanpa pengawasan. Menjalankan sebuah suite berarti membuka aplikasi dan mengklik Collection Runner. Itu baik-baik saja untuk seseorang di meja. Itu tidak berguna untuk server build.
Apa itu Newman
Newman adalah *collection runner* baris perintah resmi Postman. Ini adalah paket npm *open-source*, gratis untuk digunakan, yang mengeksekusi file koleksi yang persis sama dengan yang dihasilkan Postman. Anda mengekspor koleksi sebagai file JSON, menyerahkannya ke Newman, dan Newman menjalankan setiap permintaan dan setiap skrip pengujian, lalu melaporkan hasilnya ke terminal Anda.
Instal dengan npm:
npm install -g newman
Jalankan koleksi:
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json
Newman menjalankan setiap permintaan, mengeksekusi *assertion* pm.test yang sama seperti Postman, dan mencetak ringkasan. Detail kuncinya adalah Newman menggunakan mesin eksekusi yang sama dengan Postman, sehingga koleksi yang berhasil di GUI akan berperilaku identik pada baris perintah. Tidak ada penulisan ulang dan tidak ada bahasa pengujian terpisah.
Newman juga keluar dengan kode status bukan nol ketika ada pengujian yang gagal. Perilaku tunggal itulah yang membuatnya berharga untuk otomatisasi: sistem *build* membaca kode keluar itu dan menggagalkan *build* karena *assertion* yang rusak. Eksekusi yang berhasil keluar nol dan *pipeline* berlanjut.
Perbandingan Sisi-sisi
| Aspek | Postman | Newman |
|---|---|---|
| Antarmuka | Aplikasi desktop grafis | Baris perintah, tanpa UI |
| Penggunaan utama | Pembuatan, debugging, eksplorasi | Eksekusi otomatis, tanpa pengawasan |
| Tempat berjalan | Mesin pengembang | Server CI, terminal, penjadwal |
| Biaya | Tingkat gratis ditambah paket berbayar | Open source, sepenuhnya gratis |
| Instalasi | Installer desktop | Paket npm |
| Skrip pengujian | Ditulis dan dijalankan di aplikasi | Menjalankan skrip yang sama secara headless |
| Pelaporan | Panel hasil di aplikasi | Output terminal ditambah plugin reporter |
| Terbaik dalam | Iterasi interaktif | Eksekusi yang berulang dan dapat diskrip |
File JSON koleksi adalah jembatan di antara keduanya. Anda membangunnya sekali di Postman, dan Newman menjalankannya selamanya dalam otomatisasi.
Bagaimana Newman masuk ke CI/CD
Newman ada terutama untuk memasukkan pengujian API ke dalam integrasi berkelanjutan. Pola ini konsisten di seluruh penyedia. Anda melakukan *commit* file koleksi dan lingkungan yang diekspor ke repositori Anda, menginstal Newman di *pipeline*, menjalankannya, dan membiarkan kode keluar menggerbang *build*.
Berikut adalah alur kerja sebagai langkah-langkah bernomor:
- Ekspor dari Postman. Di Postman, ekspor koleksi dan lingkungannya sebagai file JSON.
- Komit ke repo. Simpan bersama kode Anda sehingga diberi versi bersama API.
- Instal Newman di pipeline. Tambahkan
npm install -g newmanke *job* CI, atau gunakan *image* Dockerpostman/newman. - Jalankan koleksi. Panggil
newman rundengan file koleksi dan lingkungan. - Gerbang berdasarkan kode keluar. Jika ada pengujian yang gagal, Newman keluar dengan nilai bukan nol dan penyedia CI menandai *build* sebagai gagal.
*Step* GitHub Actions terlihat seperti ini:
- name: Run API tests
run: |
npm install -g newman
newman run orders-api.postman_collection.json \
--environment staging.postman_environment.json \
--reporters cli,junit \
--reporter-junit-export results.xml
Flag --reporters patut diketahui. Newman dilengkapi dengan reporter bawaan untuk CLI dan JUnit XML, dan reporter komunitas menambahkan output HTML dan lainnya. JUnit XML khususnya memungkinkan *dashboard* CI menampilkan hasil pengujian secara native. Untuk panduan lengkap, lihat panduan kami tentang mengotomatiskan pengujian API di CI/CD dan kekhususan otomatisasi pengujian API dengan GitHub Actions.
Opsi Baris Perintah Newman yang Berguna
Newman memiliki serangkaian *flag* yang menangani sisi-sisi kasar eksekusi otomatis. Mengetahui beberapa di antaranya membuat perbedaan antara *job* yang rapuh dan yang dapat diandalkan.
Flag --iteration-data mengarahkan Newman ke file CSV atau JSON dan menjalankan seluruh koleksi sekali per baris, mengganti nilai baris sebagai variabel. Ini adalah cara Anda menggerakkan *data* eksekusi Newman: satu koleksi, banyak masukan. Flag --iteration-count hanya mengulang koleksi sejumlah kali yang ditentukan.
Flag --bail memberi tahu Newman untuk berhenti pada kegagalan pertama alih-alih menjalankan sisa koleksi. Dalam *pipeline* umpan balik cepat, itulah yang sering Anda inginkan, karena satu permintaan yang rusak biasanya berarti *build* sudah akan gagal. Flag --timeout-request membatasi berapa lama satu permintaan dapat berlangsung, yang melindungi *job* agar tidak menggantung pada layanan yang tidak responsif.
Flag --delay-request menyisipkan jeda di antara permintaan, berguna ketika API memberlakukan batasan *rate*. Dan --folder memungkinkan Anda hanya menjalankan folder bernama di dalam koleksi, sehingga *job smoke-test* dapat menjalankan subset kecil sementara *job regression* penuh menjalankan semuanya. Tidak ada opsi ini yang ada di Collection Runner GUI Postman dalam bentuk yang sama yang dapat diskrip, dan secara bersama-sama itulah mengapa Newman adalah pilihan praktis untuk eksekusi tanpa pengawasan.
Kesalahan Umum Saat Beralih dari Postman ke Newman
Beberapa masalah muncul berulang kali ketika tim pertama kali memindahkan koleksi dari GUI ke Newman. Yang paling umum adalah nilai *hardcoded*. Permintaan yang berhasil di Postman karena variabel kebetulan diatur di lingkungan aktif akan gagal di Newman jika file lingkungan tersebut tidak dilewatkan dengan --environment. Selalu ekspor dan sediakan lingkungan secara eksplisit.
Yang kedua adalah bergantung pada *cloud* Postman. Koleksi yang mereferensikan variabel yang disinkronkan *cloud* atau menggunakan fitur yang terikat pada sesi Postman yang *login* mungkin tidak berperilaku sama saat dijalankan dari file JSON biasa. Uji file yang diekspor secara lokal dengan Newman sebelum mempercayainya di CI.
Yang ketiga adalah melupakan bahwa file yang diekspor menjadi usang. Koleksi JSON di repositori Anda adalah *snapshot*. Jika seseorang mengedit koleksi di Postman dan tidak mengekspor ulang, *pipeline* terus menjalankan versi lama. Tim mengatasi ini dengan disiplin, dengan memperlakukan ekspor sebagai *commit* yang disengaja, atau dengan beralih ke alat di mana definisi pengujian dan *runner* adalah hal yang sama.
Kapan Menggunakan Masing-masing
Gunakan Postman ketika manusia yang melakukan pekerjaan. Merancang API baru, men-debug panggilan yang gagal, menjelajahi layanan pihak ketiga, membangun dan menyempurnakan *test suite*: semua ini bersifat interaktif dan berada di GUI.
Gunakan Newman ketika tidak ada manusia yang hadir. Menjalankan *suite* pada setiap *pull request*, pada jadwal malam hari, atau sebagai *smoke test* pasca-deployment: semua ini membutuhkan alat yang berjalan dari skrip dan melaporkan melalui kode keluar.
Dalam praktiknya, batasannya adalah "pembuatan versus eksekusi". Anda tidak akan memilih satu di atas yang lain. Anda akan menggunakan Postman untuk membuat dan Newman untuk mengotomatiskan, dan file koleksi membawa pekerjaan Anda di antara keduanya. Jika Anda lebih suka tidak memelihara *runner* terpisah sama sekali, panduan kami tentang menjalankan koleksi Postman di CI tanpa Newman mencakup opsi lain.
Alternatif Terpadu: Apidog
Memelihara pengaturan Postman-plus-Newman berarti mengekspor koleksi, menjaga file JSON tetap sinkron, dan mengelola *runner* terpisah. Apidog menggabungkan itu menjadi satu platform. Anda merancang API, men-debug permintaan, dan membangun skenario pengujian otomatis dengan *assertion* visual di aplikasi yang sama, lalu menjalankan skenario tersebut di CI/CD dengan *command-line runner* bawaan. Tidak ada langkah ekspor-dan-sinkronisasi karena definisi pengujian dan mesin eksekusi hidup bersama.
Apidog juga mencakup desain API, *mock server*, dan pengujian kinerja di ruang kerja yang sama, sehingga pengujian fungsional yang Anda buat adalah yang sama dengan yang dijalankan *pipeline* Anda. Anda dapat mengunduh Apidog dan menggunakan fitur pengujiannya secara gratis. Untuk perbandingan alat di bidang ini, lihat daftar kami tentang alternatif Postman terbaik untuk pengujian API.
Pertanyaan yang Sering Diajukan
Apakah Newman pengganti Postman?
Tidak. Newman tidak dapat membuat atau mengedit koleksi; ia hanya menjalankannya. Anda tetap membutuhkan Postman, atau alat lain, untuk membuat koleksi dan menulis skrip pengujian. Tugas Newman adalah mengeksekusi pekerjaan yang sudah selesai itu secara *headless*. Keduanya saling melengkapi, bukan saling menggantikan.
Apakah Newman berbayar?
Tidak. Newman adalah *open source* dan sepenuhnya gratis. Ini didistribusikan sebagai paket npm. Postman memiliki tingkat gratis ditambah paket berbayar untuk tim yang lebih besar, tetapi Newman sendiri tidak memiliki biaya terlepas dari bagaimana Anda menggunakannya.
Apakah pengujian Postman saya akan berperilaku sama di Newman?
Ya. Newman menggunakan mesin eksekusi yang sama dengan Postman, sehingga *assertion* pm.test dan logika permintaan berjalan identik. Koleksi yang berhasil di Postman Collection Runner akan menghasilkan hasil yang sama di Newman, itulah yang membuatnya aman untuk CI.
Bagaimana Newman melaporkan kegagalan pengujian?
Newman mencetak ringkasan ke terminal dan keluar dengan kode status bukan nol ketika ada pengujian yang gagal. Kode keluar itulah cara sistem CI mendeteksi kegagalan. Newman juga mendukung *reporter*, termasuk JUnit XML dan HTML, sehingga hasilnya dapat mengisi *dashboard* dan laporan *build*.
Bisakah saya menjalankan Newman tanpa menginstal Node.js?
Newman adalah paket npm, jadi instalasi langsung membutuhkan Node.js. Untuk menghindarinya, gunakan *image* Docker resmi postman/newman, yang menggabungkan semuanya. Pendekatan Docker umum di lingkungan CI di mana Anda tidak ingin mengelola *runtime* Node.js dalam *build job*.
