Sebagian besar tutorial pengujian API mengarahkan Anda ke GUI. Tetapi jika Anda terbiasa dengan terminal, menjalankan pengujian di CI, atau menginginkan alat yang kode sumbernya bisa Anda baca, baris perintah adalah tempat pengujian API menjadi menarik. Alat CLI sumber terbuka memberi Anda sesuatu yang tidak bisa diberikan produk yang dihosting: lisensi yang dapat Anda audit, biner yang dapat Anda-host sendiri, dan berkas konfigurasi yang dapat Anda masukkan ke repositori bersama kode Anda.
Ini adalah pertanyaan yang berbeda dari "alat mana yang tercepat" atau "biner mana yang terkecil." Di sini fokusnya adalah pada perizinan dan kontrol. Bisakah Anda menjalankannya di dalam jaringan Anda sendiri tanpa akun? Apakah kode sumbernya ada di GitHub di bawah lisensi yang disetujui OSI? Akankah terus berfungsi jika vendor mengubah harga kuartal berikutnya? Itulah pertanyaan yang dijawab oleh daftar ini.
Di bawah ini adalah delapan alat CLI gratis, tersedia sumber, untuk menguji API REST, GraphQL, dan HTTP, masing-masing dengan lisensi yang tepat, perintah instalasi yang nyata, dan satu perintah yang menunjukkan cara kerjanya. Jika Anda menginginkan survei yang lebih luas yang mencakup alat yang dihosting, lihat rangkuman alat pengujian API gratis terbaik. Untuk pendekatan yang murni berfokus pada terminal untuk mengakses endpoint secara manual, panduan alternatif curl untuk pengujian API REST mencakup sisi interaktifnya.
Apa yang membuat alat CLI "sumber terbuka" untuk pengujian API
Banyak alat yang gratis untuk diunduh. Itu tidak sama dengan sumber terbuka. Untuk daftar ini, sebuah alat memenuhi syarat berdasarkan tiga poin:
- Lisensi yang nyata. Kode sumber bersifat publik di bawah lisensi yang disetujui OSI (MIT, Apache-2.0, MPL-2.0, AGPL-3.0, BSD). Anda dapat membacanya, mem-fork-nya, dan mengetahui apa yang boleh Anda lakukan.
- Dapat di-host sendiri, tanpa akun. Anda dapat menjalankan keseluruhan sistem di mesin Anda sendiri atau runner CI tanpa perlu mendaftar apa pun. Tidak ada biaya kursi, tidak ada persyaratan "phone-home".
- Terawat dan dapat diperiksa. Repositori ada di GitHub dengan riwayat komit dan isu yang terlihat, sehingga Anda dapat menilai apakah proyek tersebut aktif sebelum membangun pipeline di atasnya.
Setiap alat di bawah ini memenuhi dua poin pertama. Saya telah menandai yang tidak lagi memenuhi poin ketiga. Pilihan lisensi lebih penting daripada yang terlihat: AGPL-3.0 (k6) memiliki kewajiban copyleft jika Anda membangun layanan di sekitarnya, sementara MIT dan Apache-2.0 bersifat permisif. Baca lisensinya sebelum Anda menyematkan alat ke dalam sebuah produk.
Hurl: pengujian HTTP teks biasa, satu biner Rust
Hurl menjalankan permintaan HTTP yang ditulis dalam format teks biasa dan melakukan verifikasi pada respons. Dibangun oleh Orange-OpenSource dalam Rust, didukung oleh libcurl di balik layarnya, dan didistribusikan sebagai biner tunggal. Pengujiannya hampir terbaca seperti permintaan itu sendiri, yang membuatnya mudah untuk ditinjau dalam sebuah pull request.
Lisensi: Apache-2.0. Sumber: github.com/Orange-OpenSource/hurl.
brew install hurl # atau: cargo install --locked hurl
# login.hurl
cat > login.hurl <<'EOF'
POST https://api.example.com/login
{ "user": "acme", "pass": "s3cret" }
HTTP 200
[Asserts]
jsonpath "$.token" exists
EOF
hurl --test login.hurl
Terbaik untuk: pemeriksaan gaya kontrak dan pengujian smoke yang ingin Anda simpan dalam kontrol versi sebagai teks yang mudah dibaca. Batasan jujur: ini berfokus pada HTTP, jadi tidak akan mendukung gRPC atau menghasilkan beban. Untuk apa pun di luar rantai pernyataan sederhana, Anda akan menulis lebih banyak berkas .hurl daripada menggunakan bahasa skrip.
Step CI: alur kerja API YAML yang dibangun untuk CI
Step CI adalah runner alur kerja yang dikonfigurasi YAML yang dibuat untuk integrasi berkelanjutan. Ini mencakup REST, GraphQL, gRPC, tRPC, dan SOAP dalam satu berkas alur kerja, dan dapat melakukan pengujian beban serta validasi terhadap skema OpenAPI. Runner dan CLI ini gratis selamanya.
Lisensi: MPL-2.0. Sumber: github.com/stepci/stepci.
npm install -g stepci
# workflow.yml describes steps, checks, and captures
stepci run workflow.yml
Terbaik untuk: tim yang menginginkan satu berkas deklaratif yang mendeskripsikan alur API multi-langkah dan menjalankannya dengan cara yang sama secara lokal dan di CI. Batasan jujur: MPL-2.0 adalah copyleft lemah, jadi jika Anda memodifikasi berkas Step CI sendiri, Anda harus membagikan kembali perubahan tersebut. Menggunakannya untuk menguji aplikasi Anda tidak membawa kewajiban tersebut.
Schemathesis: pengujian berbasis properti dari skema Anda
Schemathesis membaca skema OpenAPI atau GraphQL Anda dan menghasilkan ribuan kasus uji darinya, menggunakan pengujian berbasis properti yang dibangun di atas pustaka Hypothesis Python. Alih-alih Anda menulis setiap kasus, ia melakukan fuzzing pada masukan untuk menemukan kesalahan 500, pelanggaran skema, dan respons yang tidak sesuai dengan yang dijanjikan oleh dokumentasi Anda.
Lisensi: MIT. Sumber: github.com/schemathesis/schemathesis.
uv pip install schemathesis # atau: pip install schemathesis
schemathesis run https://api.example.com/openapi.json
Terbaik untuk: menangkap bug kasus-ekstrem yang tidak akan pernah Anda pikirkan untuk menulis pengujiannya, terutama sebelum rilis. Ini adalah salah satu alasan terkuat untuk menjaga skema yang akurat. Batasan jujur: ini membutuhkan skema yang nyata untuk berfungsi, dan API yang besar dapat menghasilkan banyak "noise" yang ingin Anda saring dengan hooks dan opsinya.
Dredd: pengujian kontrak terhadap deskripsi API Anda
Dredd memeriksa apakah API langsung Anda benar-benar sesuai dengan dokumen deskripsinya. Arahkan ke berkas OpenAPI (atau API Blueprint) dan backend yang sedang berjalan, dan ia akan memutar ulang setiap permintaan yang didokumentasikan serta membandingkan respons nyata dengan spesifikasi. Ini agnostik bahasa dan mendukung hooks untuk setup dan teardown.
Lisensi: MIT. Sumber: github.com/apiaryio/dredd.
npm install -g dredd
dredd apiary.apib http://127.0.0.1:3000
Terbaik untuk: membuktikan bahwa dokumentasi dan implementasi Anda tidak menyimpang. Batasan jujur, dan ini penting: repositori Dredd diarsipkan pada November 2024 dan hanya-baca. Alat ini masih berfungsi, tetapi tidak lagi dikelola, jadi anggaplah sebagai alat stabil tanpa perbaikan di masa depan. Jika Anda menginginkan pemeriksa berbasis skema yang aktif dikelola, Schemathesis adalah pilihan yang lebih aman.
k6: pengujian beban yang diskrip dalam JavaScript
k6 adalah alat pengujian beban dan kinerja milik Grafana. Anda membuat skrip pengujian dalam JavaScript atau TypeScript, dan mesin Go yang cepat menjalankannya dalam skala besar. Ini adalah pilihan sumber terbuka utama ketika Anda perlu mengetahui bagaimana API Anda berperilaku di bawah ratusan atau ribuan pengguna virtual, bukan hanya apakah satu permintaan berhasil.
Lisensi: AGPL-3.0. Sumber: github.com/grafana/k6.
brew install k6
k6 new script.js # menghasilkan pengujian awal
k6 run script.js
Terbaik untuk: pengujian kinerja dan soak yang berada di repositori yang sama dengan pengujian fungsional Anda. Batasan jujur: AGPL-3.0 adalah copyleft yang kuat. Ini baik untuk menjalankan pengujian, tetapi jika Anda membangun dan mendistribusikan layanan di sekitar kode k6, lisensi tersebut memiliki kewajiban nyata; bacalah terlebih dahulu. k6 juga berfokus pada beban, bukan pernyataan kontrak yang terperinci.
Newman: menjalankan koleksi Postman tanpa GUI
Newman adalah runner koleksi baris perintah milik Postman sendiri. Jika tim Anda sudah memiliki permintaan API dan pengujian yang disimpan sebagai koleksi Postman, Newman menjalankan koleksi persis itu dari terminal atau di CI, tanpa memerlukan aplikasi desktop. Ini adalah cara standar untuk memasukkan alur kerja Postman ke dalam pipeline.
Lisensi: Apache-2.0. Sumber: github.com/postmanlabs/newman.
npm install -g newman
newman run my-collection.json -e staging-environment.json
Terbaik untuk: tim dengan koleksi Postman yang sudah ada yang ingin menjalankan CI tanpa membayar kursi Postman tambahan. Batasan jujur: ini terikat pada format koleksi Postman, jadi Anda membuat pengujian di UI Postman (atau JSON-nya) daripada di berkas konfigurasi biasa. Ini menjalankan koleksi; ini tidak merancang atau memalsukan API.
Tavern: pengujian API sebagai plugin pytest
Tavern adalah pustaka Python, CLI, dan plugin pytest yang mendeskripsikan pengujian API dalam YAML. Karena terhubung dengan pytest, Anda mendapatkan seluruh ekosistem pytest secara gratis: fixtures, pelaporan, paralelisme, dan integrasi CI yang mungkin sudah Anda gunakan. Ini menangani REST, MQTT, dan gRPC.
Lisensi: MIT. Sumber: github.com/taverntesting/tavern.
pip install tavern
# test_login.tavern.yaml sits next to your other tests
pytest test_login.tavern.yaml
Terbaik untuk: perusahaan Python yang sudah menjalankan pytest dan ingin pengujian API berada tepat di samping pengujian unit. Batasan jujur: ini mengasumsikan Anda nyaman dengan pengaturan pengujian Python. Jika tumpukan teknologi Anda bukan Python, ketergantungan pytest menjadi hambatan daripada fitur.
Venom: pengujian integrasi multi-executor dari OVHcloud
Venom, dari OVHcloud, menjalankan pengujian integrasi di berbagai jenis eksekutor: permintaan HTTP, skrip shell, IMAP, web, basis data, dan banyak lagi. Ditulis dalam Go, menggunakan suite pengujian YAML, dan mengeluarkan berkas hasil xUnit yang dibaca secara asli oleh sistem CI. Ini unggul ketika satu pengujian perlu menyentuh lebih dari sekadar endpoint HTTP.
Lisensi: BSD (dimodifikasi). Sumber: github.com/ovh/venom.
# unduh biner dari rilis GitHub, lalu:
venom run testsuite.yml
Terbaik untuk: alur end-to-end yang mencampur panggilan API dengan pemeriksaan basis data atau langkah skrip dalam satu suite pengujian. Batasan jujur: dengan begitu banyak eksekutor, YAML menjadi bertele-tele, dan dokumentasinya mengasumsikan Anda akan menyusun contoh-contoh dari repositori.
Di mana Apidog cocok (dan catatan jujur)
Ini bagian yang jujur. Apidog bukan sumber terbuka. Ini adalah produk komersial dengan tingkatan gratis, jadi tidak termasuk dalam daftar alat yang tersedia sumbernya. Tetapi penting untuk mengetahuinya karena satu alasan: alat-alat di atas masing-masing melakukan satu tugas, dan menyatukan Hurl ditambah Schemathesis ditambah Newman ditambah server mock ke dalam alur kerja yang koheren adalah pekerjaan nyata yang harus Anda kelola sendiri.
Apidog menggabungkan desain, pengujian, mocking, dan dokumentasi ke dalam satu platform, dan apidog-cli membawa sisi pengujian ke terminal. Anda membuat skenario pengujian sekali, lalu menjalankannya di CI dengan satu perintah:
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --access-token <TOKEN> # keluar 0 jika semua berhasil, bukan nol jika gagal
Outputnya adalah JSON terstruktur dengan agentHints.nextSteps, yang membuatnya mudah untuk diskrip atau diserahkan ke agen AI. Panduan apidog-cli lengkap menjelaskan seluruh set perintah. Jadi: bukan sumber terbuka, tetapi tingkatan gratis ditambah CLI memberi Anda alternatif terintegrasi untuk menyatukan beberapa alat yang bertujuan tunggal. Jika lisensi yang dapat Anda audit adalah persyaratan mutlak, pilih dari delapan di atas. Jika alur kerja terintegrasi lebih penting, inilah pertimbangannya.
Cara memilih
| Alat | Terbaik untuk | Instalasi | Sumber terbuka? | Lisensi |
|---|---|---|---|---|
| Hurl | Aseri HTTP teks biasa di Git | brew install hurl |
Ya | Apache-2.0 |
| Step CI | Alur kerja CI deklaratif | npm i -g stepci |
Ya | MPL-2.0 |
| Schemathesis | Fuzzing berbasis properti dari skema | pip install schemathesis |
Ya | MIT |
| Dredd | Pengujian kontrak dokumentasi-vs-implementasi | npm i -g dredd |
Ya (diarsipkan) | MIT |
| k6 | Pengujian beban dan kinerja | brew install k6 |
Ya | AGPL-3.0 |
| Newman | Menjalankan koleksi Postman di CI | npm i -g newman |
Ya | Apache-2.0 |
| Tavern | Pengujian API di dalam pytest | pip install tavern |
Ya | MIT |
| Venom | Suite integrasi multi-eksekutor | GitHub releases | Ya | BSD |
| apidog-cli | Alur kerja desain-ke-pengujian terintegrasi | npm i -g apidog-cli |
Tidak (tingkatan gratis) | Komersial |
Sesuaikan alat dengan pekerjaan. Gunakan Hurl atau Newman saat Anda menginginkan pemeriksaan permintaan yang cepat dan mudah dibaca; Schemathesis saat Anda memiliki skema dan ingin bug ditemukan untuk Anda; k6 saat pertanyaannya adalah skala; Tavern atau Venom saat pengujian perlu berada dalam suite yang lebih besar. Jika Anda mempertimbangkan ini terhadap proses yang lebih besar, panduan strategi pengujian API membahas di mana setiap jenis cocok, dan artikel alat pengujian API headless membahas menjalankan pengujian tanpa UI sama sekali.
Kesimpulan
Alat CLI sumber terbuka memberi Anda pengujian API yang dapat Anda baca, fork, dan jalankan sesuai keinginan Anda. Hurl dan Newman menangani pemeriksaan permintaan sehari-hari, Schemathesis dan Dredd menegakkan kontrak Anda, k6 mendorong kinerja, dan Tavern dan Venom mengintegrasikan pengujian API ke dalam suite yang lebih luas. Pilihlah berdasarkan lisensi dan pekerjaan yang perlu Anda selesaikan; tidak ada yang menghentikan Anda menjalankan dua di antaranya.
Ketika Anda lebih suka merancang, menguji, melakukan mocking, dan mendokumentasikan di satu tempat alih-alih memelihara toolchain, Apidog mencakup seluruh siklus hidup dan dilengkapi dengan apidog-cli untuk CI. Unduh Apidog untuk mencoba CLI bersama alat-alat di atas dan melihat kombinasi mana yang sesuai dengan pipeline Anda.
