DEV Community

Cover image for Chạy Bộ Sưu Tập Postman trong CI Không Cần Newman
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Chạy Bộ Sưu Tập Postman trong CI Không Cần Newman

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.

Dùng thử Apidog ngay hôm nay

💡 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:

  1. 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ế.
  2. 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.
  3. 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
Enter fullscreen mode Exit fullscreen mode

Nếu dùng Docker, có thể sử dụng image chính thức:

FROM apidog/cli:latest
Enter fullscreen mode Exit fullscreen mode

Chạy một Postman collection

  1. Xuất collection từ Postman: Tệp > Xuất > Collection v2.1
  2. Xuất tệp môi trường: Quản lý Môi trường > Xuất
  3. Chạy:
apidog run collection.json \
  --environment environment.json \
  --reporter-junit results.xml
Enter fullscreen mode Exit fullscreen mode

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

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

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

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

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

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 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 Qua plugin

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:

  1. Xuất collection: Trong Postman, nhấp phải > Xuất (v2.1). Xuất môi trường riêng.
  2. Cài đặt Apidog CLI: Thêm bước cài đặt vào CI.
  3. 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:
Enter fullscreen mode Exit fullscreen mode
  ```bash
  apidog run collection.json --environment environment.json --reporter-junit results.xml
  ```
Enter fullscreen mode Exit fullscreen mode
  1. 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ùng pm.require.
  2. 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)