DEV Community

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

Posted on • Originally published at apidog.com

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

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 trong không gian làm việc trước khi gửi một yêu cầu duy nhất. Điều đó phù hợp khi khám phá lần đầu, nhưng không phù hợp với terminal: nơi bạn muốn gõ một lệnh, đọc phản hồi và tiếp tục. Công cụ CLI gọn nhẹ đảo ngược cách làm này: công cụ lùi lại, còn yêu cầu là toàn bộ tương tác. “Gọn nhẹ” ở đây nghĩa là cài đặt nhỏ (thường là một tệp nhị phân hoặc lệnh npx), khởi động nhanh, cấu hình tối thiểu và đầu ra có thể chuyển tiếp sang jq hoặc grep. Đây không phải câu hỏi về công cụ mã nguồn mở hay nhiều tính năng nhất, mà là về dung lượng và mức độ cản trở. Để xem thêm cả các GUI được lưu trữ, hãy tham khảo 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, sắp xếp gần đúng từ công cụ thủ công nhỏ nhất đến các công cụ chạy bộ kiểm thử đầy đủ trong CI. Mỗi công cụ gồm lệnh cài đặt, ví dụ sử dụng, trường hợp phù hợp nhất và một giới hạn cần biết. Công cụ cuối cùng, Apidog CLI, chạy các kịch bản được xây dựng trực quan và điều khiển pipeline bằng mã thoát.

Dùng thử Apidog ngay hôm nay

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

Nhiều công cụ chạy được trong terminal, nhưng không phải công cụ nào cũng cho cảm giác gọn nhẹ. Trong danh sách này, một công cụ cần đáp ứng bốn tiêu chí:

  • Dung lượng nhỏ. Một tệp nhị phân duy nhất, một lệnh cài đặt pip/npm hoặc một lệnh npx. Không cần thiết lập runtime trước, lý tưởng nhất là không có daemon.
  • Khởi động nhanh. Công cụ khởi chạy và gửi yêu cầu ngay, không phải chờ thời gian boot. Tệp nhị phân Rust và Go thường có lợi thế; công cụ phải khởi động runtime nặng sẽ chậm hơn.
  • Ít hoặc không cần cấu hình. Bạn có thể gửi yêu cầu đầu tiên mà không cần tệp dự án, tài khoản hoặc đăng nhập. Cấu hình chỉ là tùy chọn khi cần lưu và lặp lại.
  • Đầu ra gốc terminal. Kết quả cần dễ đọc, dễ chuyển sang lệnh khác, đồng thời có mã thoát phù hợp để CI dựa vào.

Các công cụ đầu danh sách nổi bật ở ba tiêu chí đầu. Các công cụ phía sau tập trung hơn vào tiêu chí cuối: biến một tệp nhị phân gọn nhẹ thành một phần hữu ích trong pipeline.

Nếu bạn chủ yếu cần truy cập endpoint thủ công, hãy xem hướng dẫn về các lựa chọn thay thế curl để kiểm thử API REST.

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

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

# Đã 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"}'
Enter fullscreen mode Exit fullscreen mode

Tốt nhất cho: yêu cầu một lần, script nhanh và môi trường không thể cài thêm phần mềm.

Giới hạn: công thái học đã cũ. Bạn phải tự khai báo header, JSON không được định dạng đẹp mặc định và việc kiểm tra phản hồi thường cần kết hợp với jq cùng mã thoát tự xử lý. Nó gửi và hiển thị yêu cầu; nó không phải test runner.

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

HTTPie gửi các yêu cầu tương tự curl, nhưng cú pháp được thiết kế để dễ đọc hơn. Lệnh là http; header và trường JSON dùng cặp key=value; đầu ra được tô màu và định dạng sẵn. Công cụ viết bằng Python nên cần runtime Python, nặng hơn tệp nhị phân duy nhất nhưng vẫn cài được bằng một lệnh.

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

# POST JSON: age:=24 gửi số, name= gửi chuỗi
http POST httpbin.org/post name=acme age:=24 plan=pro
Enter fullscreen mode Exit fullscreen mode

Tốt nhất cho: khám phá API thủ công khi cần đầu ra dễ đọc mà không phải nhớ nhiều cờ.

