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

Ashley Innocent

Ashley Innocent

20 tháng 4 2026

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

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

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.
nút

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.

Thứ nhất, Newman là một gói npm. Mọi quy trình sử dụng nó đều lấy từ kho lưu trữ npm tại thời điểm xây dựng. Sự cố thỏa hiệp ua-parser-js năm 2021 và sự cố node-ipc năm 2022 đã chứng minh rằng các cuộc tấn công chuỗi cung ứng npm không chỉ là lý thuyết. Các đội bảo mật bắt đầu đặt câu hỏi tại sao lớp kiểm thử API lại cần npm.

Thứ hai, Postman bắt đầu giới hạn số lần chạy collection trên các gói miễn phí và gói trả phí cơ bản. Các đội phụ thuộc vào việc chạy collection qua API Postman như một phần của CI đã chạm giới hạn hạn mức và phải nâng cấp gói hoặc thiết kế lại quy trình của họ.

Thứ ba, tốc độ bảo trì của Newman đã chậm lại. Các vấn đề tồn đọng trên GitHub trong nhiều tháng. Một số API scripting Postman mới hơn có hỗ trợ không nhất quán trong Newman.

Kết quả: các nhà phát triển đã xây dựng quy trình CI dựa trên Newman hiện đang tìm kiếm các lựa chọn thay thế. Đây là những gì có sẵn.

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à sự thay thế chức năng gần nhất cho Newman nếu bạn đã đầu tư vào các collection Postman.

Những gì nó hỗ trợ

Không yêu cầu npm. Apidog CLI được phân phối dưới dạng một tệp nhị phân độc lập. Bạn tải xuống một lần, thêm nó vào PATH của mình và nó sẽ chạy.

Không giới hạn số lần chạy. Apidog không giới hạn số lần chạy collection trên bất kỳ gói nào. Một quy trình chạy 500 collection mỗi ngày hoạt động giống như một quy trình chạy 5 collection.

Cài đặt

Tải xuống tệp nhị phân CLI cho nền tảng của bạn từ apidog.com/cli hoặc sử dụng trình cài đặt shell:

# macOS / Linux
curl -sSf https://apidog.com/cli/install.sh | sh

# Xác minh
apidog --version

Đối với các trình chạy CI dựa trên Docker, Apidog cung cấp một image chính thức:

FROM apidog/cli:latest

Chạy một Postman collection

Xuất collection của bạn từ Postman (Tệp > Xuất > Collection v2.1) và môi trường của bạn (Quản lý Môi trường > Xuất).

Sau đó 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 httpsapidog.com/cli/install.sh | 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ó npm install, không có package.json, không có ma trận phiên bản Node.js. Công việc chạy nhanh hơn và bề mặt phụ thuộc nhỏ hơn.

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à một công cụ kiểm thử tải từ Grafana Labs cũng xử lý kiểm thử API chức năng. Đáng để biết vì nó thực sự tuyệt vời cho kiểm thử hiệu suất cùng với các kiểm tra chức năng.

Những gì nó hỗ trợ

Những gì nó không hỗ trợ

Khi nào nên chọn k6

Nếu bạn cần kết hợp kiểm thử chức năng với kiểm thử hiệu suất trong cùng một quy trình – ví dụ, xác minh tính đúng đắn của API dưới tải – k6 đáng để bạn bỏ chi phí di chuyển. Nếu bạn chỉ muốn thay thế Newman cho các bài kiểm thử chức năng, Apidog sẽ nhanh hơn để thiết lập.

Sử dụng k6 cơ bản trong CI

# Cài đặt (Linux)
sudo apt-get install k6

# Chạy một script kiểm thử
k6 run api-tests.js

CI của k6 xuất kết quả pass/fail dựa trên các định nghĩa ngưỡng trong script của bạn. Đầu ra JUnit XML có sẵn thông qua gói k6-reporter.

Lựa chọn 3: Hurl

Hurl là một công cụ kiểm thử HTTP mã nguồn mở được viết bằng Rust. Nó nhanh, không có phụ thuộc runtime và sử dụng DSL văn bản thuần túy để định nghĩa các yêu cầu và xác nhận.

Những gì nó hỗ trợ

Những gì nó không hỗ trợ

Khi nào nên chọn Hurl

