Hầu hết hướng dẫn kiểm thử API bắt đầu từ GUI. Nhưng khi bạn làm việc trong terminal, chạy kiểm thử trong CI hoặc cần một công cụ có thể tự lưu trữ và kiểm tra mã nguồn, CLI là lựa chọn thực tế hơn. Công cụ CLI mã nguồn mở cho phép bạn version-control cấu hình kiểm thử cùng mã nguồn, chạy trong mạng nội bộ và không phụ thuộc vào tài khoản hay dịch vụ của nhà cung cấp.
Bài viết này tập trung vào quyền kiểm soát thay vì chỉ tốc độ hoặc kích thước tệp nhị phân: bạn có thể chạy công cụ trong CI mà không cần đăng nhập không? Mã nguồn có công khai theo giấy phép được OSI chấp thuận không? Pipeline có tiếp tục hoạt động nếu nhà cung cấp thay đổi giá không?
Dưới đây là tám công cụ CLI miễn phí, có mã nguồn để kiểm thử REST, GraphQL và HTTP API. Mỗi công cụ đi kèm giấy phép, lệnh cài đặt và cách chạy cơ bản. Nếu cần danh sách rộng hơn, bao gồm cả công cụ lưu trữ, xem các công cụ kiểm thử API miễn phí tốt nhất. Nếu bạn cần gửi request thủ công ngay trong terminal, xem các lựa chọn thay thế curl để kiểm thử REST API.
Điều gì khiến một công cụ CLI thực sự là mã nguồn mở?
“Miễn phí để tải xuống” không đồng nghĩa với “mã nguồn mở”. Để đưa vào danh sách này, công cụ cần đáp ứng các tiêu chí sau:
- Giấy phép rõ ràng: mã nguồn công khai theo giấy phép được OSI chấp thuận như MIT, Apache-2.0, MPL-2.0, AGPL-3.0 hoặc BSD.
- Chạy cục bộ, không cần tài khoản: có thể chạy trên máy phát triển hoặc runner CI mà không cần đăng ký, phí chỗ ngồi hay gọi về dịch vụ bên ngoài.
- Có thể đánh giá tình trạng bảo trì: kho mã nguồn có lịch sử commit và issue công khai để bạn kiểm tra trước khi đưa vào pipeline.
Mỗi công cụ bên dưới đáp ứng hai tiêu chí đầu. Với các dự án đã ngừng bảo trì, bài viết sẽ nêu rõ.
Giấy phép cũng là một phần của quyết định kỹ thuật:
- MIT và Apache-2.0 phù hợp khi bạn cần điều khoản dễ dãi.
- MPL-2.0 là copyleft yếu: thay đổi trực tiếp vào tệp của dự án có thể cần được chia sẻ lại.
- AGPL-3.0 có nghĩa vụ copyleft mạnh hơn nếu bạn xây dựng và phân phối dịch vụ dựa trên công cụ đó.
Hãy đọc giấy phép trước khi nhúng bất kỳ công cụ nào vào sản phẩm hoặc nền tảng nội bộ.
Hurl: kiểm thử HTTP dạng văn bản thuần túy
Hurl chạy request HTTP từ tệp văn bản và xác nhận response. Công cụ được Orange-OpenSource xây dựng 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 duy nhất.
Điểm mạnh của Hurl là file kiểm thử rất gần với request thực tế, nên dễ review trong pull request và dễ lưu trong Git.
Giấy phép: Apache-2.0
Mã nguồn: github.com/Orange-OpenSource/hurl
brew install hurl
# Hoặc:
cargo install --locked hurl
Tạo một kiểm thử đăng nhập tối thiểu:
cat > login.hurl <<'EOF'
POST https://api.example.com/login
{ "user": "acme", "pass": "s3cret" }
HTTP 200
[Asserts]
jsonpath "$.token" exists
EOF
hurl --test login.hurl
Dùng Hurl khi bạn cần:
- Kiểm thử smoke cho endpoint.
- Xác nhận status code, header và JSON response.
- Lưu kiểm thử hợp đồng đơn giản dưới dạng văn bản trong repository.
Giới hạn: Hurl tập trung vào HTTP. Nó không phù hợp để điều khiển gRPC hoặc tạo tải lớn. Với luồng phức tạp, bạn sẽ cần tổ chức nhiều tệp .hurl.
Step CI: quy trình API YAML cho CI
Step CI là trình chạy workflow khai báo bằng YAML, được thiết kế cho CI. Nó hỗ trợ REST, GraphQL, gRPC, tRPC và SOAP trong cùng một workflow; đồng thời có khả năng kiểm thử tải và xác thực dựa trên schema OpenAPI.
Giấy phép: MPL-2.0
Mã nguồn: github.com/stepci/stepci
npm install -g stepci
Chạy workflow:
# workflow.yml mô tả các bước, kiểm tra và thu thập
stepci run workflow.yml
Dùng Step CI khi bạn cần một tệp YAML duy nhất để mô tả luồng API nhiều bước, sau đó chạy giống nhau trên máy local và CI.
Giới hạn: MPL-2.0 là copyleft yếu. Việc sử dụng Step CI để kiểm thử ứng dụng của bạn không tạo nghĩa vụ chia sẻ mã, nhưng thay đổi trực tiếp các tệp của Step CI có thể phải được công khai lại.
Schemathesis: kiểm thử dựa trên thuộc tính từ schema
Schemathesis đọc schema OpenAPI hoặc GraphQL và tự tạo số lượng lớn test case bằng kiểm thử dựa trên thuộc tính, dựa trên thư viện Hypothesis của Python.
Thay vì viết từng request biên, bạn có thể dùng nó để tìm:
- Response
500. - Vi phạm schema.
- Response không khớp với tài liệu API.
- Lỗi xảy ra với input hiếm hoặc không mong đợi.
Giấy phép: MIT
Mã nguồn: github.com/schemathesis/schemathesis
uv pip install schemathesis
# Hoặc:
pip install schemathesis
Chạy kiểm thử từ tài liệu OpenAPI:
schemathesis run https://api.example.com/openapi.json
Dùng Schemathesis trước khi release hoặc trong pipeline regression, đặc biệt khi schema OpenAPI đã được duy trì chính xác.
Giới hạn: công cụ cần schema thực tế để hoạt động. API lớn có thể tạo nhiều kết quả cần xem xét, vì vậy bạn thường cần dùng hook và tùy chọn để lọc phạm vi kiểm thử.
Dredd: kiểm thử hợp đồng từ mô tả API
Dredd xác minh API đang chạy có khớp với tài liệu API hay không. Bạn cung cấp tệp OpenAPI hoặc API Blueprint cùng URL backend; Dredd sẽ phát lại các request được mô tả và so sánh response thực tế với specification.
Giấy phép: MIT
Mã nguồn: github.com/apiaryio/dredd
npm install -g dredd
Chạy kiểm thử với API Blueprint:
dredd apiary.apib http://127.0.0.1:3000
Dùng Dredd khi mục tiêu là phát hiện sự lệch nhau giữa tài liệu và implementation.
Giới hạn quan trọng: repository Dredd đã được lưu trữ từ tháng 11/2024 và ở chế độ chỉ đọc. Công cụ vẫn chạy, nhưng không còn được bảo trì hoặc nhận bản sửa lỗi mới. Nếu bạn cần giải pháp kiểm thử dựa trên schema được duy trì tích cực, Schemathesis là lựa chọn an toàn hơn.
k6: kiểm thử tải bằng JavaScript
k6 là công cụ kiểm thử tải và hiệu năng của Grafana. Bạn viết kịch bản bằng JavaScript hoặc TypeScript, sau đó engine Go chạy chúng ở quy mô lớn.
Giấy phép: AGPL-3.0
Mã nguồn: github.com/grafana/k6
brew install k6
Tạo script khởi đầu và chạy:
k6 new script.js
k6 run script.js
Dùng k6 khi bạn cần trả lời các câu hỏi như:
- API chịu được bao nhiêu người dùng ảo?
- Độ trễ thay đổi thế nào khi tải tăng?
- Endpoint có ổn định khi chạy liên tục không?
Giới hạn: k6 tập trung vào tải và hiệu năng, không phải xác nhận hợp đồng chi tiết. AGPL-3.0 cũng có các nghĩa vụ đáng cân nhắc nếu bạn xây dựng và phân phối dịch vụ dựa trên mã của k6.
Newman: chạy collection Postman trong CI
Newman là CLI runner của Postman. Nếu nhóm đã lưu request và test dưới dạng Postman Collection, Newman cho phép chạy chính collection đó trong terminal hoặc CI mà không cần ứng dụng desktop.
Giấy phép: Apache-2.0
Mã nguồn: github.com/postmanlabs/newman
npm install -g newman
Chạy collection với environment:
newman run my-collection.json -e staging-environment.json
Dùng Newman khi bạn muốn đưa quy trình Postman hiện có vào CI mà không cần thêm tài khoản Postman cho runner.
Giới hạn: Newman phụ thuộc vào định dạng Postman Collection. Nó chạy collection nhưng không thay thế công cụ thiết kế API hoặc mock server.
Tavern: kiểm thử API dưới dạng plugin pytest
Tavern là thư viện Python, CLI và plugin pytest để mô tả kiểm thử API bằng YAML. Vì tích hợp với pytest, bạn có thể tận dụng fixtures, báo cáo, chạy song song và các tích hợp CI sẵn có trong hệ sinh thái Python.
Tavern hỗ trợ REST, MQTT và gRPC.
Giấy phép: MIT
Mã nguồn: github.com/taverntesting/tavern
pip install tavern
Chạy tệp kiểm thử:
# test_login.tavern.yaml nằm cạnh các kiểm thử khác
pytest test_login.tavern.yaml
Dùng Tavern nếu dự án của bạn đã dùng pytest và bạn muốn API test nằm cạnh unit test hoặc integration test.
Giới hạn: Tavern giả định bạn quen với môi trường kiểm thử Python. Nếu stack không dùng Python, pytest có thể là một phụ thuộc không cần thiết.
Venom: kiểm thử tích hợp đa trình điều khiển
Venom từ OVHcloud chạy integration test qua nhiều loại driver: HTTP request, shell script, IMAP, web, cơ sở dữ liệu và nhiều hơn nữa. Công cụ được viết bằng Go, dùng YAML test suite và xuất kết quả xUnit cho CI.
Giấy phép: BSD đã sửa đổi
Mã nguồn: github.com/ovh/venom
Sau khi tải tệp nhị phân từ GitHub Releases, chạy test suite:
venom run testsuite.yml
Dùng Venom khi một flow end-to-end cần kết hợp nhiều bước, ví dụ:
- Gọi API tạo dữ liệu.
- Kiểm tra dữ liệu trong cơ sở dữ liệu.
- Chạy shell script xác minh kết quả.
- Xuất báo cáo xUnit cho CI.
Giới hạn: vì hỗ trợ nhiều driver, YAML có thể dài. Tài liệu cũng yêu cầu bạn ghép các ví dụ từ repository để xây dựng suite hoàn chỉnh.
Vị trí của Apidog
Apidog không phải là mã nguồn mở, nên không thuộc danh sách công cụ có mã nguồn công khai. Đây là sản phẩm thương mại có gói miễn phí.
Điểm cần cân nhắc là mỗi công cụ ở trên giải quyết một phần riêng: Hurl cho HTTP test dạng văn bản, Schemathesis cho kiểm thử dựa trên schema, Newman cho Postman Collection và một giải pháp khác cho mocking. Việc kết nối, vận hành và bảo trì các công cụ này trong một workflow thống nhất là công việc thực tế.
Apidog kết hợp thiết kế, kiểm thử, mocking và tài liệu trong một nền tảng. apidog-cli đưa phần kiểm thử ra terminal để chạy trong CI.
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --access-token <TOKEN>
Lệnh apidog run thoát với mã 0 khi toàn bộ kiểm thử thành công và mã khác 0 khi có lỗi, phù hợp để dùng làm CI gate.
Đầu ra là JSON có cấu trúc với agentHints.nextSteps, giúp dễ tạo script hoặc chuyển kết quả cho tác nhân AI. Xem hướng dẫn apidog-cli đầy đủ để biết toàn bộ lệnh hỗ trợ.
Nếu giấy phép có thể kiểm tra là yêu cầu bắt buộc, hãy chọn một trong tám công cụ mã nguồn mở. Nếu ưu tiên của bạn là workflow tích hợp, đây là sự đánh đổi cần cân nhắc.
Cách chọn
| Công cụ | Tốt nhất cho | Cài đặt | Mã nguồn mở? | Giấy phép |
|---|---|---|---|---|
| Hurl | Xác nhận HTTP dạng văn bản trong Git | brew install hurl |
Có | Apache-2.0 |
| Step CI | Workflow CI khai báo | npm i -g stepci |
Có | MPL-2.0 |
| Schemathesis | Kiểm thử dựa trên thuộc tính từ schema | pip install schemathesis |
Có | MIT |
| Dredd | Kiểm thử hợp đồng tài liệu và implementation | npm i -g dredd |
Có, đã lưu trữ | MIT |
| k6 | Kiểm thử tải và hiệu năng | brew install k6 |
Có | AGPL-3.0 |
| Newman | Chạy Postman Collection trong CI | npm i -g newman |
Có | Apache-2.0 |
| Tavern | Kiểm thử API trong pytest | pip install tavern |
Có | MIT |
| Venom | Integration test đa trình điều khiển | GitHub Releases | Có | BSD |
| apidog-cli | Workflow tích hợp từ thiết kế đến kiểm thử | npm i -g apidog-cli |
Không, có gói miễn phí | Thương mại |
Chọn theo loại công việc cần làm:
- Chọn Hurl hoặc Newman cho kiểm tra request nhanh, dễ đọc.
- Chọn Schemathesis khi có schema và muốn phát hiện lỗi input biên.
- Chọn k6 khi cần đo tải, độ trễ và độ bền.
- Chọn Tavern nếu pipeline kiểm thử đã dùng pytest.
- Chọn Venom khi test suite cần kết hợp API, database và shell script.
Nếu bạn đang thiết kế chiến lược tổng thể, xem chiến lược kiểm thử API. Để chạy kiểm thử không cần giao diện, xem công cụ kiểm thử API không giao diện người dùng.
Tổng kết
Công cụ CLI mã nguồn mở giúp bạn kiểm thử API theo cách có thể đọc, fork, tự lưu trữ và chạy trong CI.
- Hurl và Newman xử lý các kiểm tra request hàng ngày.
- Schemathesis và Dredd kiểm tra hợp đồng API.
- k6 kiểm thử tải và hiệu năng.
- Tavern và Venom đưa API test vào các suite lớn hơn.
Bạn không cần chỉ chọn một công cụ. Một pipeline thực tế có thể dùng Hurl cho smoke test, Schemathesis cho kiểm thử từ OpenAPI và k6 cho kiểm thử tải.
Khi bạn cần thiết kế, kiểm thử, mock và tài liệu hóa trong một nơi thay vì tự duy trì chuỗi công cụ, Apidog cung cấp toàn bộ vòng đời cùng apidog-cli cho CI. Tải Apidog để thử CLI cùng các công cụ trên và đánh giá workflow phù hợp với pipeline của bạn.
Top comments (0)