API'leri önce bir spesifikasyondan oluşturuyorsanız, muhtemelen aynı yol ayrımına geldiniz: OpenAPI dosyanızı yürütülebilir sözleşme kontrollerine dönüştüren bir araç mı istersiniz, yoksa API'yi uçtan uca tasarlayan, taklit eden ve test eden bir araç mı? Specmatic ve Apidog CLI her ikisi de "önce spesifikasyon" kampındadır, ancak iş akışının farklı bölümlerini vurgularlar. Bu kılavuz, doğru seçimi yapabilmeniz için onları karşılaştırır ve gerçek API sözleşme testi konseptlerine ve yol boyunca resmi OpenAPI Spesifikasyonuna dayanır.
Kısa versiyon
Specmatic, API spesifikasyonunuzu yürütülebilir bir sözleşme olarak ele alır. Spesifikasyondan testler üretir ve sağlayıcınızı buna karşı çalıştırır, ayrıca tüketicilerin aynı sözleşmeye göre geliştirme yapması için bir saplama görevi görebilir. Bu, özellikle mikroservis kurulumlarında tüketici/sağlayıcı sözleşme doğrulaması için onu güçlü kılar.

Apidog, önce spesifikasyon mantığına dayalı bir API platformudur. API'yi OpenAPI'ye göre görsel olarak tasarlar, işlevsel test senaryoları oluşturur, şema tabanlı sahteleri devreye sokar ve her şeyi CI'da apidog run ile çalıştırırsınız. Yaşam döngüsü boyunca daha geniştir ve REST, GraphQL, gRPC, WebSocket ve daha fazlasını kapsar.

İki araç da diğerinin kesin bir üst kümesi değildir. Specmatic, kod olarak sözleşme konusunda derinlemesine ilerler. Apidog, tasarım, sahte, işlevsel testler ve CI yürütmesi genelinde genişler. Birçok ekip ikisini de kullanabilir.
Specmatic'in iyi yaptığı şeyler
Specmatic'in temel fikri açıktır: spesifikasyonunuz sözleşmedir ve sözleşme yürütülebilirdir. Bir OpenAPI, AsyncAPI, GraphQL, gRPC veya WSDL dosyasına işaret edin, pozitif ve negatif senaryolar dahil olmak üzere test kodunu elle yazmadan otomatik olarak testler türetir.
İki yetenek öne çıkıyor:
- Sağlayıcı doğrulaması. Specmatic, çalışan hizmetinizi spesifikasyona karşı çalıştırır ve belgenin vaat ettikleri ile uygulamanın döndürdükleri arasındaki herhangi bir sapmayı işaretler. İşleyiciniz sessizce bir alanı düşürür veya bir durum kodunu değiştirirse, sözleşme testi bunu yakalar.
- Hizmet sanallaştırması (saplama olarak sözleşme). Aynı spesifikasyon akıllı bir saplama olarak çalışabilir. Tüketici ekipleri gerçek sağlayıcıyı beklemek yerine bu saplamaya karşı geliştirme yapar ve saplama sözleşmeden türetildiği için tüketici ve sağlayıcı tek bir doğruluk kaynağına bağlı kalır.
Specmatic, GitHub'da açık kaynaklıdır, CI/CD için oluşturulmuş bir CLI olarak çalışır ve ticari katmanlar ekler (görsel arayüz için Studio, yönetim ve analiz için Insights). Ayrıca, AsyncAPI, GraphQL, gRPC, WSDL ve Kafka, JMS ve RabbitMQ gibi olay güdümlü arka uçlar için destekle düz REST'in çok ötesine geçer. Ana sorununuz, farklı taşıma yöntemlerinde paylaşılan bir sözleşmeye karşı bağımsız olarak dağıtılan hizmetleri dürüst tutmaksa, bu odaklanmış, yetenekli bir yanıttır.
Dürüst bir çerçeve: Specmatic, sözleşme doğrulaması ve sanallaştırma üzerine kuruludur. API tasarım yüzeyiniz veya tam işlevsel test paketiniz olmaya çalışmıyor ve bu odak noktası önemli. Spesifikasyonu başka bir yerde yazıp sürdürmeye devam edersiniz; Specmatic'in değeri, bu spesifikasyon var olduğunda ve uygulanmasını istediğinizde devreye girer.
Apidog CLI'ın iyi yaptığı şeyler
Apidog CLI, Apidog platformu için komut satırı çalıştırıcısıdır. Uygulamada API'leri tasarlar ve test eder, ardından bu test senaryolarını tek bir komutla herhangi bir pipeline'da başsız olarak yürütürsünüz. Kurulum, bayraklar ve çıkış kodu davranışı apidog run komut referansında ele alınmıştır.

