Các công cụ CLI gọn nhẹ tốt nhất cho kiểm thử API

Tám công cụ CLI nhẹ để kiểm thử API, từ curl và xh đến Hurl, k6, và Apidog CLI. Các tệp nhị phân nhỏ, khởi động nhanh và các lệnh cài đặt thực tế.

INEZA Felin-Michel

INEZA Felin-Michel

13 tháng 7 2026

Các công cụ CLI gọn nhẹ tốt nhất cho kiểm thử API

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

Hầu hết các công cụ kiểm thử API đều yêu cầu bạn mở một cửa sổ, đăng nhập và nhấp chuột xung quanh không gian làm việc trước khi có thể gửi một yêu cầu duy nhất. Điều đó tốt cho lần xem đầu tiên. Nhưng nó không phù hợp với terminal, nơi bạn muốn gõ một dòng lệnh, đọc phản hồi và tiếp tục. Các công cụ dòng lệnh gọn nhẹ đảo ngược thứ tự: công cụ lùi lại, và yêu cầu là toàn bộ tương tác. Gọn nhẹ ở đây có nghĩa là một điều cụ thể. Một cài đặt nhỏ, thường là một tệp nhị phân duy nhất hoặc một lệnh `npx` nhanh chóng. Khởi động nhanh, để việc truy cập một endpoint diễn ra ngay lập tức. Cấu hình ít hoặc không cần để chạy yêu cầu đầu tiên. Đầu ra ưu tiên terminal mà bạn có thể chuyển vào `jq` hoặc grep. Đây là một câu hỏi khác với "công cụ nào là mã nguồn mở" hay "công cụ nào có nhiều tính năng nhất." Đó là về dung lượng và sự cản trở. Để có cái nhìn tổng quan hơn bao gồm các GUI được lưu trữ, hãy xem bài tổng hợp về các công cụ kiểm thử API miễn phí tốt nhất. Dưới đây là tám công cụ CLI gọn nhẹ để kiểm thử REST và HTTP API, được sắp xếp gần đúng từ nhỏ nhất và thủ công nhất đến những công cụ chạy bộ kiểm thử đầy đủ trong CI. Mỗi mục có một lệnh cài đặt thực tế, một lệnh minh họa cách hoạt động, công dụng tốt nhất của nó và một giới hạn trung thực. Công cụ cuối cùng, Apidog CLI, là tệp nhị phân gọn nhẹ chạy các kịch bản bạn xây dựng trực quan và điều khiển pipeline dựa trên mã thoát của nó.nút

Điều gì làm cho một công cụ CLI trở nên “gọn nhẹ” để kiểm thử API

Rất nhiều công cụ chạy trong terminal. Không phải tất cả đều cảm thấy gọn nhẹ. Đối với danh sách này, một công cụ đủ điều kiện dựa trên bốn điểm:

Các công cụ dẫn đầu với ba điểm đầu tiên; hai điểm cuối cùng dựa vào điểm thứ tư, bởi vì đó là nơi một tệp nhị phân gọn nhẹ khẳng định giá trị của nó trong một pipeline. Nếu bạn muốn tìm hiểu sâu hơn về phía tương tác, thủ công truy cập một endpoint, hướng dẫn các lựa chọn thay thế curl để kiểm thử API REST sẽ đi sâu hơn vào các client thủ công.

curl: tiêu chuẩn cơ bản đã được cài đặt sẵn

curl là công cụ mà bạn gần như chắc chắn đã có. Nó được cài đặt sẵn trên macOS, hầu hết các bản phân phối Linux và Windows hiện đại, vì vậy việc cài đặt nhẹ nhất là không cần cài đặt. Nó hỗ trợ HTTP, HTTPS và một danh sách dài các giao thức khác, và nó là tham chiếu mà mọi client khác đều tự so sánh.

# Đã có trên máy của bạn; kiểm tra phiên bản
curl --version

# POST JSON và chỉ in trạng thái HTTP
curl -s -o /dev/null -w "%{http_code}\n" \
  -X POST https://httpbin.org/post \
  -H "Content-Type: application/json" \
  -d '{"user":"acme","plan":"pro"}'

Tốt nhất cho: các yêu cầu một lần nhanh chóng, kịch bản, và bất kỳ môi trường nào mà bạn không thể cài đặt bất cứ thứ gì mới. Giới hạn trung thực: tính công thái học đã lỗi thời. Bạn phải thiết lập các header thủ công, JSON không được định dạng đẹp mắt, và việc khẳng định phản hồi có nghĩa là chuyển vào `jq` và tự kiểm tra mã thoát. Nó gửi và hiển thị; nó không kiểm thử.

HTTPie: curl dành cho con người

