İçindekiler
- Hızlı Karşılaştırma
- WireMock: Güçlü HTTP mock'ları ve kayıt‑yakalama
- MockServer: Expectation tabanlı test stüdyosu
- Mountebank: Protokol‑agnostik servis virtualizasyonu
- Pact: Tüketici‑odaklı contract testing
- Hoverfly: Hafif capture‑replay ve sanal proxy
- Mockoon: Hızlı lokal mock server ve GUI
- Hangisini Seçmelisin?
- Sıkça Sorulan Sorular
Ücretsiz API mocking, contract testing ve service virtualization backend geliştirme sürecinde zaman kazandıran, entegrasyon kaynaklı gecikmeleri azaltan ve CI sürecini güvenilir hale getiren temel yaklaşımlardır. Bu rehberde "Ücretsiz API mocking" odaklı olarak hem local hem CI ortamlarında kullanabileceğin açık kaynaklı araçları; güçlü ve zayıf yönleriyle, hangi senaryoda hangisini tercih etmen gerektiğini anlatacağım.
Mocking ile contract testing veya tam servis virtualizasyonu aynı şey değildir; bazen hızlı bir stub yeterli olur, bazen ise farklı takım ve sürümlerdeki API anlaşmasını (contract) doğrulamak gerekir. Aşağıdaki araçlar farklı ihtiyaçlara cevap veriyor: sabit yanıt veren mock serverlar, HTTP/diğer protokoller için sanal servisler, ve tüketici-sağlayıcı sözleşmelerini (consumer-provider contracts) yöneten çözümler.
Hızlı Karşılaştırma
| Program | Platform | En iyi olduğu iş | Ücret |
|---|---|---|---|
| WireMock | JVM / Docker / Standalone | HTTP API mocking, proxy ve kayıt‑yakalama | Açık kaynak / Ücretsiz |
| MockServer | JVM / Docker / Standalone | Gelişmiş beklenti tabanlı mock ve proxy | Açık kaynak / Ücretsiz |
| Mountebank | Cross‑platform (Node tabanlı) | Multi‑protocol service virtualization (HTTP, TCP, SMTP) | Açık kaynak / Ücretsiz |
| Pact | Multi‑language (Ruby, JS, JVM, vb.) | Consumer‑driven contract testing | Açık kaynak / Ücretsiz |
| Hoverfly | Cross‑platform (Go) | Hafif capture‑replay proxy ve virtualizasyon | Açık kaynak / Ücretsiz |
| Mockoon | Windows/macOS/Linux (masaüstü) | Hızlı lokal mock server oluşturma, GUI | Açık kaynak / Ücretsiz |
WireMock: Güçlü HTTP mock'ları ve kayıt‑yakalama
WireMock, HTTP tabanlı API'ları taklit etmek, istek eşleştirme kuralları yazmak ve proxy aracılığıyla gerçek servis trafiğini yakalayıp stub haline getirmek için sık kullanılan bir araçtır. Java ekosistemine yakın olsa da standalone jar veya Docker image ile dil bağımsız olarak kullanılabilir; kapsamlı eşleştirme, gecikme/başlık simülasyonu ve scenario desteği sunar.

Geliştirme veya entegrasyon testlerinde, gerçek dışı bağımlılıkları izole etmek ve farklı yanıt senaryolarını güvenilir biçimde tekrar üretmek için tercih edilir. CI/CD boru hattına entegrasyonu yaygındır; kaydedilmiş istekleri stub olarak tekrar oynatmak ve deterministik test ortamı sağlamak mümkündür.
Artıları
- Zengin eşleştirme ve yanıt manipülasyonu yetenekleri
- Proxy ile gerçek trafiği yakalayarak stub oluşturma
- Standalone Docker/CLI kullanımı sayesinde dil bağımsız çalışır
Eksileri
- Java temelli olduğu için JVM bilgisi faydalı
- Çok protokollü virtualizasyona yönelik sınırlı destek
Kimler için? HTTP/REST tabanlı servisleri detaylı şekilde taklit etmek, kayıt‑yakalama ve CI entegrasyonuna ihtiyaç duyan backend geliştiriciler için.
MockServer: Expectation tabanlı test stüdyosu
MockServer, HTTP istekleri için beklentiler (expectations) belirleyerek esnek davranışlara izin veren bir mock/proxy sunucusudur. İstek eşleşmelerini kodla veya konfigürasyonla ifade edebilir, dinamik yanıt üretimi ve proxy davranışı sağlayabilir. Özellikle entegrasyon testlerinde belirli sıra ve sayı taleplerini test etmek için uygundur.

