TL;DR
Newman, runner CLI resmi Postman, memerlukan npm dan Node.js dalam pipeline CI Anda. Hal ini memperkenalkan risiko rantai pasok, menambah overhead manajemen dependensi, dan pada tingkatan gratis Postman, eksekusi koleksi melalui API kini dibatasi laju. Panduan ini mencakup tiga alternatif untuk menjalankan pengujian API di CI tanpa Newman: runner CLI Apidog, k6, dan Hurl. Apidog adalah jalur paling langsung jika Anda memiliki koleksi Postman yang sudah ada karena mengimpornya secara native dan tidak memiliki batasan per eksekusi.
Pendahuluan
Newman adalah ide yang bagus. Alat CLI yang menjalankan koleksi Postman di pipeline CI membuat pengujian API menjadi portabel dan dapat diotomatisasi. Ini dikirimkan dengan kepercayaan merek Postman, terintegrasi dengan GitHub Actions melalui tindakan komunitas yang populer, dan berfungsi dengan cukup baik sehingga banyak tim membangun seluruh strategi otomatisasi pengujian API mereka di sekitarnya.
Kemudian tiga masalah muncul.
Pertama, Newman adalah paket npm. Setiap pipeline yang menggunakannya menarik dari registri npm pada saat build. Kompromi ua-parser-js tahun 2021 dan insiden node-ipc tahun 2022 menunjukkan bahwa serangan rantai pasok npm bukanlah teoretis. Tim keamanan mulai bertanya mengapa lapisan pengujian API memerlukan npm sama sekali.
Kedua, Postman mulai membatasi eksekusi koleksi pada tingkatan gratis dan berbayar dasar. Tim yang mengandalkan menjalankan koleksi melalui Postman API sebagai bagian dari CI menghadapi kuota dan harus meningkatkan paket atau mendesain ulang pipeline mereka.
Ketiga, kecepatan pemeliharaan Newman melambat. Masalah tetap terbuka di GitHub selama berbulan-bulan. Beberapa API scripting Postman yang lebih baru memiliki dukungan yang tidak konsisten di Newman.
Hasilnya: pengembang yang membangun pipeline CI di Newman kini mencari alternatif. Berikut adalah apa yang tersedia.
Opsi 1: Apidog CLI (direkomendasikan untuk pengguna koleksi Postman)
Runner CLI Apidog adalah pengganti fungsional terdekat untuk Newman jika Anda sudah berinvestasi pada koleksi Postman.
Apa yang didukung
- Format Postman Collection v2 dan v2.1
- Lingkungan Postman (ekspor JSON)
pm.test,pm.expect,pm.environment.set,pm.collectionVariables.set- Skrip pre-request dan post-request
- Pengujian berbasis data melalui file data CSV dan JSON
- Output JUnit XML dan JSON untuk pelaporan CI
Tidak memerlukan npm. Apidog CLI didistribusikan sebagai biner mandiri. Anda mengunduhnya sekali, menambahkannya ke PATH Anda, dan ia berjalan.
Tidak ada batasan per eksekusi. Apidog tidak membatasi eksekusi koleksi pada paket apa pun. Pipeline yang menjalankan 500 koleksi per hari bekerja sama dengan yang menjalankan 5.
Instalasi
Unduh biner CLI untuk platform Anda dari apidog.com/cli atau gunakan penginstal shell:
# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh | sh
# Verifikasi
apidog --version
Untuk runner CI berbasis Docker, Apidog menyediakan citra resmi:
FROM apidog/cli:latest
Menjalankan koleksi Postman
Ekspor koleksi Anda dari Postman (File > Export > Collection v2.1) dan lingkungan Anda (Manage Environments > Export).
Kemudian jalankan:
apidog run collection.json \
--environment environment.json \
--reporter-junit results.xml
Contoh GitHub Actions
name: API Tests
on: [push, pull_request]
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Apidog CLI
run: curl -sSf https://apidog.com/cli/install.sh | sh
- name: Run API tests
run: |
apidog run ./tests/collection.json \
--environment ./tests/env.json \
--reporter-junit test-results.xml
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: api-test-results
path: test-results.xml
Tidak ada npm install, tidak ada package.json, tidak ada matriks versi Node.js. Pekerjaan berjalan lebih cepat dan permukaan dependensi lebih kecil.
Contoh GitLab CI
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
Opsi 2: k6
k6 adalah alat pengujian beban dari Grafana Labs yang juga menangani pengujian API fungsional. Penting untuk diketahui karena sangat baik untuk pengujian kinerja bersamaan dengan pemeriksaan fungsional.
Apa yang didukung
- HTTP/1.1, HTTP/2, WebSocket, gRPC
- Skrip pengujian JavaScript (ES6+)
- Ambang batas untuk penegasan kinerja
- Output ke InfluxDB, Prometheus, Datadog
Apa yang tidak didukung
- Format koleksi Postman native. Anda dapat mengonversi koleksi Postman ke skrip k6 menggunakan konverter
postman-to-k6, tetapi outputnya sering memerlukan pembersihan manual, terutama untuk skrip yang kompleks. - API
pm.*Postman secara native. Lapisan konversi mengemulasikannya tetapi dengan celah.
Kapan memilih k6
Jika Anda perlu menggabungkan pengujian fungsional dengan pengujian kinerja dalam pipeline yang sama – misalnya, memverifikasi kebenaran API di bawah beban – k6 layak untuk biaya migrasi. Jika Anda hanya ingin mengganti Newman untuk pengujian fungsional, Apidog lebih cepat untuk diatur.
Penggunaan dasar k6 di CI
# Instal (Linux)
sudo apt-get install k6
# Jalankan skrip pengujian
k6 run api-tests.js
Output CI k6 lulus/gagal berdasarkan definisi ambang batas dalam skrip Anda. Output JUnit XML tersedia melalui paket k6-reporter.
Opsi 3: Hurl
Hurl adalah alat pengujian HTTP sumber terbuka yang ditulis dalam Rust. Cepat, tidak memiliki dependensi runtime, dan menggunakan DSL teks biasa untuk mendefinisikan permintaan dan penegasan.
Apa yang didukung
- HTTP/1.1 dan HTTP/2
- Penegasan JSON, XPath, dan regex
- Variabel dan permintaan berantai
- Output HTML, JUnit, dan JSON
Apa yang tidak didukung
- Format koleksi Postman. Hurl menggunakan format file
.hurlsendiri. Tidak ada konverter otomatis. - Skrip pengujian JavaScript. Penegasan bersifat deklaratif, bukan programatik.
Kapan memilih Hurl
Jika Anda bersedia menulis ulang tes Anda dalam DSL Hurl, Anda mendapatkan biner yang sangat kecil tanpa runtime. Biner tersebut adalah satu file berukuran 10 MB. Hurl adalah pilihan yang kuat untuk proyek baru di mana Anda tidak menanggung "hutang" koleksi Postman.
Contoh pengujian Hurl dasar
GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString
Hurl di GitHub Actions
- name: Install Hurl
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: Run API tests
run: hurl --test tests/*.hurl
Membandingkan ketiga opsi
| Fitur | Apidog CLI | k6 | Hurl |
|---|---|---|---|
| Impor Postman | Native | Konverter (lossy) | Tidak |
| Dependensi npm | Tidak | Tidak | Tidak |
| Skrip JavaScript | Ya (API pm.*) | Ya (ES6) | Tidak (hanya DSL) |
| Pengujian kinerja | Tidak | Ya | Tidak |
| Ukuran biner | ~50 MB | ~30 MB | ~10 MB |
| Batasan eksekusi gratis | Tidak ada | Tidak ada | Tidak ada |
| Output JUnit | Ya | Via plugin | Ya |
Migrasi dari Newman: langkah-langkah praktis
Jika Anda memiliki pipeline berbasis Newman yang sudah ada, berikut adalah jalur migrasi ke Apidog CLI:
Ekspor koleksi Anda. Di Postman, klik kanan setiap koleksi dan ekspor sebagai v2.1. Ekspor lingkungan Anda secara terpisah.
Instal Apidog CLI. Tambahkan langkah instal ke konfigurasi CI Anda.
Ganti perintah Newman. Perintah Newman yang umum terlihat seperti:
newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
Yang setara dengan Apidog:
apidog run collection.json --environment environment.json --reporter-junit results.xml
Struktur flag serupa berdasarkan desain.
Periksa kompatibilitas skrip. Jalankan koleksi Anda secara lokal dengan Apidog CLI sebelum mengkomit perubahan CI. Sebagian besar skrip pm.* berjalan tanpa modifikasi. Skrip yang menggunakan pm.require untuk memuat modul eksternal memerlukan penyesuaian.
Hapus Node.js dari konfigurasi CI Anda. Jika Newman adalah satu-satunya alasan Node.js muncul di pipeline Anda, Anda dapat menghapus langkah pengaturan Node.js dan langkah npm install sepenuhnya.
FAQ
Apakah Newman resmi dihentikan?Tidak, hingga awal 2026 Newman masih dikelola oleh Postman. Tetapi kecepatan pemeliharaan lambat dan beberapa masalah terbuka memengaruhi kasus penggunaan dunia nyata. Ini tidak akan hilang dalam waktu dekat, tetapi membangun pipeline baru di atasnya membawa risiko yang semakin besar.
Apakah Apidog CLI memerlukan akun Apidog?Untuk menjalankan koleksi yang diekspor secara lokal, tidak. Untuk menyinkronkan koleksi dari ruang kerja Apidog, ya. Jika Anda bermigrasi dari Postman, Anda dapat berjalan murni dari file JSON yang diekspor.
Dapatkah Apidog CLI menjalankan pengujian berbasis data?Ya. Teruskan file data CSV atau JSON dengan flag --iteration-data. Ini setara dengan flag -d Newman untuk iterasi berbasis data.
Apa risiko rantai pasok dengan runner berbasis npm?Setiap paket yang ditarik dari npm pada waktu CI adalah permukaan serangan potensial. Paket yang disusupi dapat mengeksfiltrasi variabel lingkungan, yang dalam konteks CI mencakup kunci API dan token. Runner biner yang diunduh melalui HTTPS dan dipatok ke checksum menghindari kelas risiko ini.
Apakah k6 mendukung pengujian gRPC?Ya. k6 memiliki dukungan gRPC native, yang menjadikannya salah satu dari sedikit alat sumber terbuka yang menangani REST dan gRPC dalam suite pengujian yang sama. Jika permukaan API Anda mencakup endpoint gRPC, k6 layak dievaluasi.
Apakah Hurl mendukung header autentikasi?Ya. Hurl mendukung header kustom, termasuk Authorization, Bearer, dan autentikasi berbasis cookie. Variabel memungkinkan Anda menyuntikkan rahasia dari variabel lingkungan saat runtime.
Era Newman sebagai pilihan CI default untuk pengujian API akan berakhir. Risiko rantai pasok itu nyata, batasan tingkatan gratis telah mengubah perhitungan untuk banyak tim, dan alternatif yang lebih baik kini tersedia. Migrasi ke pipeline bebas Newman sangat mudah, terutama jika Anda beralih ke Apidog CLI dengan koleksi Postman Anda yang sudah ada.
