DEV Community

Cover image for SoapUI Nedir? API Test Aracı Pratik Rehberi
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

SoapUI Nedir? API Test Aracı Pratik Rehberi

SoapUI, web hizmetlerini ve API'leri test etmek için kullanılan açık kaynaklı bir araçtır. 2005 yılında SOAP hizmetlerini test etmek amacıyla ortaya çıktı ve zamanla REST, GraphQL, JMS ve JDBC desteği ekledi. Bugün hâlâ özellikle WSDL tabanlı SOAP entegrasyonlarını sürdüren kurumsal KG ekipleri için pratik bir test aracıdır.

Apidog'u bugün deneyin

Yalnızca JSON REST API'leriyle çalıştıysanız SoapUI eski görünebilir. Ancak WSDL içe aktarma, SOAP zarfı üretme, XML doğrulama ve XPath/XQuery tabanlı kontroller gibi konularda hâlâ güçlüdür. Bankacılık, sigorta, kamu, sağlık ve telekom gibi alanlarda SOAP servisleri yaşamaya devam ettiği için SoapUI da bu nişte geçerliliğini korur.

Bu yazıda SoapUI'ın ne işe yaradığını, tipik bir test akışını, hangi durumlarda doğru seçim olduğunu ve modern REST/GraphQL ekipleri için nerede sınırlı kaldığını uygulama odaklı şekilde ele alacağız.

SoapUI aslında ne işe yarar?

SoapUI, uygulama kodu yazmadan API istekleri oluşturmanızı, göndermenizi ve doğrulamanızı sağlayan bir masaüstü uygulamasıdır. Temel akış şöyledir:

  1. Bir servis tanımı içe aktarılır.
  2. SoapUI bu tanımdan istek şablonları oluşturur.
  3. İstekler test adımlarına dönüştürülür.
  4. Yanıtlar assertion’larla doğrulanır.
  5. Test senaryoları paketler halinde çalıştırılır.

SoapUI'ın en belirgin gücü WSDL içe aktarmadır. WSDL, bir SOAP servisinin operasyonlarını, mesaj formatlarını ve veri tiplerini tanımlayan XML belgesidir. SoapUI'a bir WSDL URL'si verdiğinizde her operasyon için uygun SOAP envelope yapısını otomatik oluşturur.

Örneğin elle yazmanız gereken tipik bir SOAP isteği şu yapıya benzer:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:ser="http://example.com/service">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:GetCustomer>
         <ser:customerId>12345</ser:customerId>
      </ser:GetCustomer>
   </soapenv:Body>
</soapenv:Envelope>
Enter fullscreen mode Exit fullscreen mode

WSDL içe aktarma sayesinde SoapUI bu iskeleti sizin için üretir. Siz yalnızca test verilerini girer, gerekli header’ları ekler ve doğrulamaları tanımlarsınız.

REST tarafında SoapUI, OpenAPI ve WADL tanımlarını içe aktarabilir. Yöntem, URL, parametre, header ve body ile istekler oluşturabilirsiniz. Bu nedenle SOAP’tan REST’e geçiş yapan ekiplerde aynı proje içinde iki API stilini birlikte test etmek mümkündür.

SoapUI iki sürümle gelir:

  • SoapUI Open Source: Ücretsizdir ve temel fonksiyonel testleri kapsar.
  • ReadyAPI: SmartBear'ın ticari ürünüdür; yük testi, güvenlik taraması, veri odaklı testler ve daha gelişmiş arayüz özellikleri ekler.

Bu yazıda odak, ücretsiz açık kaynak SoapUI sürümüdür.

Temel özellikler

SoapUI test yapısını şu hiyerarşiyle kurar:

Project
└── Test Suite
    └── Test Case
        └── Test Step
Enter fullscreen mode Exit fullscreen mode

1. Projeler

Bir proje, tek bir servis veya ilişkili servis grubu için istekleri, test paketlerini ve yapılandırmaları içerir. Ekip içinde paylaşacağınız ana dosya genellikle bu projedir.

