Çoğu API testi eğitimi sizi bir grafik kullanıcı arayüzüne (GUI) yönlendirir. Ancak terminalde yaşıyorsanız, testleri CI'da çalıştırıyorsanız veya kaynak kodunu okuyabileceğiniz bir araç istiyorsanız, komut satırı API testinin ilginçleştiği yerdir. Açık kaynak CLI araçları size barındırılan bir ürünün sunamayacağı şeyler verir: denetleyebileceğiniz bir lisans, kendi sunucunuzda barındırabileceğiniz bir ikili dosya ve kodunuzun yanına kaydedebileceğiniz bir yapılandırma dosyası.
Bu, “en hızlı araç hangisi” veya “en küçük ikili dosya hangisi” gibi sorulardan farklı bir konudur. Burada odak noktası lisanslama ve kontroldür. Kendi ağınızda hesap açmadan çalıştırabilir misiniz? Kaynak kodu GitHub'da gerçek bir OSI onaylı lisans altında mı? Satıcı gelecek çeyrekte fiyatlandırmayı değiştirirse çalışmaya devam edecek mi? Bu liste bu soruları yanıtlıyor.
Aşağıda REST, GraphQL ve HTTP API'lerini test etmek için sekiz ücretsiz, kaynak kodu mevcut CLI aracı bulunmaktadır; her biri tam lisansıyla, gerçek bir yükleme komutuyla ve çalıştığını gösteren tek bir komutla birlikte verilmiştir. Barındırılan araçları da içeren daha geniş bir genel bakış isterseniz, en iyi ücretsiz API test araçları derlemesine bakabilirsiniz. Uç noktalara elle erişim konusunda tamamen terminal odaklı bir yaklaşım için, REST API testi için curl alternatifleri kılavuzu etkileşimli tarafı ele almaktadır.
Bir CLI aracını API testi için "açık kaynak" yapan nedir?
Pek çok araç ücretsiz olarak indirilebilir. Bu, açık kaynak olmakla aynı şey değildir. Bu liste için, bir araç üç noktada yeterlilik kazanır:
- Gerçek bir lisans. Kaynak kodu OSI onaylı bir lisans (MIT, Apache-2.0, MPL-2.0, AGPL-3.0, BSD) altında halka açıktır. Okuyabilir, çatallayabilir ve ne yapmanıza izin verildiğini bilebilirsiniz.
- Kendi kendine barındırılabilir, hesap gerektirmez. Herhangi bir şeye kaydolmadan tamamını kendi makinenizde veya CI çalıştırıcınızda çalıştırabilirsiniz. Koltuk maliyeti yok, telefonla geri arama zorunluluğu yok.
- Bakımı yapılan ve incelenebilir. Depo, görünür commit geçmişi ve sorunlarıyla GitHub'da bulunur, böylece üzerine bir pipeline kurmadan önce canlı olup olmadığını değerlendirebilirsiniz.
Aşağıdaki her araç ilk iki koşulu karşılamaktadır. Üçüncüyü artık karşılamayanı işaretledim. Lisans seçimi göründüğünden daha önemlidir: AGPL-3.0 (k6), etrafında bir hizmet inşa ederseniz copyleft yükümlülükleri taşırken, MIT ve Apache-2.0 izin vericidir. Bir aracı bir ürüne yerleştirmeden önce lisansı okuyun.
Hurl: düz metin HTTP testleri, tek bir Rust ikili dosyası
Hurl, düz metin formatında yazılmış HTTP isteklerini çalıştırır ve yanıtlarda doğrulamalar yapar. Orange-OpenSource tarafından Rust'ta geliştirilmiştir, arka planda libcurl tarafından desteklenir ve tek bir ikili dosya olarak gönderilir. Testler neredeyse isteklerin kendisi gibi okunur, bu da onları bir çekme isteğinde incelemeyi kolaylaştırır.
Lisans: Apache-2.0. Kaynak: github.com/Orange-OpenSource/hurl.
brew install hurl # veya: cargo install --locked hurl
# login.hurl
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
En iyi kullanım alanları: sürüm kontrolünde okunabilir metin olarak tutmak istediğiniz sözleşme tarzı kontroller ve duman testleri. Dürüst sınırlama: HTTP odaklıdır, bu nedenle gRPC'yi sürmez veya yük oluşturmaz. Basit doğrulama zincirlerinin ötesindeki her şey için bir betik diline başvurmak yerine daha fazla .hurl dosyası yazmanız gerekecektir.
Step CI: CI için tasarlanmış YAML API iş akışları
Step CI, sürekli entegrasyon için yapılmış, YAML ile yapılandırılmış bir iş akışı çalıştırıcısıdır. REST, GraphQL, gRPC, tRPC ve SOAP'u tek bir iş akışı dosyasında kapsar ve bir OpenAPI şemasına karşı yük testi yapabilir ve doğrulama gerçekleştirebilir. Çalıştırıcı ve CLI sonsuza kadar ücretsizdir.
Lisans: MPL-2.0. Kaynak: github.com/stepci/stepci.
npm install -g stepci
# workflow.yml adımları, kontrolleri ve yakalamaları tanımlar
stepci run workflow.yml
En iyi kullanım alanları: çok adımlı bir API akışını tanımlayan tek bir bildirime dayalı dosyayı yerel olarak ve CI'da aynı şekilde çalıştırmak isteyen ekipler. Dürüst sınırlama: MPL-2.0 zayıf bir copyleft lisansıdır, bu nedenle Step CI'ın kendi dosyalarını değiştirirseniz bu değişiklikleri geri paylaşmanız gerekir. Uygulamanızı test etmek için kullanmanız böyle bir yükümlülük taşımaz.
Schemathesis: şemanızdan özellik tabanlı testler
Schemathesis, OpenAPI veya GraphQL şemanızı okur ve Python'un Hypothesis kütüphanesi üzerine inşa edilmiş özellik tabanlı testleri kullanarak binlerce test durumu üretir. Her bir durumu sizin yazmanız yerine, girişleri belirsizleştirerek 500 hatalarını, şema ihlallerini ve belgelerinizin vaat ettikleriyle eşleşmeyen yanıtları bulur.
Lisans: MIT. Kaynak: github.com/schemathesis/schemathesis.
uv pip install schemathesis # veya: pip install schemathesis
schemathesis run https://api.example.com/openapi.json
En iyi kullanım alanları: özellikle bir sürümden önce, test yazmayı hiç düşünmeyeceğiniz uç durum hatalarını yakalamak için. Doğru bir şema tutmak için en güçlü nedenlerden biridir. Dürüst sınırlama: çalışmak için gerçek bir şemaya ihtiyaç duyar ve büyük bir API, kancaları ve seçenekleriyle filtrelemek isteyeceğiniz çok fazla gürültü üretebilir.
Dredd: API açıklamanıza karşı sözleşme testi
Dredd, canlı API'nizin açıklama belgesiyle gerçekten eşleştiğini kontrol eder. Bir OpenAPI (veya API Blueprint) dosyasını ve çalışan bir arka ucu ona yönlendirin, her belgelenmiş isteği tekrar oynatır ve gerçek yanıtı belirtimle karşılaştırır. Dilden bağımsızdır ve kurulum ve kaldırma için kancaları destekler.
Lisans: MIT. Kaynak: github.com/apiaryio/dredd.
npm install -g dredd
dredd apiary.apib http://127.0.0.1:3000
En iyi kullanım alanları: dokümantasyonunuzun ve uygulamanızın birbirinden ayrılmadığını kanıtlamak için. Dürüst sınırlama ve bu gerçek bir sınırlama: Dredd deposu Kasım 2024'te arşivlendi ve salt okunurdur. Hala çalışıyor, ancak artık bakımı yapılmıyor, bu yüzden onu gelecekte düzeltme almayacak kararlı bir araç olarak değerlendirin. Aktif olarak bakımı yapılan şema tabanlı bir denetleyici istiyorsanız, Schemathesis daha güvenli bir seçenektir.
k6: JavaScript ile betiklenmiş yük testi
k6, Grafana'nın yük ve performans testi aracıdır. Testleri JavaScript veya TypeScript ile betikler ve hızlı bir Go motoru onları ölçekli bir şekilde çalıştırır. Sadece tek bir isteğin geçip geçmediğini değil, API'nizin yüzlerce veya binlerce sanal kullanıcı altında nasıl davrandığını bilmeniz gerektiğinde başvurulan açık kaynak seçeneğidir.
Lisans: AGPL-3.0. Kaynak: github.com/grafana/k6.
brew install k6
k6 new script.js # başlangıç testi oluşturur
k6 run script.js
En iyi kullanım alanları: fonksiyonel testlerinizle aynı depoda bulunan performans ve dayanıklılık testleri. Dürüst sınırlama: AGPL-3.0 güçlü bir copyleft lisansıdır. Testleri çalıştırmak için sorun yok, ancak k6'nın kodu etrafında bir hizmet oluşturur ve dağıtırsanız, lisansın gerçek yükümlülükleri vardır; önce okuyun. k6 ayrıca ayrıntılı sözleşme doğrulamalarına değil, yüke odaklanır.
Newman: Postman koleksiyonlarını GUI olmadan çalıştırın
Newman, Postman'ın kendi komut satırı koleksiyon çalıştırıcısıdır. Ekibinizde zaten Postman koleksiyonu olarak kaydedilmiş API istekleri ve testleri varsa, Newman o koleksiyonu terminalden veya CI'da çalıştırır, masaüstü uygulamasına gerek yoktur. Bir Postman iş akışını bir pipeline'a dahil etmenin standart yoludur.
Lisans: Apache-2.0. Kaynak: github.com/postmanlabs/newman.
npm install -g newman
newman run my-collection.json -e staging-environment.json
En iyi kullanım alanları: mevcut Postman koleksiyonlarına sahip ve ek Postman koltukları için ödeme yapmadan CI çalıştırmaları yapmak isteyen ekipler. Dürüst sınırlama: Postman koleksiyon formatına bağlıdır, bu nedenle testleri düz bir yapılandırma dosyası yerine Postman'ın kullanıcı arayüzünde (veya JSON'ında) yazarsınız. Koleksiyonları çalıştırır; API tasarlamaz veya taklit etmez.
Tavern: bir pytest eklentisi olarak API testleri
Tavern, API testlerini YAML'de tanımlayan bir Python kütüphanesi, CLI ve pytest eklentisidir. pytest'e takıldığı için, tüm pytest ekosistemini ücretsiz olarak elde edersiniz: fikstürler, raporlama, paralellik ve zaten kullanıyor olabileceğiniz CI entegrasyonları. REST, MQTT ve gRPC'yi yönetir.
Lisans: MIT. Kaynak: github.com/taverntesting/tavern.
pip install tavern
# test_login.tavern.yaml diğer testlerinizin yanında yer alır
pytest test_login.tavern.yaml
En iyi kullanım alanları: zaten pytest çalıştıran ve API testlerinin birim testlerinin hemen yanında yer almasını isteyen Python şirketleri. Dürüst sınırlama: Python test kurulumunda rahat olduğunuzu varsayar. Yığınınız Python değilse, pytest bağımlılığı bir özellik yerine bir engeldir.
Venom: OVHcloud'dan çoklu yürütücülü entegrasyon testleri
OVHcloud'dan Venom, HTTP istekleri, kabuk betikleri, IMAP, web, veritabanları ve daha fazlası gibi birçok yürütücü türünde entegrasyon testleri çalıştırır. Go ile yazılmıştır, YAML test paketleri kullanır ve CI sistemlerinin doğal olarak okuduğu xUnit sonuç dosyaları üretir. Tek bir testin sadece bir HTTP uç noktasından daha fazlasına dokunması gerektiğinde öne çıkar.
Lisans: BSD (değiştirilmiş). Kaynak: github.com/ovh/venom.
# ikili dosyayı GitHub yayınlarından indirin, ardından:
venom run testsuite.yml
En iyi kullanım alanları: tek bir test paketinde bir API çağrısını bir veritabanı kontrolü veya bir betik adımıyla karıştıran uçtan uca akışlar. Dürüst sınırlama: çok sayıda yürütücü olduğundan, YAML ayrıntılı hale gelir ve belgeler, örnekleri depodan bir araya getireceğinizi varsayar.
Apidog nerede duruyor (ve dürüst bir not)
İşte dürüst kısım. Apidog açık kaynak değildir. Ücretsiz bir katmanı olan ticari bir üründür, bu yüzden kaynak kodu mevcut araçlar listesinde yer almaz. Ancak tek bir nedenden dolayı bilmeye değerdir: yukarıdaki araçların her biri tek bir iş yapar ve Hurl artı Schemathesis artı Newman artı bir mock sunucusunu tutarlı bir iş akışına dikmek, kendinizin sürdürmesi gereken gerçek bir iştir.
Apidog; tasarımı, testi, mock'u ve dokümantasyonu tek bir platformda birleştirir ve apidog-cli test tarafını terminale getirir. Test senaryolarını bir kez yazarsınız, ardından tek bir komutla CI'da çalıştırırsınız:
npm install -g apidog-cli
apidog login --with-token <YOUR_TOKEN>
apidog run --access-token <TOKEN> # hepsi geçerse 0, başarısızlıkta sıfır olmayan bir değerle çıkar
Çıktı, betik yazmayı veya bir yapay zeka aracısına vermeyi kolaylaştıran agentHints.nextSteps içeren yapılandırılmış JSON'dur. Apidog-cli tam kılavuzu, tüm komut setini ayrıntılarıyla açıklar. Yani: açık kaynak değil, ancak ücretsiz katman artı CLI, birkaç tek amaçlı aracı bir araya getirmenin entegre bir alternatifini sunar. Denetleyebileceğiniz bir lisans katı bir gereksinimse, yukarıdaki sekizden birini seçin. Entegre bir iş akışı daha önemliyse, bu bir takas meselesidir.
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 |
Aracı işe uygun seçin. Hızlı, okunabilir istek kontrolleri istediğinizde Hurl veya Newman'a; bir şemanız olduğunda ve sizin için hatalar bulunmasını istediğinizde Schemathesis'e; soru ölçek olduğunda k6'ya; testlerin daha büyük bir pakette yer alması gerektiğinde Tavern veya Venom'a yönelin. Bunları daha büyük bir süreçle karşılaştırıyorsanız, API test stratejileri kılavuzu her türün nerede uyduğunu kapsar ve başsız API test aracı yazısı, hiç kullanıcı arayüzü olmadan testleri çalıştırmayı inceler.
Özet
Açık kaynak CLI araçları, API testlerini kendi şartlarınızda okuyabileceğiniz, çatallayabileceğiniz ve çalıştırabileceğiniz bir yapı sunar. Hurl ve Newman günlük istek kontrollerini halleder, Schemathesis ve Dredd sözleşmenizi uygular, k6 performansı zorlar ve Tavern ile Venom API testlerini daha geniş paketlere dahil eder. Lisansa ve yapılması gereken tek işe göre seçim yapın; iki tanesini birden çalıştırmanıza hiçbir şey engel olmaz.
Bir araç zincirini sürdürmek yerine tasarımı, testi, mock'u ve dokümantasyonu tek bir yerde yapmayı tercih ettiğinizde, Apidog tam yaşam döngüsünü kapsar ve CI için apidog-cli'yi sunar. Yukarıdaki araçlarla birlikte CLI'ı denemek ve pipeline'ınıza hangi karışımın uyduğunu görmek için Apidog'u indirin.