MockServer, test kodu içinde programatik olarak beklenti kurulumuna izin verdiği için otomatik testlerde kontrolü elinde tutmak isteyen takımlar tarafından tercih edilir. Docker, Java client ve HTTP API aracılığıyla kullanılabilir.
Artıları
- Programatik expectation kurma ve temizleme imkanı
- Proxy ve kayıt‑tekrar oynatma destekleri
- Docker ve test istemcileri ile kolay entegrasyon
Eksileri
- Konfigürasyon karmaşıklaşabilir, öğrenme eğrisi var
- Çok protokollü virtualizasyonda sınırlamalar (primarily HTTP)
Kimler için? Test sürecinde request/response beklentilerini programatik yönetmek isteyen entegrasyon test ekipleri için.
Mountebank: Protokol‑agnostik servis virtualizasyonu
Mountebank, HTTP dışında TCP, SMTP gibi farklı protokolleri de taklit edebilen, geniş kapsamlı bir service virtualization aracıdır. İstek/yanıt çiftlerini imposter olarak tanımlayabilir, çoklu port ve protokol yönetimi yapabilirsin; bu, mikroservis mimarilerinde heterojen protokollere sahipsen büyük avantaj sağlar.

Mountebank JSON tabanlı konfigürasyonları ve HTTP API'si sayesinde otomasyon ile kolayca yönetilir. Multi‑protocol desteği sayesinde yalnızca HTTP değil, e‑posta veya özel TCP protokollerini test etmek gerektiğinde kurtarıcı olur.
Artıları
- HTTP dışı protokoller için native destek
- JSON temelli API ile otomasyon dostu
- Açık kaynak ve platform bağımsız
Eksileri
- Karmaşık virtualizasyon senaryolarında yapılandırma zahmetli olabilir
- Geniş özellik seti ilk başta fazla gelebilir
Kimler için? Birden fazla protokol kullanan entegrasyonları sanallaştırmak isteyen ekipler için.
Pact: Tüketici‑odaklı contract testing
Pact, consumer‑driven contract testing yaklaşımını popülerleştiren bir protokoldür. Tüketici servisler tarafından oluşturulan sözleşmeleri (pact files) sağlayıcıya doğrulatmak için kullanılır. Bu model, farklı takımların bağımsız olarak sürüm yükseltmesi yaparken API uyumsuzluklarını CI aşamasında yakalamanı sağlar.