HTTPie thực hiện các yêu cầu tương tự như curl, với cú pháp được xây dựng cho con người. Lệnh là `http`, các header và trường JSON là các cặp `key=value` đơn giản, và đầu ra được tô màu và định dạng theo mặc định. Nó được viết bằng Python, vì vậy nó cần một runtime Python, điều này làm cho nó nặng hơn một tệp nhị phân duy nhất nhưng vẫn là một cài đặt một dòng.

python -m pip install httpie   # hoặc: brew install httpie

# POST JSON: age:=24 gửi một số, name= gửi một chuỗi
http POST httpbin.org/post name=acme age:=24 plan=pro

Tốt nhất cho: khám phá API thủ công khi bạn muốn đầu ra dễ đọc mà không cần cờ. Giới hạn trung thực: khởi động Python chậm hơn đáng kể so với một tệp nhị phân đã biên dịch, và cài đặt vào một hệ thống sạch có nghĩa là phải kéo theo Python nếu nó chưa có. Giống như curl, nó là một client, không phải một test runner; bạn đọc phản hồi, bạn không khẳng định về nó.

xh: tốc độ của HTTPie trong một tệp nhị phân duy nhất

xh triển khai lại cú pháp thân thiện của HTTPie bằng Rust và được phân phối dưới dạng một tệp nhị phân được liên kết tĩnh. Bạn có được tính công thái học `key=value` và đầu ra có màu tương tự, với khả năng khởi động nhanh hơn và không cần cài đặt gì ngoài chính tệp nhị phân. Nó hỗ trợ HTTP/2 và thậm chí có thể in lệnh curl tương đương với `--curl`.

brew install xh   # hoặc: cargo install xh --locked

# Cú pháp tương tự HTTPie, khởi động nhanh hơn
xh POST httpbin.org/post name=acme age:=24 plan=pro

Tốt nhất cho: các nhà phát triển thích cảm giác của HTTPie nhưng muốn một tệp nhị phân duy nhất nhanh chóng không cần runtime. Giới hạn trung thực: nó không triển khai mọi tính năng của HTTPie, và không có hệ thống plugin. Nó mới hơn HTTPie, vì vậy hệ sinh thái xung quanh nó nhỏ hơn. Vẫn là một client, không phải một công cụ khẳng định.

Hurl: kiểm thử văn bản thuần túy chạy trong CI

Hurl là nơi danh sách này chuyển từ "gửi yêu cầu" sang "kiểm thử phản hồi." Nó chạy các yêu cầu HTTP được viết trong tệp `.hurl` văn bản thuần túy và khẳng định các kết quả. Nó được viết bằng Rust, được hỗ trợ bởi libcurl bên dưới, và được phân phối dưới dạng một tệp nhị phân duy nhất không cần runtime. Các bài kiểm thử đọc gần giống như các yêu cầu, điều này giúp dễ dàng xem xét chúng trong một pull request.

brew install hurl   # hoặc: cargo install --locked hurl

cat > login.hurl <<'EOF'
POST https://httpbin.org/post
{ "user": "acme", "plan": "pro" }

HTTP 200
[Asserts]
jsonpath "$.json.user" == "acme"
EOF

hurl --test login.hurl   # mã thoát khác 0 nếu một khẳng định thất bại

Tốt nhất cho: các kiểm tra kiểu hợp đồng và kiểm thử khói mà bạn giữ trong kiểm soát phiên bản dưới dạng văn bản dễ đọc. Cờ `--test` làm cho nó trở thành một cổng CI sạch; một khẳng định thất bại trả về mã thoát khác 0. Giới hạn trung thực: nó tập trung vào HTTP, vì vậy nó sẽ không điều khiển gRPC hoặc tạo tải thực tế. Các luồng phức tạp có nghĩa là nhiều tệp `.hurl` hơn là một ngôn ngữ kịch bản.

Step CI: một tệp YAML cho một luồng nhiều bước

Step CI chạy các quy trình làm việc API được mô tả trong một tệp YAML duy nhất. Nó bao gồm REST, GraphQL, gRPC, tRPC và SOAP trong một quy trình làm việc, và nó có thể xác thực dựa trên một lược đồ OpenAPI. Bạn cài đặt nó từ npm và chạy cùng một tệp cục bộ và trong CI. Nó đọc tốt khi một bài kiểm thử thực sự là một chuỗi: đăng nhập, lấy token, sử dụng nó cho cuộc gọi tiếp theo, kiểm tra kết quả.

npm install -g stepci

# workflow.yml mô tả các bước, ghi lại và kiểm tra
stepci run workflow.yml

