Zelal Anık
Vakıf Katılım Ar-Ge Merkezi
8 min readDec 12, 2022

--

SOAP-UI İLE WEB SERVİS OTOMASYONU

WEB SERVİS Nedir?

  • Web Servis iki farklı uygulamanın veya cihazın WWW (World Wide Web) aracılığı ile iletişim kurabilmelerini sağlayan bir servis türüdür.
  • Web servisler platform bağımsız olmak üzere birçok uygulama, cihazın birbiri ile iletişim kurmalarını sağlayan yapılardır.

Terimler :

  • Request : İstektir. Web servis üzerinden istenilen bilgi burada anlatılır.
  • Response : Cevaptır. Web servis üzerinden istenilen bilgiye dönen cevaptır.
  • WSDL (Web Services Description Language) : Soap tabanlı web servislerde kullanılır. Web servisin kullanılabilmesi için gerekli olan bilgileri tanımlayan standarttır.

WSDL(Web Services Description Language) :

  • SOAP isteklerini oluşturmak için de bir standart gerekmektedir.
  • İşte burada WSDL devreye girmektedir.
  • WSDL gerçekleştirilebilecek bütün SOAP isteklerinin kayıtlarını tutan, XML tabanlı web servisleri tanımlamak ve yerini belirtmek için tanımlanmış dildir.
  • Web servisi tanımı işlemler, giren ve çıkan mesaj formatları, ağ ve port adresleri gibi bilgileri tanımlar.

Bir web servisi tanım belgesi aşağıdaki temel elemanları içerir:

  • Types : mesajlarda kullanılacak veri tiplerini belirtir.
  • Message : İletişimde kullanılacak mesajları tanımlar.
  • PortType : Web servisinin içerdiği işlemleri (methods) ve ilgili mesajları tanımlar.
  • Binding : İşlem ve mesajlarda kullanılacak veri formatlarını tanımlar.
  • Port : Binding ve web adresinden oluşan servis noktasını tanımlar. Web adresi servisin çalıştırılacağı URL’dir.
  • Service : Kullanılan port’lar kümesidir.

WEB SERVİS Testi Neden Yapılır?

  • Web Servis Testinin amacı tüm Application Programming Interface (API) ‘ lere uygulamanın beklendiği şekilde çalıştığını göstererek doğrulamaktır.
  • Web Servis Testi uygulamanın fonksiyonelliğini, performansını ve güvenilirliğini kontrol etmek için kullanılır.

SOAP Nedir ?

  • SOAP(Simple object access protocol), web servislerin bilgi aktarımını sağlayan bir protokoldür
  • SOAP mesajları XML formatındadırlar ve genellikle HTTP(Hyper Text Transfer Protocol) protokolü kullanılarak gönderilirler.
  • SOAP tabanlı bir web servisin, gönderilen XML verisini nasıl yorumlayacağını bilmesi gerekir. Bu bilme işlemini WSDL kullanarak yapar.
  • SOAP verilerin yapısını standardize eden bir protokoldür. Veri formatı da XML ’dir.

SOAP yapısı belli parçalardan oluşur :

  1. Envelope : SOAP yapısının temel kısmı diyebiliriz. Header, Body ve Fault alanları bu tag’in içerisinde yer alır.
  2. Header : Başlık kısmı isminden de anlaşılacağı üzere bir başlık bilgisi, Meta-Data bilgisi eklenmek istenildiğinde kullanılabilir. Kullanımı zorunlu değildir.
  3. Body : İstek gönderilirken ve sunucudan cevap alınırken Body kısmı kullanılır. Body kısmı mutlaka olmalıdır. Burada veri gönderilir ve dönen cevaplar XML formatında yazdırmak için kullanılır. Request’de ve Response’a ait parametrelerin barındırıldığı kısımdır.
  4. Fault : Bu kısım gönderilen istek nedeniyle servis tarafında bir hata mesajı almak için kullanılır. İstek sonucu dönen hata bu kısımda görüntülenir. ( Yapılan Request sonucu bit hata var ise hata mesajını içerir. )
  • Yukarıda bir hesap makinesi web servisinin toplama işlemi metodu görülmektedir. Envelope tag’inin içerisinde Header kısmı zorunlu alan olmadığı için boş bırakılmış. Body kısmında ise gönderilecek olan değer alanları tanımlanmış. Integer yerine ondalıklı sayı girildiğinde servisten hata mesajı dönmüştür.
  • Yukarıda da yapılan işlemin başarılı olduğu görülür. Body tag’i içerisindeki AddResult tag’i içerisine sonuç yazdırılmıştır.
  • http://www.dneonline.com/calculator.asmx?wsdl (istek gönderilen web servis) tarayıcıda açıldığında yukarıdaki gibi gözükmektedir. Burada Add metodu içerisine intA ve intB isimli iki adet integer değer aldığı görülür. İstek sonucu dönecek olan değerin de AddResponse alanı içerisinde AddResult adı ile integer bir değer döndürmekte olduğu görülür.