Giới hạn: thời gian khởi động Python chậm hơn đáng kể so với tệp nhị phân đã biên dịch. Trên máy sạch, bạn cũng cần cài Python nếu chưa có. Giống curl, HTTPie là client chứ không phải test runner.

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à phát hành dưới dạng tệp nhị phân liên kết tĩnh. Bạn vẫn có cú pháp key=value cùng đầu ra có màu, nhưng khởi động nhanh hơn và không cần runtime ngoài tệp nhị phân. xh hỗ trợ HTTP/2 và có thể in lệnh curl tương đương qua --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
Enter fullscreen mode Exit fullscreen mode

Tốt nhất cho: nhà phát triển thích trải nghiệm HTTPie nhưng muốn một tệp nhị phân nhanh, không phụ thuộc runtime.

Giới hạ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 nên hệ sinh thái nhỏ hơn. Đây vẫn là HTTP client, không phải công cụ khẳng định phản hồi.

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

Hurl là điểm 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à thực hiện khẳng định kết quả. Hurl viết bằng Rust, dùng libcurl bên dưới và phân phối dưới dạng một tệp nhị phân không cần runtime.

Tệp kiểm thử đọc gần giống một yêu cầu HTTP, nên dễ review trong 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 khẳng định thất bại
Enter fullscreen mode Exit fullscreen mode

Tốt nhất cho: kiểm tra hợp đồng và smoke test được lưu trong kiểm soát phiên bản dưới dạng văn bản dễ đọc.

Cờ --test tạo một cổng CI rõ ràng: chỉ cần một khẳng định thất bại là lệnh trả về mã thoát khác 0.

Giới hạn: Hurl tập trung vào HTTP, không điều khiển gRPC hoặc tạo tải thực tế. Luồng phức tạp thường đồng nghĩa với nhiều tệp .hurl, thay vì một ngôn ngữ script hoàn chỉnh.

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

Step CI chạy quy trình làm việc API được mô tả trong một tệp YAML. Nó hỗ trợ REST, GraphQL, gRPC, tRPC và SOAP trong cùng quy trình, đồng thời có thể xác thực theo lược đồ OpenAPI. Bạn cài từ npm và chạy cùng tệp ở máy local lẫn CI.

Đây là lựa chọn phù hợp khi một test là chuỗi nhiều bước: đăng nhập, lấy token, dùng token cho yêu cầu tiếp theo và 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
Enter fullscreen mode Exit fullscreen mode

Tốt nhất cho: nhóm muốn dùng một tệp khai báo để mô tả luồng API nhiều bước và chạy nhất quán trên laptop lẫn pipeline.

Giới hạn: đây là gói Node nên nặng hơn tệp nhị phân Rust hoặc Go và cần runtime. Tần suất phát hành đã chậm lại; hãy kiểm tra hoạt động gần đây của repository trước khi xây pipeline phụ thuộc vào nó.

Để đặt các kiểm thử này trong một kế hoạch đầy đủ hơn, 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à “API có chịu được tải không?”. Công cụ viết bằng Go, phát hành dưới dạng tệp nhị phân tĩnh và sử dụng script JavaScript thuần túy.

Bạn có thể đặt ngưỡng để biến bài kiểm thử tải thành cổng pass/fail. Khi vượt ngưỡng, k6 thoát với mã 99, để pipeline nhận diện là 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
Enter fullscreen mode Exit fullscreen mode

Tốt nhất cho: kiểm tra hiệu năng và tải có thể viết script, chạy trong CI mà không cần thiết lập cluster.

Giới hạn: k6 là công cụ tải, không phải HTTP client kiểm thử chức năng cho một phản hồi đơn lẻ. Viết kịch bản có ý nghĩa cũng yêu cầu làm quen với API JavaScript của nó.

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

Newman là trình chạy CLI cho Postman collection. Nếu nhóm đã xây dựng yêu cầu và test trong Postman, Newman có thể chạy chính collection đó trong terminal không cần GUI — phù hợp cho CI.

Xuất collection, và tùy chọn môi trường, ở định dạng JSON rồi chạy:

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

Tốt nhất cho: nhóm đã đầu tư vào Postman và muốn chạy collection hiện có trong pipeline.

Newman trả về mã thoát khác 0 khi test thất bại, nên có thể chặn CI trực tiếp.