Tốt nhất cho: các nhóm muốn có một tệp khai báo duy nhất mô tả một luồng API nhiều bước, chạy giống hệt nhau trên máy tính xách tay và trong một pipeline. Giới hạn trung thực: nó là một gói Node, vì vậy nó nặng hơn một tệp nhị phân Rust hoặc Go, và nó mang theo một runtime. Tần suất phát hành đã chậm lại, vì vậy hãy kiểm tra hoạt động gần đây của repo trước khi bạn xây dựng một pipeline trên đó. Để hiểu cách các phần này phù hợp với một kế hoạch kiểm thử đầy đủ hơn, hãy xem chiến lược kiểm thử API.

k6: kiểm thử tải gọn nhẹ từ terminal

k6 trả lời một câu hỏi khác: không phải "phản hồi này có đúng không" mà là "nó có chịu được tải không." Nó được viết bằng Go, được phân phối dưới dạng một tệp nhị phân tĩnh duy nhất, và các script là JavaScript thuần túy. Nó được xây dựng để sử dụng tài nguyên tối thiểu, vì vậy bạn có thể đẩy lưu lượng truy cập thực từ một máy tính xách tay. Ngưỡng biến một bài kiểm thử tải thành một cổng pass/fail; nếu vượt quá một ngưỡng, k6 thoát với mã 99, mà một pipeline đọc là một lỗi.

brew install k6   # hoặc chạy qua Docker: docker run grafana/k6

cat > load.js <<'EOF'
import http from 'k6/http';
import { check } from 'k6';
export const options = {
  vus: 10, duration: '30s',
  thresholds: { http_req_duration: ['p(95)<500'] },
};
export default function () {
  const res = http.get('https://httpbin.org/get');
  check(res, { 'status is 200': (r) => r.status === 200 });
}
EOF

k6 run load.js

Tốt nhất cho: các kiểm tra hiệu suất và tải mà bạn muốn viết kịch bản và chạy trong CI mà không cần thiết lập một cluster. Giới hạn trung thực: nó là một công cụ tải, không phải một client kiểm thử chức năng; bạn sẽ không dùng nó để kiểm tra một phản hồi duy nhất. Viết các kịch bản có ý nghĩa có nghĩa là phải học API JavaScript của nó.

Newman: chạy một Postman collection không giao diện

Newman là trình chạy dòng lệnh cho các Postman collection. Nếu nhóm của bạn đã xây dựng các yêu cầu và kiểm thử trong Postman, Newman sẽ chạy chính xác collection đó từ một terminal không có GUI, đây là điều bạn cần trong CI. Bạn xuất collection (và tùy chọn một môi trường) dưới dạng JSON và trỏ Newman đến nó.

npm install -g newman

# collection.json được xuất từ Postman; -e truyền một môi trường
newman run collection.json -e staging.json

Tốt nhất cho: các nhóm đã đầu tư vào Postman muốn các collection hiện có của họ chạy không giao diện trong một pipeline. Newman trả về mã thoát khác 0 khi một bài kiểm thử thất bại, vì vậy nó chặn CI một cách sạch sẽ. Giới hạn trung thực: nó là một gói Node, và nó chỉ chạy các collection định dạng Postman, vì vậy nó hữu ích nhất nếu bạn đã ở trong hệ sinh thái đó. Nó chạy các bài kiểm thử mà ai đó đã xây dựng trong GUI; việc tạo vẫn diễn ra ở đó.

Apidog CLI: chạy các kịch bản bạn đã xây dựng, chặn CI theo mã thoát

Apidog CLI là phần gọn nhẹ của Apidog. Đó là một gói npm, `apidog-cli`, chạy các kịch bản kiểm thử bạn đã thiết kế trực quan trong Apidog ngay từ terminal. Phần xây dựng kiểm thử vẫn nằm trong GUI, nơi việc nối chuỗi các yêu cầu, trích xuất biến và viết các khẳng định diễn ra nhanh chóng; CLI là phần nhỏ chạy một trong các kịch bản đó không giao diện và cung cấp cho bạn một mã thoát. Apidog không phải là mã nguồn mở, nhưng phiên bản miễn phí của nó cùng với CLI này cung cấp cho bạn một giải pháp thay thế tích hợp để kết hợp một client, runner và công cụ tải riêng biệt.

npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>

# Sao chép lệnh chính xác từ tab CI/CD của kịch bản của bạn
apidog run -t <scenario_id> -e <env_id> -r cli

