TL;DR
SoapUI sahte hizmetleri, SOAP veya REST uç noktalarını yerel olarak simüle eder ancak çalışan bir Java süreci, manuel dağıtım yapılandırması gerektirir ve paylaşılan bir makine olmadan bir ekip arasında paylaşılamaz. Apidog'un Akıllı Sahtesi (Smart Mock), API şemanızdan sahte yanıtlar üretir, bulutta çalışır ve ekibinizle otomatik olarak paylaşılır.
Giriş
Sahte hizmetler (mock services), API geliştirmede yaygın bir sorunu çözer: istemci kodunuzun bir hizmeti, hizmet hazır olmadan önce nasıl işlediğini test etmek istersiniz ya da gerçek bir sistemde hata veya yavaş yanıtlar gibi uç durumları tetiklemeden test etmek istersiniz.
SoapUI'nin sahte hizmet özelliği ilk sürümlerden beri mevcuttur ve çalışır. Yapılandırdığınız kurallara göre isteklere yanıt veren yerel bir HTTP sunucusu çalıştırır. Sorun şu ki, bu yerel süreç sürtünme yaratır: SoapUI'yi kapattığınızda ölür, diğer ekip üyeleri ağ hileleri olmadan ona erişemez ve yapılandırma arayüzü hantaldır.
Bu kılavuz, SoapUI sahte hizmetlerinin nasıl çalıştığını, nasıl kurulacağını, ekiplerin karşılaştığı yaygın sorunları ve Apidog yaklaşımının nasıl karşılaştırıldığını ele almaktadır.
SoapUI Sahte Hizmetleri Nasıl Çalışır?
SoapUI, projenizdeki mevcut SOAP veya REST arayüzlerinden sahte hizmetler oluşturur. Sahte hizmet:
- Yapılandırdığınız yerel bir portu dinler (örneğin,
http://localhost:8088/MockService) - Gelen istekleri yakalar
- İsteği, dağıtım mantığı kullanarak bir "sahte yanıtla" eşleştirir
- Yapılandırılan yanıtı döndürür
SOAP hizmetleri için SoapUI, WSDL'nizden sahte yanıtları otomatik olarak oluşturabilir ve her işlem için taslak yanıtlar (stub responses) yaratabilir. Bu, bir hizmet henüz mevcut değilken veya gerçek uç noktaya erişiminiz yokken bir hizmeti simüle etmek için kullanışlıdır.
SoapUI Sahte Hizmeti Kurulumu (adım adım)
Bir SOAP Arayüzü İçin
- SoapUI projenizde, proje ağacındaki bir SOAP arayüzüne sağ tıklayın.
- “Generate MockService” (Sahte Hizmet Oluştur) seçeneğini seçin.
- Açılan iletişim kutusunda şunları yapılandırın:
- Hizmet adı (örneğin, “OrderService Mock”)
- Port numarası (varsayılan 8088'dir; eğer port kullanımdaysa değiştirin)
- Yol (örneğin,
/orders)
- Tamam'a tıklayın. SoapUI projenizin ağacında bir MockService düğümü oluşturur.
- MockService düğümünü genişletin. Arayüzdeki her SOAP işlemi için bir “MockOperation” göreceksiniz.
- Sahte yanıt düzenleyicisini açmak için bir MockOperation'a çift tıklayın.
- Simüle etmek istediğiniz değerleri döndürmek için SOAP yanıt XML'ini düzenleyin.
- Yerel sunucuyu başlatmak için MockService düzenleyicisindeki yeşil oynatma düğmesine tıklayın.
Sahte hizmetiniz artık http://localhost:8088/orders adresinde çalışıyor. İstemci kodunuzu bu URL'ye yönlendirin.
Bir REST Arayüzü İçin
- Proje ağacındaki bir REST arayüzüne veya kaynağına sağ tıklayın.
- “Add to MockService” (Sahte Hizmete Ekle) veya “Generate MockService” (Sahte Hizmet Oluştur) seçeneğini seçin.
- Yukarıdaki gibi port ve yolu yapılandırın.
- Her kaynak/metot için sahte yanıt gövdesini ve durum kodunu yapılandırın.
- Sahte hizmeti başlatın.
Dağıtımı Yapılandırma
Varsayılan olarak, SoapUI'nin sahte hizmeti bulduğu ilk sahte yanıtı döndürür. Farklı girişler için farklı yanıtlar istiyorsanız, bir "dağıtım betiği" (Groovy) yapılandırın veya "SEQUENCE" dağıtım türünü kullanın.
Sıralı dağıtım (Sequence dispatch): Ardışık çağrılarda yanıtları sabit bir sırayla döndürür. Çağrı 1, yanıt A'yı alır; çağrı 2, yanıt B'yi alır.
BETİK dağıtım (SCRIPT dispatch): Bir Groovy betiği, isteği inceler ve mantığa dayalı olarak bir yanıt adı döndürür.
Örnek dağıtım betiği:
def request = mockRequest.getRequestContent()
if (request.contains("orderId>12345")) {
return "OrderFoundResponse"
} else {
return "OrderNotFoundResponse"
}
Birden fazla adlandırılmış sahte yanıt (örneğin, "OrderFoundResponse", "OrderNotFoundResponse") oluşturursunuz ve dağıtım betiği, gelen istek içeriğine göre hangisini döndüreceğini seçer.
Yaygın SoapUI Sahte Hizmet Sorunları
Sorun 1: SoapUI Kapandığında Sahte Hizmet Durur
SoapUI'nin sahte hizmeti, SoapUI JVM sürecinin bir parçası olarak çalışır. SoapUI'yi kapattığınızda, sahte hizmet durur. Sahte hizmeti kullanan ekip arkadaşları erişimini kaybeder.
Geçici çözümler:
- SoapUI'yi özel bir makine veya sanal makinede açık tutun
- SoapUI'nin komut satırı sahte sunucu seçeneğini kullanın:
mockservicerunner.sh -p 8088 -s "OrderService Mock" project.xml - Sahte hizmeti her zaman çalıştıran kalıcı bir paylaşılan makine kullanın
Bunların hiçbiri zarif değildir. Komut satırı seçeneği yardımcı olur, ancak yine de SoapUI ve Java kurulu bir makine gerektirir.
Sorun 2: Sahte Hizmeti Ekip Genelinde Paylaşma
localhost:8088 üzerindeki bir sahte hizmete yalnızca onu çalıştıran kişi erişebilir. Ekip arkadaşlarının aynı sahte hizmete erişebilmesi için o makineye ağ erişimi (güvenlik duvarı kuralları, VPN kurulumu) veya sahte hizmeti paylaşılan bir sunucuda çalıştırmanız gerekir.
Sorun 3: Karmaşık XML ile Dağıtım Betikleri Bozulur
SoapUI dağıtım betikleri, ham XML gövdesinde Groovy dize eşleştirmesi kullanır. SOAP zarfları ad alanlarına sahiptir ve aynı mantıksal değer, istemciye bağlı olarak farklı ad alanı önekleriyle görünebilir. <orderId>12345</orderId> gibi değişmez dizeleri arayan betikler, önek farklı olduğunda bozulur.
Düzeltme, dağıtım betiğinde SoapUI’nin GroovyUtils sınıfını kullanarak uygun XML ayrıştırması gerektirir, bu da karmaşıklığı artırır.
Sorun 4: Durum Çağrılar Arasında Kalıcı Değildir
SoapUI sahte hizmetleri varsayılan olarak durumsuzdur (stateless). Bir oluşturma-sonra-okuma iş akışını (oluşturmak için POST, almak için GET) taklit etmek isterseniz, durumu paylaşılan bir değişkende saklayan bir Groovy dağıtım betiğine ihtiyacınız vardır. Bu çalışır ancak kırılgandır.
Sorun 5: Sahte Hizmetler İçin SSL
Bir SoapUI sahte hizmeti için HTTPS yapılandırmak, bir anahtar deposu kurmayı, SoapUI'nin SSL ayarlarını yapılandırmayı ve istemcileri doğru sertifikaya yönlendirmeyi gerektirir. Bu, yalnızca HTTP kullanan sahte hizmetlerden önemli ölçüde daha karmaşıktır.
Apidog Akıllı Sahtesi: Karşılaştırma
Apidog'un sahte hizmet yaklaşımı, çalışan bir süreçten değil, API tasarımından başlar.
Apidog'da bir API uç noktası (metot, yol, istek şeması, yanıt şeması) tanımladığınızda, Apidog bulutta otomatik olarak bir sahte uç nokta oluşturur. Yapılandırma gerekmez.
Sahte URL şöyle görünür: https://{proje-adınız}.mock.apidog.io/orders/{id}
Bu URL:
- Her zaman çalışır (başlatılacak veya durdurulacak yerel bir süreç yoktur)
- Projeye erişimi olan her ekip üyesi tarafından erişilebilir
- Tanımladığınız şemadan yanıtlar üretir
Apidog Sahte Yanıtları Nasıl Oluşturur?
Apidog, yanıt şemanızı (JSON Schema veya OpenAPI yanıt tanımı) okur ve gerçekçi sahte veriler üretir. orderId'nin UUID biçiminde bir string olduğunu belirten bir şema, rastgele bir UUID döndürür. amount'ın 0 ile 10000 arasında bir number olduğunu belirten bir şema, bu aralıkta bir sayı döndürür.
Belirli alanlar için özel sahte kurallar da yapılandırabilirsiniz. Tahmin edilebilir bir değere ihtiyacınız olduğunda orderId'yi her zaman "test-123" döndürecek şekilde ayarlayın.
Apidog Sahte Hizmetinde SOAP Uç Noktaları
Apidog'un Akıllı Sahte (Smart Mock) hizmeti, JSON yanıtları olan REST uç noktaları için tasarlanmıştır. SOAP uç noktaları için sahte hizmet kurulumu manueldir: Apidog'da bir istek oluşturur, bir SOAP zarfı ile özel bir yanıt yapılandırır ve bunu döndürmek için Apidog'un sahte sunucusunu kullanırsınız.
Bu, SoapUI'nin WSDL tabanlı sahte hizmet oluşturmasından daha az otomatiktir, ancak yerel bir Java süreci çalıştırmadan basit bir SOAP sahte hizmetine ihtiyaç duyan ekipler için işe yarar.
Durumlu Sahte Hizmet (Stateful Mocking)
Apidog, durumlu sahte hizmet davranışı için özel yanıt betiklerini destekler. Bir JavaScript sahte betiğinde istek gövdesini inceleyebilir ve SoapUI'nin dağıtım betiklerine benzer şekilde, ancak JavaScript'te istek içeriğine göre farklı yanıtlar döndürebilirsiniz.
Yan Yana Karşılaştırma
| Özellik | SoapUI Sahte Hizmeti | Apidog Akıllı Sahte Hizmeti |
|---|---|---|
| Java Gerektirir | Evet | Hayır |
| Her Zaman Açık | Yalnızca komut satırı çalıştırıcı ile | Evet (bulut) |
| Ekip Erişimi | Manuel ağ kurulumu | Evet, paylaşılan URL aracılığıyla |
| WSDL Otomatik Oluşturma | Evet | Hayır |
| REST Şema Tabanlı | Hayır | Evet |
| Dinamik Yanıtlar | Groovy dağıtım | JavaScript sahte betikleri |
| HTTPS Desteği | Manuel anahtar deposu kurulumu | Yerleşik |
| Durumlu Sahte Hizmet | Groovy değişkenleri aracılığıyla | JavaScript betikleri aracılığıyla |
| Ücretsiz | Evet | Evet |
Ne Zaman Hangisini Kullanmalı?
SoapUI sahte hizmetlerini şu durumlarda kullanın:
- WSDL tabanlı bir SOAP hizmetini taklit etmeniz ve otomatik olarak oluşturulan yanıt taslakları istemeniz gerektiğinde
- Ekibiniz çevrimdışı veya katı ağ kontrollerinin arkasında çalıştığında
- Zaten SoapUI ekosistemine derinlemesine bağlıysanız ve araç değiştirmek istemiyorsanız
Apidog Akıllı Sahte Hizmeti'ni şu durumlarda kullanın:
- Ekibiniz REST uç noktalarını taklit ediyorsa ve ağ kurulumu olmadan paylaşılan erişime ihtiyaç duyuyorsa
- Manuel müdahale olmadan sürekli çalışan sahte sunucular istiyorsanız
- Yeni bir projeye başlıyorsanız ve uygulamadan önce API sözleşmesini tanımlıyorsanız
- Sahte hizmetler için bir Java ortamı kurmaktan ve bakımını yapmaktan kaçınmak istiyorsanız
SSS
SoapUI sahte hizmetlerini başsız (GUI olmadan) çalıştırabilir miyim?Evet. SoapUI, mockservicerunner.sh (Linux/macOS) ve mockservicerunner.bat (Windows) içerir. Bunları proje dosya yolu ve hizmet adıyla çalıştırın. Hala Java'nın yüklü olması gerekir, ancak GUI'nin açık olmasına gerek yoktur.
Apidog SOAP sahte hizmetlerini destekliyor mu?Kısmen. Apidog'un sahte sunucusunda SOAP XML ile özel yanıtlar yapılandırabilirsiniz. WSDL tabanlı otomatik taslak yanıt oluşturma özelliği yoktur. İyi anlaşılmış SOAP arayüzleri olan ekipler için manuel kurulum yönetilebilir.
SoapUI sahte hizmetleri yavaş yanıtları simüle edebilir mi?Evet. Sahte yanıt yapılandırmasında, milisaniye cinsinden bir “Gecikme” (Delay) değeri ayarlayın. Apidog ayrıca yavaş ağ koşullarını simüle etmek için yanıt gecikmesi yapılandırmasını da destekler.
Apidog kaç sahte isteği işleyebilir?Apidog'un bulut sahte sunucusu, tipik geliştirme ve test yüklerini işler. Yüksek hacimli performans testi için özel bir sahte sunucu aracı daha uygun olabilir.
İki ekip üyesi aynı uç nokta için farklı sahte yanıtlara ihtiyaç duyarsa ne olur?SoapUI'de her kişi kendi yerel sahte hizmetini çalıştırır ve bunu bağımsız olarak yapılandırabilir. Apidog'da, farklı yanıt senaryolarını seçmek için birden fazla ortam oluşturabilir veya sorgu parametreleri kullanabilirsiniz. Apidog'un "Mock expects" özelliği, belirli istek koşullarını belirli yanıtlarla eşleştirmenize olanak tanır.
Apidog'un sahte hizmeti, API'nin önce tamamen tanımlanmasını gerektiriyor mu?Bir yanıt şeması, Apidog'un gerçekçi veriler oluşturmasına yardımcı olur, ancak tam bir şema olmadan manuel sahte yanıtlar oluşturabilirsiniz. Uç noktayı tanımlayın, özel bir yanıt gövdesi ayarlayın ve sahte hizmet çalışır.
SoapUI’nin sahte hizmeti işlevseldir ancak yerel bir Java sürecine bağlıdır. Kalıcı, paylaşılan sahte hizmetlere ihtiyaç duyan modern ekipler için Apidog'un bulut tabanlı yaklaşımı koordinasyon yükünü ortadan kaldırır.