Nếu bạn sẵn lòng viết lại các bài kiểm thử của mình bằng DSL của Hurl, bạn sẽ có một tệp nhị phân cực kỳ nhỏ mà không cần runtime. Tệp nhị phân chỉ là một tệp 10 MB. Hurl là một lựa chọn mạnh mẽ cho các dự án mới nơi bạn không bị ràng buộc bởi các collection Postman cũ.

Ví dụ kiểm thử Hurl cơ bản

GET https://api.example.com/users/1
HTTP 200
[Asserts]
jsonpath "$.id" == 1
jsonpath "$.email" isString

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 dữ liệu) 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ó một quy trình hiện có dựa trên Newman, đây là lộ trình di chuyển sang Apidog CLI:

Xuất các collection của bạn. Trong Postman, nhấp chuột phải vào từng collection và xuất dưới dạng v2.1. Xuất môi trường của bạn riêng biệt.

Cài đặt Apidog CLI. Thêm bước cài đặt vào cấu hình CI của bạn.

Thay thế lệnh Newman. Một lệnh Newman thông thường trông như sau:

newman run collection.json -e environment.json --reporters junit --reporter-junit-export results.xml

Tương đương với Apidog:

apidog run collection.json --environment environment.json --reporter-junit results.xml

Cấu trúc cờ (flag) tương tự nhau theo thiết kế.

Kiểm tra khả năng tương thích của script. Chạy collection của bạn cục bộ với Apidog CLI trước khi commit thay đổi CI. Hầu hết các script pm.* chạy mà không cần sửa đổi. Các script sử dụng pm.require để tải các module bên ngoài cần điều chỉnh.

Xóa Node.js khỏi cấu hình CI của bạn. Nếu Newman là lý do duy nhất khiến Node.js xuất hiện trong quy trình của bạn, bạn có thể loại bỏ hoàn toàn bước thiết lập Node.js và bước npm install.

Câu hỏi thường gặp

Newman có bị ngừng sử dụng chính thức không?Không, tính đến đầu năm 2026, Newman vẫn được Postman duy trì. Tuy nhiên, tốc độ bảo trì chậm và một số vấn đề mở ảnh hưởng đến các trường hợp sử dụng thực tế. Nó sẽ không biến mất sớm, nhưng việc xây dựng các quy trình mới dựa trên nó mang lại rủi ro ngày càng tăng.

Apidog CLI có yêu cầu tài khoản Apidog không?Để chạy các collection được xuất cục bộ, không. Để đồng bộ hóa các collection từ một không gian làm việc Apidog, có. Nếu bạn đang di chuyển từ Postman, bạn có thể chạy hoàn toàn từ các tệp JSON đã xuất.

Apidog CLI có thể chạy các bài kiểm thử dựa trên dữ liệu không?Có. Truyền một tệp dữ liệu CSV hoặc JSON với cờ --iteration-data. Điều này tương đương với cờ -d của Newman để lặp lại dựa trên dữ liệu.

Rủi ro chuỗi cung ứng với các trình chạy dựa trên npm là gì?Bất kỳ gói nào được kéo từ npm tại thời điểm CI đều là một bề mặt tấn công tiềm tàng. Các gói bị xâm phạm có thể trích xuất các biến môi trường, mà trong ngữ cảnh CI bao gồm khóa API và token. Một trình chạy nhị phân được tải xuống qua HTTPS và được ghim vào một checksum sẽ tránh được loại rủi ro này.

k6 có hỗ trợ kiểm thử gRPC không?Có. k6 có hỗ trợ gRPC gốc, điều này khiến nó trở thành một trong số ít công cụ mã nguồn mở xử lý cả REST và gRPC trong cùng một bộ kiểm thử. Nếu bề mặt API của bạn bao gồm các endpoint gRPC, k6 đáng để bạn đánh giá.

Hurl có hỗ trợ tiêu đề xác thực không?Có. Hurl hỗ trợ các tiêu đề tùy chỉnh, bao gồm Authorization, Bearer và xác thực dựa trên cookie. Các biến cho phép bạn chèn các bí mật từ các biến môi trường tại thời điểm chạy.

Kỷ nguyên của Newman là lựa chọn CI mặc định cho các bài kiểm thử API đang kết thúc. Các rủi ro chuỗi cung ứng là có thật, giới hạn gói miễn phí đã thay đổi cách tính toán cho nhiều đội và hiện có những lựa chọn thay thế tốt hơn. Việc di chuyển sang một quy trình không dùng Newman rất đơn giản, đặc biệt nếu bạn đang chuyển sang Apidog CLI với các collection Postman hiện có của mình.

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API