Pratik kullanım:

  • Her servis ailesi için ayrı proje oluşturun.
  • Ortam değişkenlerini proje seviyesinde saklayın.
  • Prod, test ve staging endpoint’lerini ayrı property olarak yönetin.

Örnek property yaklaşımı:

baseUrl = https://test.example.com
username = test-user
password = secret
Enter fullscreen mode Exit fullscreen mode

İstek URL’sinde bu property şöyle kullanılabilir:

${#Project#baseUrl}/customers
Enter fullscreen mode Exit fullscreen mode

2. Fonksiyonel test paketleri

Bir test suite içinde birden fazla test case bulunur. Her test case, sıralı test adımlarından oluşur.

Örnek test case:

Login
Extract Token
Create Customer
Get Customer
Assert Customer Data
Enter fullscreen mode Exit fullscreen mode

Bu yapı, stateful API akışlarını test etmek için kullanışlıdır. Örneğin önce oturum açar, dönen token’ı alır ve sonraki isteklere eklersiniz.

3. Doğrulamalar

SoapUI, yanıtları kod yazmadan doğrulamak için birçok assertion sunar:

  • HTTP status code kontrolü
  • XPath eşleşmesi
  • XQuery eşleşmesi
  • JSONPath kontrolü
  • XML schema uyumluluğu
  • Yanıt süresi SLA kontrolü
  • İçerik var/yok kontrolü

Örnek XPath doğrulaması:

//customer/status/text() = 'ACTIVE'
Enter fullscreen mode Exit fullscreen mode

Örnek JSONPath doğrulaması:

$.customer.status
Enter fullscreen mode Exit fullscreen mode

Beklenen değer:

ACTIVE
Enter fullscreen mode Exit fullscreen mode

API doğrulama yaklaşımını daha detaylı incelemek için API doğrulamaları rehberine bakabilirsiniz.

4. Özellik aktarımı

Property Transfer adımı, bir yanıttan değer alıp sonraki istekte kullanmanızı sağlar.

Tipik örnek:

  1. Login isteği gönderilir.
  2. Yanıttan sessionId alınır.
  3. Bu değer proje veya test case property’sine yazılır.
  4. Sonraki isteğin header’ında kullanılır.

Örnek kullanım:

Authorization: Bearer ${#TestCase#token}
Enter fullscreen mode Exit fullscreen mode

SOAP veya REST fark etmeksizin çağrıları zincirlemek için bu mekanizma önemlidir.

5. Groovy betikleri

Yerleşik adımlar yetmediğinde SoapUI Groovy betikleri çalıştırabilir. Groovy ile:

  • Dinamik test verisi üretebilirsiniz.
  • Yanıtları özel kurallarla doğrulayabilirsiniz.
  • Property değerlerini işleyebilirsiniz.
  • Harici sistemlere çağrı yapabilirsiniz.

Örnek: Yanıttan değer okuyup test case property’sine yazmak:

def response = context.expand('${Login Request#Response}')
def holder = new com.eviware.soapui.support.XmlHolder(response)

def token = holder.getNodeValue('//token')
testRunner.testCase.setPropertyValue('token', token)
Enter fullscreen mode Exit fullscreen mode

Örnek: Basit özel doğrulama:

def status = context.expand('${Get Customer#Response#//customer/status}')
assert status == 'ACTIVE'
Enter fullscreen mode Exit fullscreen mode

SoapUI kodsuz testleri desteklese de karmaşık kurumsal senaryolarda Groovy bilmek pratik avantaj sağlar.

6. Sahte hizmetler

SoapUI, SOAP veya REST servis tanımından mock servis oluşturabilir. Gerçek backend hazır değilken istemci geliştirme veya entegrasyon testi için kullanılabilir.

Tipik kullanım:

  • WSDL içe aktarılır.
  • Operasyon için örnek yanıt tanımlanır.
  • Mock service başlatılır.
  • İstemci uygulama bu mock endpoint’e yönlendirilir.

Mocking stratejileri için API sahteleme kullanım senaryoları yazısına bakabilirsiniz.

Tipik bir SoapUI iş akışı

SoapUI ile yeni bir servisi test ederken uygulanabilir akış şu şekildedir.

1. Tanımdan proje oluşturun

SOAP için WSDL URL’sini, REST için OpenAPI dosyasını içe aktarın.

SOAP örneği:

File > New SOAP Project
Initial WSDL: https://example.com/customer-service?wsdl
Enter fullscreen mode Exit fullscreen mode

REST/OpenAPI için:

File > New REST Project
URI or OpenAPI definition: https://example.com/openapi.json
Enter fullscreen mode Exit fullscreen mode

SoapUI tanımı ayrıştırır ve operasyonları/endpoint’leri proje ağacında listeler.

2. Keşif amaçlı istek gönderin

Oluşturulan örnek isteği açın, zorunlu alanları doldurun ve gönderin.

Kontrol etmeniz gerekenler:

  • Endpoint doğru mu?
  • Kimlik doğrulama gerekli mi?
  • Yanıt beklenen formatta mı?
  • Hata mesajları anlamlı mı?
  • Servis dokümantasyonla uyumlu mu?

Bu aşamada henüz test otomasyonu değil, servis davranışını anlama hedeflenir.

3. Test suite ve test case oluşturun

Keşif tamamlandıktan sonra istekleri test adımlarına dönüştürün.

Örnek yapı:

CustomerService Tests
└── Create and Read Customer
    ├── Login Request
    ├── Transfer Token
    ├── Create Customer
    ├── Transfer Customer ID
    ├── Get Customer
    └── Validate Customer
Enter fullscreen mode Exit fullscreen mode

Bu yapı hem SOAP hem REST için aynıdır.

4. Doğrulamalar ekleyin

Her kritik isteğe assertion ekleyin.

Minimum doğrulama seti:

  • Başarılı HTTP status code
  • Yanıt şeması
  • Kritik alanların varlığı
  • İş kuralı doğrulaması
  • Yanıt süresi limiti

Örnek SLA assertion:

Response SLA: 1000 ms
Enter fullscreen mode Exit fullscreen mode

Örnek içerik kontrolü:

Yanıt içinde "ACTIVE" değeri bulunmalı
Enter fullscreen mode Exit fullscreen mode

SOAP servislerinde XML schema ve XPath kontrolleri özellikle önemlidir.

5. Testi çalıştırın ve sonuçları inceleyin

Tek bir test case’i veya tüm test suite’i çalıştırabilirsiniz. SoapUI her adım için geçme/kalma sonucunu gösterir.

İnceleme sırasında şunlara bakın:

  • Hangi adım başarısız oldu?
  • Assertion mı hata verdi, servis mi hata döndürdü?
  • Önceki adımdan gelen property değeri doğru aktarıldı mı?
  • Ortam endpoint’i doğru mu?
  • Kimlik doğrulama bilgisi güncel mi?

Bu döngü, SoapUI ile sürdürülebilir test paketi oluşturmanın temelidir.

SoapUI'ın diğer araçlarla karşılaştırılması

SoapUI'ı modern REST istemcileriyle karşılaştırırken temel ayrım SOAP/XML desteği ile REST geliştirici deneyimi arasındadır.

Yön SoapUI Modern REST istemcileri
SOAP ve WSDL desteği Güçlü, birinci sınıf Zayıf veya yok
XML doğrulamaları Kapsamlı XPath/XQuery desteği Sınırlı
REST ve OpenAPI desteği Yeterli Birinci sınıf
Arayüz Yoğun, eski Daha akıcı ve modern
Öğrenme eğrisi Dik Daha yumuşak
Ücretsiz sürümde yük testi Dahil değil Araca göre değişir
Kurumsal SOAP testleri Güçlü Genellikle sınırlı
JSON REST iş akışı Çalışır ama ağır gelebilir Daha hızlı ve pratik

Özet net: SOAP, WSDL ve XML doğrulama öncelikliyse SoapUI güçlüdür. JSON REST, GraphQL ve hızlı geliştirici deneyimi öncelikliyse modern istemciler genellikle daha uygundur.

SoapUI ne zaman doğru seçimdir?

SoapUI şu durumlarda mantıklı bir tercihtir:

  • SOAP servisleri sürdürüyor ve gerçek WSDL desteğine ihtiyaç duyuyorsanız.
  • XML yanıtlarında XPath veya XQuery ile derin doğrulama yapmanız gerekiyorsa.
  • Kurumunuzda mevcut SoapUI/ReadyAPI test varlıkları varsa.
  • SOAP envelope, WS-Security ve XML schema doğrulaması önemliyse.
  • Ücretsiz fonksiyonel test aracı istiyor ve öğrenme eğrisini kabul ediyorsanız.
  • REST’e geçiş sürecinde hem SOAP hem REST servislerini aynı projede test etmek istiyorsanız.

Örnek karar kuralı:

Servislerinizin çoğu WSDL tabanlı SOAP ise:
    SoapUI güçlü adaydır.
Servislerinizin çoğu JSON REST veya GraphQL ise:
    Modern API platformlarını değerlendirin.
Enter fullscreen mode Exit fullscreen mode

Daha geniş test yaklaşımı için otomatik testin ne olduğu yazısına bakabilirsiniz.

SoapUI'ın yetersiz kaldığı yerler

SoapUI güçlü olsa da sınırlamaları vardır.

Öğrenme eğrisi diktir

Proje, test suite, test case ve test step hiyerarşisi esnektir ancak yeni başlayanlar için sezgisel değildir. Arayüz aynı anda çok fazla seçenek gösterir.

Pratik öneri:

  • Önce tek bir istekle başlayın.
  • Sonra bunu test step’e dönüştürün.
  • En son property transfer ve Groovy ekleyin.
  • Tüm akışı baştan karmaşık kurmaya çalışmayın.

Groovy ihtiyacı hızlı ortaya çıkar

Basit doğrulamalar kodsuz yapılabilir. Ancak dinamik veri üretme, özel kontrol yazma veya karmaşık property yönetimi gerektiğinde Groovy gerekir.

Bu nedenle SoapUI “kodsuz” başlasa da ileri seviye senaryolarda betik yazmaya hazır olmalısınız.

Kaynak kullanımı ağır olabilir

SoapUI bir Java masaüstü uygulamasıdır. Büyük projeler, çok sayıda test suite ve yoğun XML yanıtları performansı etkileyebilir.

Pratik öneriler:

  • Büyük servis ailelerini ayrı projelere bölün.
  • Kullanılmayan request ve test case’leri temizleyin.
  • Büyük yanıtları gereksiz yere saklamayın.
  • Test verisini property dosyalarıyla yönetin.

Açık kaynak sürümde yük testi yoktur

SoapUI Open Source fonksiyonel testlere odaklanır. Performans ve eşzamanlılık testi ReadyAPI tarafındadır.

Performans testi alternatifleri için yazılım performans testi araçları rehberine bakabilirsiniz.

CI/CD entegrasyonu çalışır ama modern hissettirmez

SoapUI testleri komut satırından çalıştırılabilir. Örneğin genel kullanım şu şekildedir:

testrunner.sh -s"CustomerService Suite" -c"Create and Read Customer" project.xml
Enter fullscreen mode Exit fullscreen mode

Windows ortamında:

testrunner.bat -s"CustomerService Suite" -c"Create and Read Customer" project.xml
Enter fullscreen mode Exit fullscreen mode

CI pipeline içinde kullanılabilir, ancak deneyim baştan pipeline odaklı tasarlanmış modern araçlar kadar akıcı değildir.

REST için kullanılabilir ama en güçlü olduğu alan değildir

SoapUI REST destekler. Ancak tüm yığınınız JSON REST API’lerinden oluşuyorsa daha modern ve hafif bir istemciyle daha hızlı ilerlemeniz olasıdır.

SoapUI'ın en güçlü olduğu yer hâlâ SOAP ve XML ağırlıklı kurumsal testlerdir.

Modern bir alternatif: Apidog

API'leri ağırlıklı olarak REST, GraphQL veya OpenAPI etrafında inşa edilmiş ekipler için Apidog, daha modern bir iş akışı sunar. API tasarımı, hata ayıklama, otomatik fonksiyonel test ve mock server özelliklerini tek uygulamada birleştirir.

Tipik Apidog akışı:

  1. API şeması tasarlanır veya içe aktarılır.
  2. İstekler gönderilerek endpoint davranışı test edilir.
  3. Görsel doğrulamalar eklenir.
  4. Adımlar otomatik test senaryolarına bağlanır.
  5. Testler CI/CD içinde çalıştırılır.

Apidog ayrıca performans testini aynı araç içinde sunar. Böylece yük kapsamı için ayrı bir ücretli ürüne geçme ihtiyacı azalır. Komut satırı çalıştırıcısı ile pipeline entegrasyonu da desteklenir.

Apidog'u indirebilir ve temel test özelliklerini ücretsiz kullanabilirsiniz. SOAP testleri için ayrıca çevrimiçi SOAP API test aracı rehberini inceleyebilirsiniz.

Kısa karar özeti:

  • SOAP/WSDL/XML yoğun kurumsal testler için SoapUI hâlâ güçlüdür.
  • Yeni REST, GraphQL ve OpenAPI projeleri için modern API platformları genellikle daha verimlidir.

Sıkça sorulan sorular

SoapUI ücretsiz mi?

Evet. SoapUI'ın açık kaynak sürümü ücretsizdir ve SOAP ile REST API'leri için fonksiyonel testleri kapsar. SmartBear'ın ticari ürünü ReadyAPI ise yük testi, güvenlik taraması, gelişmiş veri odaklı testler ve daha gelişmiş arayüz özellikleri ekler.

SoapUI sadece SOAP API'lerini mi test eder?

Hayır. SoapUI, SOAP'a ek olarak REST, GraphQL, JMS ve JDBC'yi de test edebilir. REST servisleri için OpenAPI ve WADL tanımlarını içe aktarır. Ancak en güçlü olduğu alan WSDL desteği ve XML doğrulamalarıdır.

SoapUI bir CI/CD pipeline'ında çalıştırılabilir mi?

Evet. SoapUI testleri komut satırından çalıştırılabilir ve Maven entegrasyonu da mevcuttur. Ancak deneyim, baştan CI/CD için tasarlanmış modern araçlara göre daha eski ve daha az akıcıdır.

Örnek komut:

testrunner.sh -r -j -f reports project.xml
Enter fullscreen mode Exit fullscreen mode

Bu komut testleri çalıştırır ve rapor çıktıları üretmek için kullanılabilir.

SoapUI ve Postman arasındaki fark nedir?

SoapUI, SOAP, WSDL ve XML doğrulama tarafında daha güçlüdür. Postman ise REST odaklı iş akışlarında, modern arayüzde ve geliştirici deneyiminde öne çıkar. SOAP servisleri sürdüren ekipler genellikle SoapUI'ı; JSON REST API'leri geliştiren ekipler ise Postman veya modern alternatifleri tercih eder.

SoapUI kullanmak için Groovy bilmem gerekiyor mu?

Temel istekler ve yerleşik assertion’lar için gerekmez. Ancak dinamik test verisi üretme, özel doğrulama yazma, property yönetimi veya harici sistemlerle entegrasyon gibi senaryolarda Groovy bilmek gerekir.

SoapUI 2026'da hâlâ geçerli mi?

Evet, kendi nişinde geçerlidir. SOAP servisleri hâlâ bankacılık, sigorta, kamu, sağlık ve telekom sistemlerinde kullanılır. Bu servisleri test etmek için SoapUI'ın WSDL ve XML doğrulama desteği hâlâ değerlidir. Yeni REST ve GraphQL projelerinde ise çoğu ekip modern API araçlarını tercih eder.

SoapUI ve ReadyAPI arasındaki fark nedir?

SoapUI ücretsiz, açık kaynaklı fonksiyonel test aracıdır. ReadyAPI ise SmartBear'ın ticari ürünüdür ve yük testi, güvenlik testi, gelişmiş veri odaklı testler ve daha gelişmiş arayüz özellikleri ekler. Yalnızca fonksiyonel SOAP/REST testleri gerekiyorsa SoapUI yeterli olabilir; performans ve güvenlik testi gerekiyorsa ReadyAPI veya başka araçlar değerlendirilmelidir.

Top comments (0)