Web Servis Test Otomasyonu için gerekli bazı SOAP-UI fonksiyonlarını inceleyelim;

1.Yeni Bir Proje oluşturmak için aşağıdaki adımlar izlenmelidir :

1.SOAP simgesine tıklanır.

2.New SOAP Project penceresinin açıldığı görülür.

3.Initial WSDL alanına http://www.dneonline.com/calculator.asmx?wsdl yazılır.

4.OK butonuna tıklanır.

5.Sol tarafa projenin geldiği görülür. (CalculatorSoap 1.1, CalculatorSoap12 1.2. sürümünü ifade ediyor.)

2.SOAP’ta Request çalıştırmak için aşağıdaki adımlar izlenmelidir :

  • Proje kısmında metotlar alt alta eklenmiş şekilde görünmektedir. Add metodu içine tıklayarak açtığımızda “Request 1” isimli Request görmekteyiz.
  • Projeyi ilk oluşturduğumuzda aşağıdaki gibi seçim yaptığımız için her metot içerisine Request otomatik olarak tanımlanmış bir şekilde gelmiştir.

1.Add metodu açılr.

2.İçerisindeki “Request 1” üzerine çift tıklanır.

3.Açılan “Request 1” penceresinde sol taraf Request sağ taraf Response ‘ u barındırır.

4.ıntA ve ıntB alanına değerler girilir.

5.Sol üst köşede bulunan Çalıştır butonuna tıklanır.

6.Body tag’i içerisinde AddResponse alanında AddResult ismi ile bir integer değer döndüğü görülür.

3.SOAP’ta TestSuite oluşturmak ve çalıştırmak için aşağıdaki adımlar izlenmelidir :

1.WSDL ismine sağ tıklanır.

2.Açılır listede gelen Generate TestSuite seçilir.

3.Generate TestSuite penceresinin açıldığı görülür.

  • Style alanında iki seçenek bulunmaktadır. Bunlardan ilki “Single TestCase with one Request for each Operation” dır. Bu seçenek işaretlendiğinde bulunan tüm işlemler için yalnızca bir adet test case oluşturup Add, Divide, Subtract, Multiply metotlarında bulunan tüm Request’leri bu test case içerisinde tanımlayacaktır.
  • İkinci “One TestCase for each Operation” seçeneği ise her Request için ayrı TestCase’ler oluşturuyor.
  • Request Content alanında oluşturulacak olan Request’lerin içeriklerinin mevcut Request kullanarak mı yoksa boş olarak mı oluşturulacağı seçilmektedir. “Use existing Requests in Interface” seçilirse eğer bir request içerisinde değişiklik yaptıysak örneğin Add metodundaki servise değer gönderdik içerik kısmı değişmiş oldu. Yeni olarak oluşacak request de şu an değiştirdiğimiz request ile aynı olacaktır. Eğer “Create new empty requests” seçilirse içerisinde veri girilmemiş boş requestler oluşturulacaktır.
  • Operations bölümünde ise web servisinde bulunan işlemlerden eklenmek veya çıkarılmak istenenler var ise ilgili seçimler yapılarak düzenlenebilir.

4.Style alanından “One TestCase for each Operation” seçilir.

5.Request Content alanından “Create new empty requests” seçilir.

6.Operations bölümünden tüm işlemler seçilir.

7.OK butonuna tıklanır.

8.Generate TestSuite Pop-Up’ının geldiği görülür.

9.Enter name of TestSuite to create alanına bir isim girilir.

10.OK butonuna tıklanır.

  • TestSuite oluştuğunda sol tarafta bulunan panelde Projects bölümüne eklenmektedir. TestSuite “One TestCase for each Operation” seçeneği ile oluşturulduğundan her işlem için birer tane TestCase oluştu. TestCase’ler içerisinde TestSteps kısmına ilgili olan Request eklendi.