Pact çoklu dil desteği (JS, JVM, Ruby, .NET vb.) ve Pact Broker gibi araçlar aracılığıyla sözleşme paylaşım/versiyonlama imkanı sunar. Contract testing, mock server ile benzer ama amacın tüketici-sağlayıcı uyumunu garanti altına almak olduğu için farklı bir test stratejisidir.
Artıları
- Consumer‑driven contract testing için standart çözüm
- Çoklu dil desteği ve Pact Broker entegrasyonu
- CI'da sürüm uyumsuzluklarını yakalamaya uygun
Eksileri
- Contract process kurmak ve sürdürmek operasyonel yük getirebilir
- Bazı dinamik durumları temsil etmek karmaşık olabilir
Kimler için? Mikroservislerde takımlar arası API uyumunu CI aşamasında garanti altına almak isteyenler için.
Hoverfly: Hafif capture‑replay ve sanal proxy
Hoverfly, capture‑replay modeli ile çalışabilen hafif bir proxy ve virtualizasyon aracıdır. Gerçek trafiği yakalayıp kaydetme, sonrasında deterministik stub oynatma, ayrıca simülasyon modları ile latency veya hata senaryoları ekleme gibi özellikleri vardır. Go ile yazılmış olması performans açısından avantaj sağlar.
Tamamen local ve container içinde kolayca çalıştırılabilir; test otomasyonuna entegre edilmesi ve CI'de kullanılması pratiktir. Capture modu, entegrasyon testleri için gerçek senaryoları yakalamanı kolaylaştırır.
Artıları
- Capture‑replay yaklaşımıyla gerçek trafiği stub olarak saklama
- Hafif ve performanslı çalışır
- Delay, error injection gibi simülasyon özellikleri
Eksileri
- Çok karmaşık stateful senaryolarda sınırlamalar olabilir
- Multi‑protocol desteği sınırlıdır, öncelik HTTP
Kimler için? Gerçek trafiği yakalayıp CI'de tekrarlanabilir stublar oluşturmak isteyen ekipler için.
Mockoon: Hızlı lokal mock server ve GUI
Mockoon, GUI tabanlı bir masaüstü uygulamasıyla hızlıca mock API'ler tanımlamanı sağlar. Eğer hızlı prototipleme, front‑end geliştirme için basit backend stub'ları veya takım içi demo sunumları hazırlamak istiyorsan Mockoon pratik bir seçenektir. CLI ve Docker desteği sayesinde otomasyon yetenekleri de vardır.
Mockoon, düşük öğrenme eğrisi ve görsel düzenleyici sayesinde backend gerekmeksizin mock sunucular oluşturmayı kolaylaştırır. Ancak enterprise seviyede contract testing ya da çok protokollü virtualizasyona uygun değildir.
Artıları
- GUI ile hızlı mock oluşturma, yeni başlayanlar için ideal
- Lokal geliştirme ve prototipleme için pratik
- CLI/Docker ile temel otomasyon imkanları
Eksileri
- İleri seviye contract testing veya çok protokollü virtualizasyona uygun değil
- Kompleks dinamik yanıt üretimi sınırlı olabilir
Kimler için? Front‑end geliştiriciler, prototipleme ve hızlı lokal mock ihtiyacı olan backend geliştiriciler için.
Hangisini Seçmelisin?
- Hızlı prototipleme / GUI ihtiyacı: Mockoon
- Detaylı HTTP mocking ve proxy/kayıt ihtiyacı: WireMock
- Programatik expectation yönetimi / entegrasyon testleri: MockServer
- Çok protokollü virtualizasyon: Mountebank
- Consumer‑driven contract testing (takımlar arası uyumluluk): Pact
- Capture‑replay ve hafif virtualizasyon: Hoverfly
Sıkça Sorulan Sorular
Mocking ile contract testing arasındaki temel fark nedir?
Mocking genellikle tek bir test veya geliştirme senaryosu için stub yanıtlar üretmeyi amaçlar; contract testing ise tüketici ve sağlayıcı arasındaki API sözleşmesinin korunduğunu doğrular. Yani mocking daha çok izolasyon, contract testing ise takım uyumu ve API sürüm güvenliği sağlar.
CI/CD içinde bu araçları nasıl kullanmalıyım?
Kısa cevap: test aşamasında deterministik ortam sağlaman yeterli. WireMock, MockServer veya Hoverfly ile CI içinde stubları oynatabilir; Pact ile ise sözleşmeleri doğrulayarak entegrasyon kırılmalarını yakalayabilirsin. Otomasyon için Docker image ve CLI kullanımına öncelik ver.
Local mi yoksa bulut mock servisi mi tercih etmeliyim?
Local mocklar (Mockoon, WireMock standalone) hızlı geliştirme ve offline test için iyidir; ancak ekip paylaşımı, merkezi yönetim veya yüksek ölçek ihtiyacı varsa bulut tabanlı ya da paylaşılan broker/registry (ör. Pact Broker) fayda sağlar. Seçimini ekip boyutu, CI gereksinimleri ve güvenlik/kaynak kısıtlarına göre yap.
Çok protokollü bir test ortamına ihtiyacım varsa hangi araç daha uygundur?
Mountebank multi‑protocol desteğiyle öne çıkar; HTTP dışında TCP, SMTP gibi protokolleri simüle etmen gerektiğinde ilk bakılacak araçlardan biridir.
Hangi durumda Pact kullanmamalıyım?
Eğer tek başına bir uygulamanın izole unit testleri için basit stublar yeterliyse Pact'in sunduğu contract süreci fazla gelebilir. Contract testing operasyonel süreç ve kültür gerektirir; küçük veya tek kişilik projelerde overhead oluşturabilir.
Bu rehberdeki araçların her biri açık kaynaklıdır ve farklı ihtiyaçlara cevap verir. "En İyi Ücretsiz API Dokümantasyon ve Mock Araçları" gibi kaynaklarımızda da API dokümantasyonu ve mock yaklaşımlarına dair farklı perspektifler bulabilirsin; burada ise backend entegrasyon, contract testing ve servis virtualizasyonu özelinde seçim rehberine odaklandık. Seçimini yaparken ekip yapını, CI gereksinimlerini ve hangi protokolleri test ettiğini göz önünde bulundur.







