Çoğu API testi eğitimi bir grafik kullanıcı arayüzüyle (GUI) başlar. Ancak terminalde çalışıyor, testleri CI içinde koşturuyor veya kullandığınız aracın kaynak kodunu incelemek istiyorsanız, komut satırı tabanlı API testi daha uygun olabilir. Açık kaynak CLI araçları; denetlenebilir lisans, kendi altyapınızda çalıştırılabilen ikili dosya ve kodla birlikte sürüm kontrolüne alınabilen yapılandırmalar sunar.
Buradaki seçim kriteri yalnızca hız veya ikili dosya boyutu değildir. Asıl soru kontrol ve lisanslamadır:
- Hesap açmadan, kendi makinenizde veya CI çalıştırıcınızda çalışır mı?
- Kaynak kodu GitHub'da, OSI onaylı bir lisansla yayınlanmış mı?
- Bir sağlayıcının fiyatlandırması değişse bile pipeline'ınız çalışmaya devam eder mi?
Aşağıda REST, GraphQL ve HTTP API'leri test etmek için sekiz kaynak kodu açık CLI aracı bulacaksınız. Her araç için lisans, kurulum komutu ve hızlı başlangıç örneği yer alıyor. Barındırılan araçları da kapsayan daha geniş bir karşılaştırma için en iyi ücretsiz API test araçları derlemesine bakın. Uç noktalara terminalden etkileşimli erişmek için REST API testi için curl alternatifleri kılavuzunu kullanabilirsiniz.
Bir CLI aracını API testi için “açık kaynak” yapan nedir?
Bir aracın ücretsiz indirilebilmesi, onu açık kaynak yapmaz. Bu listedeki araçlar şu ölçütleri karşılar:
- Açık ve gerçek lisans: Kaynak kodu MIT, Apache-2.0, MPL-2.0, AGPL-3.0 veya BSD gibi OSI onaylı bir lisansla herkese açıktır.
- Hesapsız, kendi ortamında çalıştırma: Aracı yerel makinenizde veya CI ortamında hesap oluşturmadan çalıştırabilirsiniz.
- İncelenebilir bakım geçmişi: Depoda commit geçmişi ve issue'lar görünür durumdadır. Böylece pipeline'a eklemeden önce projenin durumunu değerlendirebilirsiniz.
Aşağıdaki araçların tamamı ilk iki koşulu karşılar. Bakımı artık aktif olmayan araçlar ayrıca belirtilmiştir.
Lisansı ayrıca değerlendirin. MIT ve Apache-2.0 izin vericidir. AGPL-3.0 ise, araç etrafında dağıtılan bir hizmet geliştiriyorsanız copyleft yükümlülükleri doğurabilir.
Hurl: Düz metin HTTP testleri
Hurl, düz metin dosyalarındaki HTTP isteklerini çalıştırır ve yanıtları doğrular. Rust ile geliştirilir, libcurl kullanır ve tek ikili dosya olarak dağıtılır.
Lisans: Apache-2.0
Kaynak: github.com/Orange-OpenSource/hurl
Kurulum ve ilk test
brew install hurl
# Alternatif:
# cargo install --locked hurl
Bir test dosyası oluşturun:
cat > login.hurl <<'EOF'
POST https://api.example.com/login
{ "user": "acme", "pass": "s3cret" }
HTTP 200
[Asserts]
jsonpath "$.token" exists
EOF
Testi çalıştırın:
hurl --test login.hurl
Ne zaman seçilmeli?
- Testleri Git içinde okunabilir düz metin olarak saklamak istiyorsanız
- Duman testi veya basit sözleşme kontrolü yapıyorsanız
- Pull request incelemelerinde test senaryolarının kolay okunmasını istiyorsanız
Sınır: Hurl HTTP odaklıdır; gRPC yük testi veya performans testi için tasarlanmamıştır.
Step CI: CI için YAML tabanlı API iş akışları
Step CI, CI kullanımı için tasarlanmış YAML tabanlı bir API iş akışı çalıştırıcısıdır. REST, GraphQL, gRPC, tRPC ve SOAP akışlarını tek dosyada tanımlayabilirsiniz.
Lisans: MPL-2.0
Kaynak: github.com/stepci/stepci
Kurulum ve çalıştırma
npm install -g stepci
workflow.yml dosyanızdaki adımları çalıştırın:
stepci run workflow.yml
Örnek CI komutu:
- name: API workflow testleri
run: stepci run workflow.yml
Ne zaman seçilmeli?
- Çok adımlı API akışlarını deklaratif YAML ile yönetmek istiyorsanız
- Aynı testi yerelde ve CI'da çalıştırmak istiyorsanız
- Farklı API protokollerini tek iş akışında birleştiriyorsanız
Sınır: MPL-2.0 zayıf copyleft lisansıdır. Step CI'ın kendi kaynak dosyalarını değiştirirseniz bu değişiklikler için lisans yükümlülükleri doğabilir.
Schemathesis: Şemadan özellik tabanlı test üretimi
Schemathesis, OpenAPI veya GraphQL şemanızı okuyarak otomatik test durumları üretir. Python Hypothesis altyapısını kullanır; beklenmeyen girdilerle 500 hatalarını, şema ihlallerini ve dokümantasyon-uygulama uyumsuzluklarını bulmaya çalışır.
Lisans: MIT
Kaynak: github.com/schemathesis/schemathesis
Kurulum ve çalıştırma
uv pip install schemathesis
# Alternatif:
# pip install schemathesis
OpenAPI şemasına karşı test çalıştırın:
schemathesis run https://api.example.com/openapi.json
CI içinde örnek kullanım:
schemathesis run "$OPENAPI_URL"
Ne zaman seçilmeli?
- OpenAPI veya GraphQL şemanız varsa
- Elle yazmadığınız uç durumları keşfetmek istiyorsanız
- Yayın öncesinde şema uyumluluğunu ve beklenmeyen hata yanıtlarını taramak istiyorsanız
Sınır: Doğru ve erişilebilir bir şema gerektirir. Büyük API'lerde test hacmini kancalar ve seçeneklerle sınırlamak isteyebilirsiniz.
Dredd: API açıklamasına karşı sözleşme testi
Dredd, çalışan API'nizi OpenAPI veya API Blueprint açıklamanızla karşılaştırır. Belgelenen istekleri çalıştırır ve gerçek yanıtları belirtimle doğrular.
Lisans: MIT
Kaynak: github.com/apiaryio/dredd
Kurulum ve çalıştırma
npm install -g dredd
API Blueprint dosyasını çalışan uygulamaya karşı doğrulayın:
dredd apiary.apib http://127.0.0.1:3000
Ne zaman seçilmeli?
- Dokümantasyon ve uygulamanın birbirinden ayrılmadığını doğrulamak istiyorsanız
- API Blueprint kullanan mevcut bir projeyi test ediyorsanız
- Kurulum ve kaldırma adımları için hook kullanmanız gerekiyorsa
Sınır: Dredd deposu Kasım 2024'te arşivlendi ve salt okunur durumdadır. Araç çalışabilir olsa da aktif bakım veya gelecekte hata düzeltmesi beklememelisiniz. Aktif bakımı yapılan şema tabanlı bir seçenek için Schemathesis daha güvenli bir tercihtir.
k6: JavaScript ile yük ve performans testi
k6, Grafana'nın açık kaynak yük ve performans testi aracıdır. Testleri JavaScript veya TypeScript ile yazarsınız; Go tabanlı motor bunları çok sayıda sanal kullanıcıyla çalıştırır.
Lisans: AGPL-3.0
Kaynak: github.com/grafana/k6
Kurulum ve çalıştırma
brew install k6
Başlangıç betiği oluşturun:
k6 new script.js
Ardından testi çalıştırın:
k6 run script.js
Basit bir HTTP testi örneği:
import http from "k6/http";
import { check } from "k6";
export default function () {
const response = http.get("https://api.example.com/health");
check(response, {
"durum kodu 200": (r) => r.status === 200,
});
}
Ne zaman seçilmeli?
- API'nin yüzlerce veya binlerce sanal kullanıcı altında davranışını ölçmek istiyorsanız
- Performans ve dayanıklılık testlerini kod deposunda tutmak istiyorsanız
- Eşikler, süreler ve hata oranları üzerinden CI başarısızlığı üretmek istiyorsanız
Sınır: k6, ayrıntılı sözleşme doğrulamasından çok yük üretimine odaklanır. Ayrıca AGPL-3.0 lisansını, özellikle k6 kodu etrafında bir hizmet geliştirip dağıtıyorsanız dikkatle inceleyin.
Newman: Postman koleksiyonlarını GUI olmadan çalıştırın
Newman, Postman koleksiyonlarını terminalde ve CI ortamlarında çalıştıran komut satırı aracıdır. Mevcut Postman istekleri ve testleri için masaüstü uygulamasını açmadan otomasyon sağlar.
Lisans: Apache-2.0
Kaynak: github.com/postmanlabs/newman
Kurulum ve çalıştırma
npm install -g newman
Bir koleksiyonu ortam değişkenleriyle çalıştırın:
newman run my-collection.json -e staging-environment.json
CI örneği:
newman run my-collection.json \
-e staging-environment.json \
--bail
--bail, bir hata oluştuğunda çalıştırmayı sonlandırmak için kullanılabilir.
Ne zaman seçilmeli?
- Halihazırda Postman koleksiyonları kullanıyorsanız
- Postman testlerini CI'a taşımak istiyorsanız
- Koleksiyon ve ortam JSON dosyalarını depoda sürümlemek istiyorsanız
Sınır: Postman koleksiyon formatına bağlıdır. Testleri Postman arayüzünde veya koleksiyon JSON'unda tanımlarsınız; Newman API tasarlamaz ya da mock sunucu sağlamaz.
Tavern: pytest eklentisi olarak API testleri
Tavern, YAML ile API testleri tanımlamanıza izin veren Python kütüphanesi, CLI ve pytest eklentisidir. pytest ekosistemindeki fikstür, raporlama, paralel çalıştırma ve CI entegrasyonlarından yararlanır.
Lisans: MIT
Kaynak: github.com/taverntesting/tavern
Kurulum ve çalıştırma
pip install tavern
YAML test dosyasını pytest ile çalıştırın:
pytest test_login.tavern.yaml
Test dosyalarını mevcut Python testlerinizin yanında tutabilirsiniz:
tests/
├── test_users.py
├── test_login.tavern.yaml
└── conftest.py
Ne zaman seçilmeli?
- Zaten pytest kullanıyorsanız
- API testlerini birim ve entegrasyon testleriyle aynı test yapısında tutmak istiyorsanız
- REST, MQTT veya gRPC testlerini Python ekosistemiyle çalıştırmak istiyorsanız
Sınır: Python ve pytest kurulumunda rahat olmayı gerektirir. Python dışındaki yığınlarda bu bağımlılık avantaj yerine engel olabilir.
Venom: Çoklu yürütücülü entegrasyon testleri
Venom, OVHcloud tarafından geliştirilen Go tabanlı bir entegrasyon testi aracıdır. HTTP çağrıları, kabuk betikleri, IMAP, web ve veritabanı gibi farklı yürütücüleri aynı test paketinde birleştirebilir. CI araçlarının okuyabileceği xUnit sonuçları üretir.
Lisans: BSD (değiştirilmiş)
Kaynak: github.com/ovh/venom
Kurulum ve çalıştırma
İkili dosyayı GitHub yayınlarından indirdikten sonra test paketinizi çalıştırın:
venom run testsuite.yml
Bir API çağrısını başka adımlarla aynı akışta birleştirmek için YAML test paketi kullanabilirsiniz.
Ne zaman seçilmeli?
- Bir API çağrısının ardından veritabanı doğrulaması yapmanız gerekiyorsa
- Kabuk komutları, HTTP kontrolleri ve başka entegrasyon adımlarını tek pakette topluyorsanız
- xUnit raporlarını mevcut CI sisteminize aktarmak istiyorsanız
Sınır: Çok sayıda yürütücü seçeneği nedeniyle YAML yapılandırması ayrıntılı hale gelebilir. Örnekleri depodan bir araya getirmeniz gerekebilir.
Apidog nerede duruyor?
Burada net bir ayrım var: Apidog açık kaynak değildir. Ücretsiz katmanı olan ticari bir üründür; bu nedenle yukarıdaki kaynak kodu açık araçlar listesine dahil değildir.
Buna rağmen, birden fazla tek amaçlı aracı aynı süreçte birleştirmek istemeyen ekipler için değerlendirilebilir. Apidog, tasarım, test, mock ve dokümantasyon işlerini tek platformda toplar. apidog-cli ise test çalıştırmalarını terminale ve CI'a taşır.
CLI ile test çalıştırma
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --access-token <TOKEN>
# Tüm testler geçerse 0,
# hata varsa sıfır olmayan çıkış kodu döner.
Çıktı, betiklerde veya yapay zeka aracılarıyla işlemek için agentHints.nextSteps içeren yapılandırılmış JSON'dur. Komutların tamamı için Apidog-cli tam kılavuzu sayfasına bakın.
Açık ve denetlenebilir lisans katı bir gereksinimse yukarıdaki sekiz araçtan birini seçin. Tasarım, test, mock ve dokümantasyonu tek iş akışında birleştirmek daha önemliyse bu farklı bir takastır.
Nasıl seçilir?
| Araç | En iyi kullanım alanı | Yükleme | Açık kaynak mı? | Lisans |
|---|---|---|---|---|
| Hurl | Git'te düz metin HTTP doğrulamaları | brew install hurl |
Evet | Apache-2.0 |
| Step CI | Bildirime dayalı CI iş akışları | npm i -g stepci |
Evet | MPL-2.0 |
| Schemathesis | Bir şemadan özellik tabanlı bulanıklaştırma | pip install schemathesis |
Evet | MIT |
| Dredd | Doküman-uygulama karşılaştırmalı sözleşme testleri | npm i -g dredd |
Evet (arşivlenmiş) | MIT |
| k6 | Yük ve performans testi | brew install k6 |
Evet | AGPL-3.0 |
| Newman | CI'da Postman koleksiyonlarını çalıştırma | npm i -g newman |
Evet | Apache-2.0 |
| Tavern | pytest içinde API testleri | pip install tavern |
Evet | MIT |
| Venom | Çoklu yürütücülü entegrasyon paketleri | GitHub yayınları | Evet | BSD |
| apidog-cli | Entegre tasarım-test iş akışı | npm i -g apidog-cli |
Hayır (ücretsiz katman) | Ticari |
Seçimi test türüne göre yapın:
- Okunabilir HTTP kontrolleri: Hurl
- Mevcut Postman koleksiyonlarını CI'da çalıştırma: Newman
- Şemadan otomatik uç durum testi üretme: Schemathesis
- Dokümantasyon ve uygulama uyumluluğu: Dredd
- Yük, gecikme ve dayanıklılık testi: k6
- pytest tabanlı Python testleri: Tavern
- API, veritabanı ve betik adımlarını tek pakette birleştirme: Venom
- YAML tabanlı çok adımlı API iş akışları: Step CI
Daha geniş bir test sürecinde bu araçların konumunu değerlendirmek için API test stratejileri kılavuzuna bakın. Tamamen arayüzsüz çalıştırma seçenekleri için başsız API test aracı yazısı da yararlı olabilir.
Özet
Açık kaynak CLI araçları, API testlerini kendi ortamınızda çalıştırabileceğiniz, inceleyebileceğiniz ve sürüm kontrolüne alabileceğiniz bir yapıya taşır.
- Hurl ve Newman günlük istek doğrulamaları için uygundur.
- Schemathesis ve Dredd sözleşme ve şema uyumluluğunu kontrol eder.
- k6 performans sınırlarını ölçer.
- Tavern ve Venom, API testlerini daha geniş test paketlerine dahil eder.
- Step CI, deklaratif API iş akışları için kullanılabilir.
Lisansı, mevcut teknoloji yığınınızı ve testin amacını birlikte değerlendirin. Tek bir araç seçmek zorunda değilsiniz; örneğin işlevsel kontroller için Hurl, şema testi için Schemathesis ve yük testi için k6'yı aynı pipeline içinde kullanabilirsiniz.
Tasarım, test, mock ve dokümantasyonu tek yerde yönetmek isterseniz Apidog ve CI için apidog-cli entegre bir alternatif sunar. Pipeline'ınıza uygun yaklaşımı görmek için Apidog'u indirin.
Top comments (0)