11.Ana panele TestSuite penceresinin geldiği görülür.

12.Çalıştır butonuna tıklanır.

  • TestSuite çalıştırıldığında servis tarafında bir hata oluştuğunda TestCase FAILED olacaktır. Herhangibir sorun olmadığında FINISHED durumu görülecektir.

13.Tüm TestCase’lerin FINISHED olduğu görülür.

  • TestSuite penceresinin alt kısmnda bulunan TestSuite Log butonuna tıklayarak gerçekleştirilen test ile ilgili detaylı bilgiye ulaşabilirsiniz. Bu alanda çalıştırılan case’in ne zaman başladığı ne zaman bittiği ne kadar zamanda tamamlandığı bilgileri yer almaktadır.

14.TestSuite Log butonuna tıklanır.

15.TestSuite penceresinin hemen alt kısmına aşağıdaki gibi bir pencerenin geldiği görülür.

4.SOAP’ta Assertions eklemek ve çalıştırmak için aşağıdaki adımlar izlenmelidir :

  • Assertions kullanım amacı, Test Stepler aracılığı ile alınan istekler veya gelen cevapların içeriklerini kontrol etmektir. Assertions TestSuite içerisinde TestCase’leri çalıştırırken kullanılabilen bir yapıdır. Çalışma yapısı gelen istek veya dönen yanıt içeriğini, oluşturulan Assertion içeriği ile karşılaştırarak PASSED veya FAILED olma durumunu sağlamakta. Servise gönderilen bir Request’in beklenen sonucunun gelip gelmediği bu şekilde bir kontrol noktası mantığı ile gözlemlenebilir.
  • Assertions yapısında kendi içerisinde farklı etkenleri kontrol etmek için bulunan birden fazla çeşit bulunmakta.
  • Property Content başlığı altında bulunan Assertions çeşitlerinden ikisi Contains ve Not Contains ‘ dir.

1.Assertions eklemek için TestSuite açılır.

2.Add TestCase açılır.

3.TestSteps açılır.

4.Add isimli Request’e çift tıklanır.

5.Add isimli Request penceresinin açıldığı görülür.

6.Alt kısımda bulunan Assertions butonuna tıklanır.

7.Yukarı doğru bir pencerenin kaydığı görülür.

8.Sol üst kısmında bulunan Adds an assertion to this item isimli butona tıklanır.

9.Add Assertion isimli Pop-Up’ın açıldığı görülür.

10.Assertions isimli başlığın altında bulunan Property Content isimli alt başlığa tıklanır.

11.Sağ tarafa Contains ve Not Contains seçeneklerinin geldiği görülür.

12.Contains seçilir.

13.Add butonuna tıklanır.

14.Contains Assertion isimli Pop-Up’ın geldiği görülür.

  • Content alanına işlemin başarılı olması isteniyorsa Response’da yazılı olacak bir integer değer başarısız olması isteniyorsa Response’da yazılı olmayacak integer / stringer bir değer girilir.

15.Content alanına 13 yazılır.

16.OK butonuna tıklanır.

17.Contains Assertion ‘da Content Alanında yazılan 13 sonucunu getirecek uygun değerler girildiği ve Response alanında 13 değerini bulabildiği için işlemin başarılı olduğu görülür.

18.Contains Assertion ‘da Content Alanında yazılan 13 sonucunu getirecek uygun değerler girilmediği ve Response alanında 13 değerini bulamadığı için işlemin başarısız olduğu görülür.

19.Not Contains seçilir.

20.Add butonuna tıklanır.

21.Not Contains Assertion isimli Pop-Up’ın geldiği görülür.

  • Content alanına işlemin başarılı olması isteniyorsa Response’da yazılı olmayacak bir integer / stringer değer başarısız olması isteniyorsa Response’da yazılı olacak integer bir değer girilir.

22.Content alanına 15 yazılır.

23.OK butonuna tıklanır.

24.Not Contains Assertion ‘da Content Alanında yazılan 15 sonucunu getirecek uygun değerler girilmediği ve Response alanında 15 değerini bulamadığı için işlemin başarılı olduğu görülür.

25.Not Contains Assertion ‘da Content Alanında yazılan 15 sonucunu getirecek uygun değerler girildiği ve Response alanında 15 değerini bulabildiği için işlemin başarısız olduğu görülür.

--

--