Tóm tắt
Newman, trình chạy CLI chính thức của Postman, yêu cầu npm và Node.js trong quy trình CI của bạn. Điều này gây ra rủi ro chuỗi cung ứng, tăng thêm gánh nặng quản lý phụ thuộc và trên gói miễn phí của Postman, các lần chạy collection qua API hiện đã bị giới hạn tốc độ. Hướng dẫn này trình bày ba lựa chọn thay thế để chạy các bài kiểm tra API trong CI mà không cần Newman: trình chạy CLI của Apidog, k6 và Hurl. Apidog là con đường trực tiếp nhất nếu bạn có các collection Postman hiện có vì nó nhập chúng nguyên bản và không có giới hạn số lần chạy.
💡 Apidog là một nền tảng phát triển API tất cả trong một miễn phí. Trình chạy CLI của nó thực thi các collection tương thích với Postman trong CI mà không phụ thuộc vào npm và không có giới hạn số lần chạy. Dùng thử Apidog miễn phí, không cần thẻ tín dụng.
Giới thiệu
Newman từng là một ý tưởng hay. Một công cụ CLI chạy các collection Postman trong các quy trình CI đã giúp kiểm thử API trở nên di động và tự động hóa được. Nó được tin cậy bởi thương hiệu Postman, tích hợp với GitHub Actions thông qua một action cộng đồng phổ biến và hoạt động đủ tốt để nhiều đội xây dựng toàn bộ chiến lược tự động hóa kiểm thử API của họ dựa trên nó.
Sau đó, ba vấn đề đã phát sinh:
-
Newman là một gói npm: Mỗi lần sử dụng đều cần truy xuất từ npm tại thời điểm build. Các sự cố như compromise của
ua-parser-js(2021) vànode-ipc(2022) chứng tỏ rủi ro chuỗi cung ứng npm là thực tế. - Giới hạn số lần chạy collection trên Postman: Các gói miễn phí và trả phí cơ bản của Postman giới hạn số lần chạy collection qua API. Điều này làm gián đoạn CI nếu vượt hạn mức.
- Bảo trì Newman chậm lại: Các issue trên GitHub kéo dài, một số API scripting mới của Postman hỗ trợ không đầy đủ.
Kết quả: Nhiều đội phát triển cần các lựa chọn thay thế cho Newman trong CI.
Lựa chọn 1: Apidog CLI (khuyên dùng cho người dùng Postman collection)
Trình chạy CLI của Apidog là lựa chọn thay thế trực tiếp cho Newman nếu bạn đã có các collection Postman.
Hỗ trợ:
- Định dạng Postman Collection v2 và v2.1
- Môi trường Postman (xuất JSON)
- API
pm.test,pm.expect,pm.environment.set,pm.collectionVariables.set - Script pre-request và post-request
- Kiểm thử dựa trên dữ liệu (CSV, JSON)
- Đầu ra báo cáo JUnit XML và JSON cho CI
Không yêu cầu npm: Apidog CLI là tệp nhị phân độc lập, tải về một lần, thêm vào PATH là dùng được.
Không giới hạn số lần chạy: Không áp dụng quota cho số lượt chạy collection.
Cài đặt
Tải file nhị phân CLI cho hệ điều hành của bạn tại apidog.com/cli hoặc dùng shell installer:
# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation | sh
# Xác minh
apidog --version
Nếu dùng Docker, có thể sử dụng image chính thức:
FROM apidog/cli:latest
Chạy một Postman collection
- Xuất collection từ Postman:
Tệp > Xuất > Collection v2.1 - Xuất tệp môi trường:
Quản lý Môi trường > Xuất - Chạy:
apidog run collection.json \
--environment environment.json \
--reporter-junit results.xml
Ví dụ GitHub Actions
name: Kiểm thử API
on: [push, pull_request]
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cài đặt Apidog CLI
run: curl -sSf https://apidog.com/cli/install.sh?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation | sh
- name: Chạy kiểm thử API
run: |
apidog run ./tests/collection.json \
--environment ./tests/env.json \
--reporter-junit test-results.xml
- name: Tải lên kết quả kiểm thử
uses: actions/upload-artifact@v4
if: always()
with:
name: api-test-results
path: test-results.xml
Không cần npm install, không cần package.json, không cần matrix Node.js.
Ví dụ 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
Lựa chọn 2: k6
k6 là công cụ kiểm thử tải từ Grafana Labs, cũng hỗ trợ kiểm thử chức năng API.
Hỗ trợ:
- HTTP/1.1, HTTP/2, WebSocket, gRPC
- Script kiểm thử JavaScript (ES6+)
- Ngưỡng hiệu suất
- Xuất kết quả tới InfluxDB, Prometheus, Datadog
Không hỗ trợ:
- Định dạng collection Postman gốc. Bạn có thể chuyển đổi qua
postman-to-k6, nhưng kết quả cần chỉnh sửa thủ công với collection phức tạp. - API
pm.*của Postman chỉ được mô phỏng một phần.
Dùng k6 khi nào: Khi bạn muốn kiểm thử hiệu suất song song với chức năng. Nếu chỉ cần thay thế Newman cho kiểm thử chức năng, nên dùng Apidog.
Thiết lập k6 trong CI:
# Cài đặt (Linux)
sudo apt-get install k6
# Chạy kiểm thử
k6 run api-tests.js
Đầu ra pass/fail dựa trên ngưỡng script. Đầu ra JUnit XML có thể xuất bằng plugin k6-reporter.
Lựa chọn 3: Hurl
Hurl là công cụ kiểm thử HTTP mã nguồn mở bằng Rust. Nhanh, không cần runtime, dùng DSL văn bản thuần để định nghĩa request/xác nhận.
Hỗ trợ:
- HTTP/1.1, HTTP/2
- Xác nhận JSON, XPath, regex
- Biến và chuỗi request
- Đầu ra HTML, JUnit, JSON
Không hỗ trợ:
- Không nhập được định dạng collection Postman, không có converter tự động.
- Không script kiểm thử JavaScript, chỉ DSL khai báo.
Dùng Hurl khi nào: Nếu bạn sẵn sàng viết lại testcase bằng DSL của Hurl – phù hợp cho dự án mới hoặc không bị ràng buộc Postman.
Ví dụ Hurl:
GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString
Chạy Hurl trong GitHub Actions:
- name: Cài đặt 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: Chạy kiểm thử API
run: hurl --test tests/*.hurl
So sánh ba lựa chọn
| Tính năng | Apidog CLI | k6 | Hurl |
|---|---|---|---|
| Nhập Postman | Gốc | Bộ chuyển đổi (mất mát) | Không |
| Phụ thuộc npm | Không | Không | Không |
| Scripting JavaScript | Có (API pm.*) | Có (ES6) | Không (chỉ DSL) |
| Kiểm thử hiệu suất | Không | Có | Không |
| Kích thước tệp nhị phân | ~50 MB | ~30 MB | ~10 MB |
| Giới hạn chạy miễn phí | Không có | Không có | Không có |
| Đầu ra JUnit | Có | Qua plugin | Có |
Di chuyển từ Newman: các bước thực tế
Nếu bạn có pipeline CI đang dùng Newman, hãy làm theo các bước sau để chuyển sang Apidog CLI:
- Xuất collection: Trong Postman, nhấp phải > Xuất (v2.1). Xuất môi trường riêng.
- Cài đặt Apidog CLI: Thêm bước cài đặt vào CI.
-
Thay thế lệnh Newman:
- Lệnh Newman:
newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml
- Lệnh Apidog:
```bash
apidog run collection.json --environment environment.json --reporter-junit results.xml
```
-
Kiểm tra script: Chạy thử local với Apidog CLI trước khi commit CI. Phần lớn script
pm.*chạy tốt, chỉ cần chỉnh cho script dùngpm.require. -
Loại bỏ Node.js khỏi CI: Nếu bạn chỉ dùng Node.js cho Newman, giờ có thể xóa luôn bước setup Node.js và
npm install.
Câu hỏi thường gặp
Newman đã bị dừng phát triển chưa?
Không, đầu 2026 Newman vẫn được Postman duy trì. Tuy nhiên, bảo trì chậm và nhiều issue mở kéo dài. Bạn nên cân nhắc rủi ro khi xây dựng quy trình mới dựa trên Newman.
Apidog CLI có cần tài khoản Apidog không?
Không cần nếu chạy collection xuất local. Chỉ cần tài khoản nếu sync collection từ workspace Apidog. Khi di chuyển từ Postman, chạy hoàn toàn từ file JSON đã export.
Apidog CLI có hỗ trợ kiểm thử dựa trên dữ liệu không?
Có. Truyền file CSV/JSON với cờ --iteration-data (tương đương -d của Newman).
Rủi ro chuỗi cung ứng với npm là gì?
Bất cứ gói npm nào kéo về trong CI đều là bề mặt tấn công. Nếu bị compromise, có thể rò rỉ biến môi trường (API key, token). Trình chạy nhị phân tải qua HTTPS, ghim checksum sẽ giảm thiểu rủi ro.
k6 có kiểm thử gRPC không?
Có. Hỗ trợ native gRPC – phù hợp nếu API của bạn có cả REST và gRPC.
Hurl có hỗ trợ header xác thực không?
Có. Hurl hỗ trợ header tùy chỉnh như Authorization, Bearer, cookie-based. Biến có thể lấy từ env khi chạy.
Kỷ nguyên Newman là mặc định cho CI kiểm thử API đã qua. Rủi ro chuỗi cung ứng là thực, quota gói miễn phí thay đổi, và hiện tại đã có lựa chọn tốt hơn. Việc chuyển từ Newman sang Apidog CLI (hoặc k6/Hurl) rất đơn giản, đặc biệt nếu bạn đã có sẵn collection Postman.
Top comments (0)