Giới hạn: đây là gói Node và chỉ chạy collection ở định dạng Postman. Nó hữu ích nhất khi bạn đã ở trong hệ sinh thái Postman; việc tạo test vẫn diễn ra trong GUI.

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 CLI gọn nhẹ của Apidog. Đây là gói npm apidog-cli, dùng để chạy các kịch bản kiểm thử đã thiết kế trực quan trong Apidog ngay từ terminal.

Phần xây dựng test vẫn nằm trong GUI, nơi bạn nối chuỗi yêu cầu, trích xuất biến và viết khẳng định. CLI là phần không giao diện để chạy kịch bản và trả về mã thoát cho pipeline. Apidog không phải mã nguồn mở, nhưng phiên bản miễn phí cùng CLI cung cấp một lựa chọn tích hợp cho client, runner và công cụ tải.

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
apidog run -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

Không cần tự đoán ID kịch bản và môi trường:

  1. Mở kịch bản kiểm thử trong Apidog.
  2. Chuyển đến tab CI/CD.
  3. Sao chép lệnh apidog run được tạo sẵn với ID đã điền.
  4. Dán lệnh đó vào terminal hoặc cấu hình CI.

Reporter -r cli in kết quả theo từng bước và bản tóm tắt trong terminal. Khi CI cần phân tích kết quả, dùng thêm JUnit:

apidog run -t <scenario_id> -e <env_id> -r cli,junit
Enter fullscreen mode Exit fullscreen mode

Tương tự các runner khác, apidog run thoát 0 khi mọi khẳng định đều đạt và trả về mã khác 0 khi có lỗi. Đầu ra JSON có cấu trúc với agentHints.nextSteps, giúp tác nhân mã hóa AI dễ chạy và đọc kết quả.

Tốt nhất cho: nhóm muốn xây dựng kịch bản phức tạp, nhiều bước trong trình chỉnh sửa trực quan nhưng chạy không giao diện trong CI hoặc từ tác nhân.

Giới hạn: không giống curl hoặc xh, Apidog CLI gắn với các kịch bản trong dự án Apidog. Đây là tùy chọn nền tảng tích hợp, không phải HTTP client thuần túy.

Để xem đầy đủ lệnh và quy trình, tham khảo:

Cách chọn

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

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 sẵn Có (MIT/curl) Phổ biến; tự viết khẳng định
HTTPie Yêu cầu thủ công dễ đọc pip install httpie Có (BSD-3) Cú pháp thân thiện; cần Python
xh Trải nghiệm 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; cần Node
k6 Tải và hiệu năng brew install k6 Có (AGPL-3.0) Script JS; ngưỡng làm lỗi lần chạy
Newman Postman collection 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 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ừ đầu danh sách cho công việc thủ công:

  • Dùng curl hoặc xh để kiểm tra nhanh một endpoint.
  • Chuyển sang Hurl khi muốn đưa các kiểm tra đó vào kiểm soát phiên bản.
  • Dùng k6 khi câu hỏi chuyển sang tải và hiệu năng.
  • Dùng Newman nếu test đã tồn tại trong Postman.
  • Chọn Apidog CLI khi muốn xây dựng kịch bản phức tạp trong trình chỉnh sửa và chạy không giao diện ở mọi nơi khác.

Nếu bạn đang so sánh các lựa chọn này với quy trình hoàn toàn không có GUI, hãy xem hướng dẫn về công cụ kiểm thử API không giao diện.

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

Công cụ CLI gọn nhẹ phát huy hiệu quả khi GUI làm chậm vòng lặp phát triển:

  • Bạn đang làm việc sâu trong terminal.
  • Một bài kiểm thử cần chạy trong CI mà không có can thiệp thủ công.
  • Một tác nhân AI cần thực hiện kiểm tra thay bạn.

curlxh giữ vòng lặp kiểm tra thủ công ngắn nhất. Hurl và Step CI biến yêu cầu ngẫu nhiên thành test có thể lặp lại. k6 trả lời câu hỏi về tải. Newman chạy những gì đã tạo trong Postman.

Apidog CLI thu hẹp khoảng cách giữa việc xây dựng và chạy bài kiểm thử: bạn thiết kế kịch bản một lần trong Apidog, sau đó dùng apidog run để thực thi từ terminal, pipeline hoặc tác nhân. Mã thoát sẽ quyết định bản dựng có tiếp tục “xanh” hay không.

Tải xuống Apidog, tạo một kịch bản và thêm lệnh apidog run vào cấu hình CI để hoàn thiện vòng lặp.

Top comments (0)