Apidog'un farklılaştığı noktalar:
- Tek bir yerde önce spesifikasyon tasarımı artı sahte artı test. OpenAPI tanımını görsel olarak oluşturur, bundan şema tabanlı bir sahte üretir ve yanıtlara karşı işlevsel iddialar yazarsınız. Hem sahte hem de testler aynı spesifikasyondan okur, böylece tasarım ve doğrulama yakın kalır. Şema öncelikli sahte iş akışının nasıl bir araya geldiğini görün.
- İşlevsel test senaryoları, sadece sözleşme şekli değil. "Yanıt şemayla eşleşiyor mu" ötesinde, istekleri zincirler, adımlar arasında veri aktarır, değerler üzerinde iddialarda bulunur ve veri odaklı yinelemeler çalıştırırsınız. Bu, saf sözleşme kontrollerinden çok uçtan uca API testine daha yakındır.
- Çok protokollü kapsama. REST, GraphQL, gRPC, SOAP ve WebSocket hepsi aynı iş akışı üzerinden çalışır, bu da yığınınız sadece REST olmadığında yardımcı olur.
apidog runile CI yürütmesi. CLI, uygun çıkış kodları ve makine tarafından okunabilir raporlar döndürür, böylece GitHub Actions, GitLab CI, Jenkins ve diğerlerine kolayca entegre edilebilir. Apidog CLI tam kılavuzu, eksiksiz bir pipeline çalıştırmasını anlatır.
Dürüst bir çerçeve: Apidog, yanıtları şemanıza göre doğrular ve CI'da işlevsel testler çalıştırır, ayrıca spesifikasyondan tasarım ve sahte oluşturur. Pact tarzı bir tüketici odaklı sözleşme aracı değildir. Amacınız, bağımsız olarak sahip olunan tüketici ve sağlayıcı depoları arasında resmi bir sözleşme aracı el sıkışmasıysa, bu Specmatic'in uzmanlık alanı, Apidog'un değil.
Yan yana karşılaştırma
| Alan | Specmatic | Apidog CLI |
|---|---|---|
| Birincil vurgu | Kod olarak sözleşme: sağlayıcıyı spesifikasyona karşı doğrula, saplama olarak sözleşme | Önce spesifikasyon tasarımı, sahte, işlevsel testler, CI çalıştırması |
| Test üretimi | Spesifikasyondan pozitif/negatif testleri otomatik olarak üretir | Senaryoları görsel olarak oluşturursunuz; şema doğrulaması yerleşiktir |
| Sağlayıcı/tüketici sözleşme doğrulaması | Temel güç | Şema doğrulaması, bir sözleşme aracı değil |
| Taklit (Mocking) | Sözleşmeden hizmet sanallaştırması | OpenAPI tasarımından şema odaklı sahte sunucu |
| Protokoller | OpenAPI, AsyncAPI, GraphQL, gRPC, WSDL, mesajlaşma (Kafka, JMS, vb.) | REST, GraphQL, gRPC, SOAP, WebSocket |
| Arayüz | CLI artı ticari Studio/Insights | Görsel uygulama artı apidog run CLI |
| İşlevsel/Uçtan Uca akışlar | Daha hafif; sözleşme senaryolarına odaklanmış | Güçlü: zincirlenmiş adımlar, veri odaklı çalıştırmalar, iddialar |
| Açık kaynak | Evet (çekirdek) | Ücretsiz katman; platform ticari |
| En iyi olduğu alan | Bağımsız hizmetleri paylaşılan bir sözleşmeye karşı dürüst tutmak | Bir API'yi yaşam döngüsü boyunca tasarlamak, taklit etmek ve test etmek |
Her birinin kazandığı yer
Ekipler arasındaki sözleşme zor kısım olduğunda Specmatic'i seçin. Farklı ekipler tarafından sahip olunan birkaç hizmet çalıştırıyorsanız, bunları bağımsız olarak dağıtıyorsanız ve sürekli olarak birbirinizi zorluyorsanız, Specmatic'in sağlayıcı doğrulaması ve saplama olarak sözleşme özellikleri, tam olarak bu sorun üzerinde sıkı bir geri bildirim döngüsü sağlar. Otomatik olarak oluşturulan testler, spesifikasyonlar sık sık değiştiğinde önemli olan sözleşme iddialarını elle yazmamanız anlamına gelir.
Tasarımından CI'a kadar tek bir iş akışı istiyorsanız Apidog CLI'ı seçin. Spesifikasyonu yazıyorsanız, arka uç gelmeden önce ön uç için taklit ediyorsanız, zincirlenmiş isteklerle işlevsel testler yazıyorsanız ve her gönderimde bunları çalıştırıyorsanız, Apidog tüm bunları tek bir platformda tutar. Bir tasarım aracı, bir taklit aracı ve bir test çalıştırıcısı arasında bağlam değiştirmezsiniz, çünkü aynı projeyi ve aynı OpenAPI tanımını paylaşırlar. REST dışındaki protokolleri test ettiğinizde de yardımcı olur, çünkü gRPC ve WebSocket aynı raylarda ilerler. Hareketli parçalara daha derinlemesine bakmak için, sözleşme testi ve taklit sunucuları hakkındaki kılavuz, tasarım, taklit ve doğrulamanın nasıl hizalandığını kapsar.
Hızlı bir sağlama: sorununuzu açıklayan cümle "hizmetlerimiz birbirinin sözleşmelerini bozmaya devam ediyor" ile başlıyorsa, Specmatic'e yönelin. "Bu API'yi daha hızlı tasarlamamız, taklit etmemiz ve test etmemiz gerekiyor" ile başlıyorsa, Apidog'a yönelin. Her iki cümle de doğruysa, o zaman ikisini yan yana çalıştırmak için bir durum vardır.
Bunları birlikte kullanabilir misiniz?
Evet, ve bu makul bir kurulumdur. OpenAPI dosyanızı paylaşılan doğruluk kaynağı olarak ele alın. Apidog'da onu tasarlayın ve yineleyin, tüketiciler için şema odaklı sahteyi oluşturun ve CI'da apidog run ile işlevsel test senaryolarınızı çalıştırın. Ardından, bağımsız olarak sahip olunan hizmetler arasında resmi sağlayıcı-sözleşme doğrulamasına ihtiyacınız olan yere Specmatic'i ekleyin, böylece herhangi bir sapma yapıyı sahneye ulaşmadan önce bozar.
İki araç, önce spesifikasyon temeli üzerinde örtüşür, ancak farklı katmanları vurgular. Apidog, tasarım, sahte ve işlevsel CI yürütmesine sahiptir. Specmatic, ekipler arası sözleşme doğrulaması ve sanallaştırmaya sahiptir. Birlikte kullanıldığında, geniş bir yaşam döngüsü kapsamı ve sıkı bir sözleşme geçidi elde edersiniz.
Sıkça sorulan sorular
Apidog, Specmatic'e bir alternatif midir?
Bazı işler için evet, diğerleri için ise tam olarak değil. Temel olarak bir API'yi bir spesifikasyondan tasarlamak, taklit etmek, işlevsel testler yazmak ve bunları CI'da çalıştırmak istiyorsanız, Apidog bu alanı ve daha fazlasını kapsar. Özellikle bir aracı tarzı el sıkışma ile tüketici odaklı sözleşme doğrulamasına ihtiyacınız varsa, Specmatic bunun için özel olarak tasarlanmıştır. Farklı ağırlık merkezlerine sahip örtüşen, önce spesifikasyon araçları olarak düşünün, bire bir temiz bir değişim değil.
Apidog CLI sözleşme testi yapar mı?
Apidog, test çalıştırmalarının bir parçası olarak API yanıtlarını OpenAPI şemanıza göre doğrular, bu da spesifikasyon ile uygulama arasındaki yapısal sapmayı yakalar. Bu, tek bir API için en yaygın sözleşme testi ihtiyacıdır. Ayrı tüketici ve sağlayıcı depoları arasında Pact tarzı bir sözleşme aracı olarak hareket etmez. API sözleşme testinin ne olduğuna dair bölüm, şema doğrulamasının nerede bittiğini ve aracı tarzı sözleşmelerin nerede başladığını açıklar.
Hangisi CI/CD'ye daha iyi uyar?
Her ikisi de CI'da başsız çalışır. Specmatic, pipeline'lar için yapılmış bir CLI gönderir ve spesifikasyonunuzdan sözleşme testlerini otomatik olarak üretir. Apidog, görsel test senaryolarınızı apidog run ile çalıştırır, standart çıkış kodları döndürür ve pipeline'ınızın ayrıştırabileceği raporlar yayar. Daha iyi uyum, CI geçidinizin "hizmetler arasındaki sözleşmeyi doğrula" (Specmatic) mı yoksa "bu API için tam işlevsel paketi çalıştır" (Apidog) mı olduğuna bağlıdır.
Herhangi bir araçla test kodu yazmam gerekiyor mu?
Çoğunlukla hayır. Specmatic, spesifikasyondan testler üretir, bu nedenle sözleşme senaryoları için elle yazılacak çok az şey vardır. Apidog, iddialar ve veri odaklı yinelemeler içeren görsel bir senaryo oluşturucu kullanır, bu nedenle testleri betiklemek yerine yapılandırırsınız. Her ikisi de kod odaklı bir çerçeveye kıyasla elle yazılan test kodunu azaltır.
Sonuç
Specmatic ve Apidog CLI her ikisi de spesifikasyondan başlar, ardından farklı yönlere gider. Specmatic, kod olarak sözleşme için daha keskin bir araçtır: bir sağlayıcıyı spesifikasyonuna göre doğrular ve tüketiciler için sanallaştırır. Apidog CLI daha geniş bir araçtır: protokoller arası işlevsel testleri tasarlar, taklit eder ve çalıştırır, CI'da temiz bir apidog run adımıyla. Seçim, darboğazınızın ekipler arası sözleşmeler mi yoksa tam yaşam döngüsü API çalışması mı olduğuna bağlıdır ve her iki soruna sahip ekipler için ikisini birlikte kullanmak mantıklı bir kalıptır.
Tek bir platformda önce spesifikasyon, taklit ve CI'ya hazır test iş akışını mı istiyorsunuz? Apidog'u indirin ve ilk OpenAPI odaklı test paketinizi çalıştırın veya Apidog'un API yaşam döngüsü boyunca neler sunduğunu keşfedin. Tasarımdan CI'ya akışın Apidog'da nasıl çalıştığını pipeline'ınıza bağlamadan önce görün.
