DEV Community

Cover image for Ücretsiz Açık Kaynak CLI API Test Araçları
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Ücretsiz Açık Kaynak CLI API Test Araçları

Ç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.

Apidog'u bugün deneyin

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:

  1. 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.
  2. Hesapsız, kendi ortamında çalıştırma: Aracı yerel makinenizde veya CI ortamında hesap oluşturmadan çalıştırabilirsiniz.
  3. İ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
Enter fullscreen mode Exit fullscreen mode

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

Testi çalıştırın:

hurl --test login.hurl
Enter fullscreen mode Exit fullscreen mode

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

workflow.yml dosyanızdaki adımları çalıştırın:

stepci run workflow.yml
Enter fullscreen mode Exit fullscreen mode

Örnek CI komutu:

- name: API workflow testleri
  run: stepci run workflow.yml
Enter fullscreen mode Exit fullscreen mode

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

OpenAPI şemasına karşı test çalıştırın:

schemathesis run https://api.example.com/openapi.json
Enter fullscreen mode Exit fullscreen mode

CI içinde örnek kullanım:

schemathesis run "$OPENAPI_URL"
Enter fullscreen mode Exit fullscreen mode

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

API Blueprint dosyasını çalışan uygulamaya karşı doğrulayın:

dredd apiary.apib http://127.0.0.1:3000
Enter fullscreen mode Exit fullscreen mode

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

Başlangıç betiği oluşturun:

k6 new script.js
Enter fullscreen mode Exit fullscreen mode

Ardından testi çalıştırın:

k6 run script.js
Enter fullscreen mode Exit fullscreen mode

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,
  });
}
Enter fullscreen mode Exit fullscreen mode

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

Bir koleksiyonu ortam değişkenleriyle çalıştırın:

newman run my-collection.json -e staging-environment.json
Enter fullscreen mode Exit fullscreen mode

CI örneği:

newman run my-collection.json \
  -e staging-environment.json \
  --bail
Enter fullscreen mode Exit fullscreen mode

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

YAML test dosyasını pytest ile çalıştırın:

pytest test_login.tavern.yaml
Enter fullscreen mode Exit fullscreen mode

Test dosyalarını mevcut Python testlerinizin yanında tutabilirsiniz:

tests/
├── test_users.py
├── test_login.tavern.yaml
└── conftest.py
Enter fullscreen mode Exit fullscreen mode

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

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

Çı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)