Bạn không cần đoán các ID kịch bản và môi trường. Mở kịch bản kiểm thử của bạn trong Apidog, vào tab CI/CD và sao chép lệnh `apidog run` được tạo sẵn với các ID đã được điền. Trình báo cáo `-r cli` in kết quả từng bước và tóm tắt trong terminal; thêm `-r cli,junit` khi bảng điều khiển CI cần phân tích cú pháp kết quả. Giống như các công cụ trên, `apidog run` thoát `0` khi mọi khẳng định đều vượt qua và khác 0 khi có bất kỳ lỗi nào, vì vậy một pipeline coi đó là một cổng sạch. Đầu ra của nó là JSON có cấu trúc với `agentHints.nextSteps`, giúp một tác nhân mã hóa AI dễ dàng chạy và đọc. Tốt nhất cho: các nhóm muốn tạo các kịch bản phức tạp, nhiều bước trong một trình chỉnh sửa trực quan nhưng chạy chúng không giao diện trong CI hoặc từ một tác nhân. Giới hạn trung thực: không giống như curl hoặc xh, nó bị ràng buộc với các kịch bản bạn giữ trong một dự án Apidog, vì vậy nó là tùy chọn nền tảng tích hợp, không phải một client HTTP thuần túy. Để biết bộ lệnh đầy đủ, hãy xem hướng dẫn đầy đủ về Apidog CLI, tham chiếu lệnh apidog run và hướng dẫn cách kiểm thử API REST từ dòng lệnh với Apidog CLI.

Cách chọn

Công cụ phù hợp phụ thuộc vào mức độ bạn cần vượt qua "gửi một yêu cầu" như thế nào.

Công cụ Tốt nhất cho Cài đặt Mã nguồn mở? Lưu ý
curl Yêu cầu một lần, script cài đặt sẵn Có (MIT/curl) Phổ biến; khẳng định là tự làm
HTTPie Yêu cầu thủ công dễ đọc pip install httpie Có (BSD-3) Cú pháp thân thiện; runtime Python
xh Cảm giác HTTPie, nhanh hơn brew install xh Có (MIT) Tệp nhị phân Rust duy nhất
Hurl Kiểm thử HTTP văn bản thuần túy brew install hurl Có (Apache-2.0) --test chặn CI
Step CI Luồng YAML nhiều bước npm i -g stepci Có (MPL-2.0) REST/GraphQL/gRPC; runtime Node
k6 Tải và hiệu suất brew install k6 Có (AGPL-3.0) Script JS; ngưỡng làm lỗi chạy
Newman Postman collections trong CI npm i -g newman Có (Apache-2.0) Chạy Postman JSON không giao diện
Apidog CLI Kịch bản được xây dựng trực quan, chạy không giao diện npm i -g apidog-cli Không (phiên bản miễn phí) Cổng mã thoát; JSON gốc tác nhân

Bắt đầu từ trên cùng cho công việc thủ công. Sử dụng curl hoặc xh để kiểm tra một endpoint. Chuyển sang Hurl khi bạn muốn các kiểm tra đó chạy trong kiểm soát phiên bản. Mang k6 vào khi câu hỏi chuyển sang tải, và Newman nếu các bài kiểm thử của bạn đã có trong Postman. Chọn Apidog CLI khi bạn muốn xây dựng một kịch bản phức tạp trong trình chỉnh sửa và chạy nó không giao diện ở mọi nơi khác. Nếu bạn đang cân nhắc những điều này so với một quy trình làm việc hoàn toàn không có GUI, hướng dẫn công cụ kiểm thử API không giao diện sẽ bao gồm việc chạy các bài kiểm thử mà không cần bất kỳ giao diện nào cả.

Nơi các công cụ gọn nhẹ phát huy tác dụng

Các công cụ CLI gọn nhẹ thắng thế vào những ngày mà GUI làm bạn chậm lại: khi bạn đang làm việc sâu trong terminal, khi một bài kiểm thử cần chạy trong CI mà không có sự can thiệp của con người, và ngày càng nhiều khi một tác nhân AI thực hiện kiểm tra cho bạn. curl và xh giữ vòng lặp thủ công chặt chẽ. Hurl và Step CI biến các yêu cầu ngẫu nhiên thành các bài kiểm thử có thể lặp lại. k6 trả lời câu hỏi về tải. Newman chạy những gì bạn đã xây dựng trong Postman. Apidog CLI thu hẹp khoảng cách giữa việc xây dựng một bài kiểm thử và chạy nó ở bất cứ đâu. Bạn thiết kế kịch bản một lần trong Apidog, sau đó `apidog run` thực thi nó từ một terminal, một pipeline hoặc một tác nhân, và mã thoát sẽ quyết định liệu bản dựng có giữ màu xanh lá cây hay không. Tải xuống Apidog, xây dựng một kịch bản và thả lệnh `apidog run` của nó vào cấu hình CI của bạn để thấy toàn bộ vòng lặp hoàn tất.

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