Menguasai workflow testing SOAP: mengimpor WSDL ke SoapUI, menyusun request dari operasi, assertions otomatis, dan MockService untuk pengembangan paralel, plus menggunakan Postman untuk raw SOAP/XML dan validasi terhadap WSDL dan XSD.

Setelah di episode 5 kita bisa memanggil SOAP dari empat bahasa, sekarang kita kuasai senjatanya untuk testing: SoapUI dan Postman. Service SOAP yang baik bukan hanya berjalan — ia harus bisa diuji, divalidasi, dan disimulasikan sebelum produksi.
Mengapa tool ini penting? Karena SOAP itu kaku: satu namespace salah, satu elemen kurang, dan request ditolak. Manual testing dengan curl bisa, tetapi melelahkan. SoapUI mengotomasi sebagian besar pekerjaan: ia membaca WSDL, membangkitkan request, menjalankan assertions, dan bisa berpura-pura menjadi server (MockService). Postman berguna untuk uji cepat dan integrasi dengan collection API kalian.
Langkah pertama adalah membuat project dari WSDL. Pastikan service episode 4 masih berjalan, lalu buka SoapUI:
File > New SOAP Project
Project Name : BankService
Initial WSDL : http://localhost:8080/bank?wsdlSoapUI membaca WSDL dan membangkitkan struktur lengkap: Bindings (list operasi), Requests, dan Test Suites. Setiap operasi di portType muncul sebagai request siap-isi.
Tip
SoapUI juga bisa membuat request tanpa WSDL (lengkap dari nol) lewat template raw. Ini berguna saat WSDL belum tersedia atau saat kalian ingin menguji pemrosesan pesan yang tidak valid — sesuatu yang tidak bisa dilakukan client hasil generate.
Buka request getBalance, isi nilainya, lalu jalankan:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:bank="urn:example:bank">
<soapenv:Body>
<bank:getBalance>
<bank:accountNo>ACC-001</bank:accountNo>
</bank:getBalance>
</soapenv:Body>
</soapenv:Envelope>SoapUI menampilkan response di panel kanan. Tapi yang membuat SoapUI kuat adalah assertions — aturan otomatis yang memvalidasi response tanpa baca manual. Tambahkan di tab Assertions:
| Assertion | Kegunaan |
|---|---|
| Contains | Memastikan string tertentu muncul (mis. 2750000) |
| Not Contains | Memastikan string error tidak muncul |
| Validates Against WSDL | Memvalidasi response terhadap definisi WSDL |
| Schema Compliance | Validasi terhadap XSD di dalam types |
| SOAP Fault | Memastikan response bukan Fault (atau sebaliknya) |
| XPath Match | Memeriksa nilai di node XML tertentu |
Dengan assertions, kalian bisa menjalankan ratusan request dalam satu test suite dan mendapat satu hasil: lulus atau gagal. Ini fondasi untuk test automation di pipeline CI.
MockService membuat SoapUI berperan sebagai server SOAP berdasarkan WSDL. Client yang sedang dikembangkan bisa mengarah ke mock ini — tanpa menunggu server asli selesai. Cara kerjanya:
getBalance).MockService : http://localhost:9090/bank
├── getBalance
│ ├── Request
│ └── MockResponse : 2750000.00Sekarang tim frontend/backend lain bisa mengembangkan client terhadap http://localhost:9090/bank sementara kalian mengembangkan server asli secara paralel. Saat server asli siap, cukup ganti endpoint di konfigurasi client.
Postman bukan tool SOAP khusus, tetapi sangat mumpuni untuk uji cepat raw XML — terutama jika tim sudah terbiasa dengan koleksi Postman:
POST http://localhost:8080/bank
Headers:
Content-Type: text/xml; charset=utf-8
Body (raw, XML):
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bank="urn:example:bank">
<soap:Body>
<bank:getBalance><bank:accountNo>ACC-001</bank:accountNo></bank:getBalance>
</soap:Body>
</soap:Envelope>Gunakan Tests di Postman untuk assertions sederhana berbasis JavaScript:
pm.test("Status 200", () => pm.response.to.have.status(200));
const xml = pm.response.text();
pm.test("Balance ada", () => pm.expect(xml).to.include("2750000"));Saat request ditolak, kesalahan hampir selalu di salah satu dari tiga area ini — periksa berurutan:
soapenv (1.1, schemas.xmlsoap.org) atau soap (1.2, www.w3.org/2003/05)? Harus cocok dengan WSDL.targetNamespace WSDL (contoh urn:example:bank), bukan namespace SOAP.sequence mensyaratkan urutan elemen sesuai definisi; menukar <accountNo> dan elemen lain menyebabkan invalid.Untuk melihat pesan mentah yang lewat di jaringan, gunakan TCP/IP Monitor di SoapUI (tab Tools) — ia menampilkan request dan response HTTP mentah, persis seperti yang diterima server. Kita dalami ini di episode 13.
Warning
Jangan pernah "menaklukkan" server yang menolak request dengan mengubah WSDL/XSD di SoapUI. Kalau validasi XSD gagal, masalahnya biasanya di request kalian — bukan di kontrak. Perbaiki request, jangan melemahkan kontrak.
Inti yang harus dibawa pulang:
Di episode 7 selanjutnya kita akan membedah namespace, XSD, dan data types — cara kerja xmlns dan qualified names, complex types, sequence, restriction, nillable, hingga serialisasi Date, Decimal, dan Base64 yang sering menjadi biang masalah integrasi. Sampai jumpa di episode 7!