Web
servisleri günümüzde yaygın olarak kullanılan bir yöntem olup platformdan
bağımsız olarak farklı platformda çalışan uygulamaların bir birleri ile veri
alış verişi yapmalarına olanak sağlayan geliştiriciler için önemli bir yapıdır.
Örnek olarak bir E-Ticaret sitesindeki bir müşterinin ürünlerini bir masaüstü
uygulamasında göstermek için Web sitesi bir web servis sunması halinde masaüstü
uygulamasının yazıldığı kısımda kolay bir şekilde gerekli request parametreleri
gönderilerek bu sağlanabilmektedir.
Bu kadar
önemli olan web servislerinin test işlemleride ayrı bir işlem olarak ele
alınmaktadır.
Özellikle
web servisi sunan platformların gerek güvenlik gereksede yapılan
servislerinin gerekli isterleri
karşılayıp karşılamadığının test edilmesi gerekmektedir.
Web
servislerinden REST ve SOAP olmak üzere iki farklı web servis türü yaygın
olarak kullanılmaktadır.
SOAP
(Simple Object Access Protocol)
uygulamalar ile web servislerin bilgi aktarımını sağlayan XML tabanlı bir
protokoldür. Yani web servise giden bilgi XML olarak gönderilir, web servis bu
bilgiyi yorumlar ve sonucunu XML olarak geri döndürür. SOAP tabanlı bir web
servisin, gönderilen XML verisini nasıl yorumlayacağının tanımlanması gerekir.
Bu web servis tanımlaması WSDL (Web Services Description Language)
standardı ile yapılır.REST mimarisinde ise işlemler resource kavramıyla yapılır. Resource URI ile tanımlanır ve bir metod tanımlaması veya bir değişken olabilir. Yani REST’te SOAP’ta olduğu gibi XML yardımıyla metodlar çağırılmaz bunun yerine o metodu çağıracak URIler ile web servise HTTP protokolüyle istek yapılır. Böylece REST için WSDL gibi bir tanımlama diline ihtiyaç kalmaz işlemler tamamen HTTP metodları üzerinden yapılır. Örneğin, bir web servisin metodunu SOAP ile “getProductName” şeklinde çağırırken REST ile “/products/name/1″ URI’si ile çağırabiliriz. Ayrıca RESTin döndürdüğü veri tipinin de XML olması zorunlu değildir JSON, XML, TXT, HTML gibi istenen veri türünde değer döndürülebilir.
POSTMAN
Postman,
Rest web servislerinin test edilmesini sağlayan basit ve kolay kullanımı olan
bir test aracıdır.
Arayüz
kısmından test edilecek rest servise GET,POST,PUT,DELETE ve bunlar gibi diğer
kullanılan veri gönderme türlerini desteklemektedir. Aynı zamanda test
kodlarının yazılabilmesini sağlayan bir de komut istemcisi vardır. Bu kısımda yazılan
test kodları çalıştırılıp geriye dönen sonuçlar analiz edilmesini
sağlamaktadır. Aynı zamanda da raporlama yapabilen kullanışlı bir tooldur.
Örnek Test Senaryosu
Web Servis
Url : http://jsonplaceholder.typicode.com/posts/
Authorization Sekmesi
Kullanılacak Api eğer bir kimlik doğrulaması istiyorsa bu
kısımda istenen bir doğrulama protokolü seçilebilir ve gerekli kimlik doğrulama
bilgileri girilerek doğrulama işlemi yapılabilir.
Header Sekmesi
Bu kısımdan
request bilgiyle gönderilecek header bilgileri gönderilebiliyor. Aşağıdaki
örnekte içerik tipinin JSON olması gerektiği belirtilmiştir.
Tests Sekmesi
Postman ın
kendi test scriptlerini bu kısımdaki komut alanına yazılarak bir çok test
yapılabilir. Bunların örnekleri ileriki aşamalarda gösterilecektir.
Rest Api Çıktısı
Body
sekmesinden test edilen url sayfasından gelen sonuçları bu kısımda görebiliriz.
Aynı zamanda JSON, XML, HTML, Text Ve Auto olmak üzere farklı tiplerde
sonuçları ekranda gösterebiliriz.
Yapılan
örnekte GET metodu ile işlemler yapılmış olup apinin sağladığı özelliklere göre
POST, DELETE, PUT vb bir çok işlem Postman ile gerçekleştirilebilir.
Tests Sekmesi Komut Terminalinin Kullanımı
Aiağıdaki
terminal kısmında Postman için yazılmış test script kodları bulunmaktadır. Bu
ve bunlar gibi daha fazla script komutunu Postman ın kendi dökümantasyonlarında
örnek kullanımları mevcuttur[1].
Test Scriptlerinin Çalıştırılması
Yazılan test
scriptleri çalıştırıldığında Test Result sekmesinden aşağıdaki gibi sonuçları
alabiliriz. Aşağıdaki örnekte yazılan 5 test scriptinden 3 ü başarılı olmuş 2
tanesi ise başarısızlıkla sonuçlanmıştır.
Postman SOAP WSDL Testi
Postman
diğer bir web servis türü olan ve yaygın olarak kullanılan SOAP ı WSDL(Web Services Description Language)
adreslerini de desteklemektedir. SOAP web servislerinin uzantısı aşağıdaki
örnekte görüldüğü gibi asmx uzantılıdır.
WSDL Sonuçları
SoapUI
Geliştiriciler
için free open source bir test aracıdır. Aynı zamanda Professional sürümüde
mevcuttur. Professional sürümü free versiyona göre daha fazla test özelliği
bulunmaktadır. Ancak geliştiriciler için free versiyonuda kullanım olarak bir
çok özelliği karşılamaktadır.
Rest Ve Soap
web servislerinin ayrı ayrı test edilmesi SoapUI ile mümkündür. Her biri için
ayrı ayrı test projeleri oluşturup sonuçları analiz edebiliriz.
SoapUI Menü Araçları
Menü
araçlarından SOAP için ve REST API için ayrı ayrı projeler oluşturup ilgili web
servislerinin testleri ve çıktıları yapılabilir.
1.
Rest Test Projesi Oluşturma
Programı kurup çalıştırdıktan sonra top menü kısmından REST
butonuna tıklayarak yeni bir rest projesi oluşturuyoruz.
Ekrandaki URI kısmına web servisimizin adresini yazıyoruz bu
adres içinde alacağı parametreler varsa onlarıda GET metodu yapısına uygun
şekilde ekliyoruz.
Ok butonuna bastıktan sonra aşağıdaki ekranda url adresini ve
parametrelerini görebiliriz. Kırmızı ile işaretlenen kutucuk içindeki çalıştırma
butonuna tıklayarak test işlemini başlatıyoruz.
Test Url : http://jsonplaceholder.typicode.com
Parametre eklenerekte sadece istenen veriler gösterilebilir.
Rest servisin test sonuçlarını aynı ekranda görüldüğü üzere
farklı veri tiplerinde ekranda görebiliriz. Sonuçların gösterildiği yerdeki Raw
sekmesinden request isteğinin header kısmındaki verileride görebiliriz.
1.1 SoapUI Load Test
(Yükleme Testi)
Programın en önemli diğer bir özelliği web servisleri
üzerinde yüklemem testi de yapabilmesidir. Önceki örnekte kullandığımız panelde
aşağıdaki ekran görüntüsüne ait kare içine alınmış kırmızı alandan yükleme
testi oluşturup bu testin yapılması içinde bir adet locasyon seçilmesi
gerekmektedir. Bu şekilde belirlenen locasyonun ip adresinden web servisimize
istek giderek web servisimize yükleme testi uygulanmaktadır.
Yükleme testi esnasında test aşamalarını ve süresini
aşağıdaki çıkan ekrandan takip edilebilmektedir.
Bu ekran dışında test bittiğinde sonuçların raporlandığı
ekranda mevcut olup bu ekran yükleme testini yaptığımızda seçtiğimiz locasyon
ekranı ile aynı kısımdadır.
2.
Soap WSDL Örneği
Aşağıdaki
gibi SOAP api url adresini girdikten sonra sol kısımdaki proje dosyalarının
olduğu bölümde otomatik olarak url adresinin desteklediği metodlar gelmektedir.
Burada GetWeather ve GetCitiesByCountry olmak üzere iki adet
metod geldi. Bunlardan örnek olması için GetCitiesByCountry
adlı item ın üzerine çift tıklıyoruz.
Aşağıdaki
ekran açıldıktan sonra görüldüğü gibi otomatik olarak bir xml requesti geldi.
Xml requestinin içindeki CountryName
adlı tagın içine Turkey olarak bir ülke ismi girildi.
Soap Xml Requesti Test Örneği
Requesti
çalıştırdığımızda aşağıdaki gibi sonuçları alıyoruz.
SONUÇ
POSTMAN ve SoapUI olmak üzere 2 adet test aracı incelenmiş
olup genel anlamda her iki tool da benzer şekilde web servislerine belirlenen
istek türlerine göre sorgulama yapıp bizlere sonuçları geri getirmektedir.
Ancak toollar arasında bazı farklılar vardır. Bunlardan ilki POSTMAN kendi test
yazım kuralları çerçevesinde test scripti yazma imkanı vermektedir[1].
SoapUI test aracı ise test scripti yazılmıyor ancak POSTMAN
dan farklı olarak belirlenen web servislerine Load Test i ve Security Test i
yapabilmektedir.
HttpMaster Express
Ücretsiz bir
web servis test aracı olup. Basit anlamda diğer web servis test araçlarının
yaptığı genel işlevler olan HTTP
metodlarıyla request gönderip gelen sonuçları çıktı olarak
listeletebilmektedir. Request arayüzü aşağıdaki gibi olup url adresi girilerek
sonuçlar aşağıdaki sekmeden gösterilmektedir. Aynı zamanda request isteğinden
gelen Header bilgilerinide görebiliriz.
General Sekmesi
Bu kısımda
web servisine request isteği yapıldıktan sonra sayfanın geriye döndürdüğü HTTP
Status Kodu ve yapılan HTTP istek türü gibi temel bilgiler bu kısımda
görülmektedir.
Headers Sekmesi
Bu sekmeden
web servisin Header kısmındaki bilgileri görebiliriz. Bu kısımda sayfanın
içerik tipinden, bağlantı türüne kadar tüm bilgileri görebiliriz.
Cookies
Request
isteği gönderilirken bazı web servisleri bilgisayarda cookie bırakabilir.
Genellikle bu cookie lerde web servisin geçici olarak kullandığı key value
bilgileri içerebilir.
Response Body & Response View
Bu
sekmelerden web servisinden gelen JSON, XML veya buna benzer veri formatlarında
sonuçlar gösterilmektedir. Response Body
de çıktının ham hali gösterilirken Response Viewer de veri formatına
uygun bir yapıda renkli çıktı olarak sonuçlar gösterilmektedir.
Response Viewer
HttpMaster
aynı zamanda toplu olarak birden fazla requesti toplu olarak çalıştırılmasına
olanak sağlamaktadır. Arayüz kısmından girilen request istekleri liste halinde
karşımıza çıkmaktadır bu kısımdan istenirse tek tek istenirse toplu olarak
hepsi çalıştırılabilir.
Rest Assured
REST
hizmetini test etmeyi kolaylaştıran açık kaynaklı bir Java Etki Alanına özgü
dil (Domain-specific language - DSL) dilidir.
Rest assured
ile web servislerini yapmak için java editörüne ihtiyacımız vardır. Bunedenle
Netbeans, Eclipse gibi bir editör kullanılabilir. Bilgisayarda javanın da yüklü
olması gerekmektedir. Bunların hepsi tamamlandıktan sonra java da yeni bir
maven projesi oluşturup gerekli dependency leri eklememiz gerekiyor. Bunu rest
assured için verilen dökümantasyonlardan ilgili kütüphaneleri entegre
edebiliriz[4].
Dependency Entegrasyonu
Maven
projesine ilgili kütüphaneler eklendikten sonra bazı temel test işlemleri
yapmak için bir adet java class ı oluşturup rest assured ın dökümantasyonlarından
faydalanarak gerekli kodlamar aşağıdaki gibi yapılmış ve sonuçları
gösterilmiştir.
1-
Rest Api Header Kısmının Status
Kodları İle Alınması
Aşağıda yazılan kod ile get parametresinin içine
gönderdiğimiz url adresindeki web servisinden gelen 200 kodlu yani başarılı
olması halinde gelen header bilgilerini ve json formatındaki response kısmını
alabiliriz.
Header Bilgilerinin
Alındıktan Sonraki Görüntüsü ;
Json Çıktısı Ve Header Bilgileri
2-
Authentication Bilgileri İle Kimlik
Doğrulama Yapıp Rest Api Testi
Bu kısımda yapacağımız işlem ise bilindiği gibi bazı web
servisleri güvenlik veya başka nedenlerden dolayı kimlik doğrulama yapıldıktan
sonra istenen işlemlerin yapılmasına izin vermektedir.
Bu tarz kimlik doğrulama içeren web servisleri içinde Rest Assured
bizlere kolaylık sunmaktadır. Yazılan tek satır kod ile basit bir şekilde web
servise kimlik doğrulaması yapılıp işlemler yapılabilir.
Rest Assured Authentication Bilgileri
İle Kimlik Doğrulama
3-
Response Body de Sadece İstenilen
Kısmın Alınması
Web servisine yapılan istek sonucunda eğer doğru bir şekilde
istek gönderilmiş ise web servisine bizlere json veya xml formatı gibi
formalarda geriye bilgi veren sonuçlar gelmektedir. Bu sonuçların içinden
sadece belli bir etiketin taşıdığı value kısmını almak isteyebilir. Örneğin
aşağıda gösterilen kod kısmıda ilgili url adresin bizlere userId, id, title ve
body etiketlerinden oluşan bir json çıktısı üretmektedir. Bu json çıktısından
sadece body etiketinin taşıdığı değeri elde etmek istediğinizde Rest Assured
bunun için bir kolaylık sunmaktadır. Aşağıdaki örnek kod ile istenen yeri
alabiliriz.
Rest Assured İle Belirli Etiket
Değerlerini Almak
Ekran Çıktısı
Body Etiketinin Değerinin Alınması
4-
Http Config Ayarlarının Yapılması
Özel durumlar için HttpClient nesnesi override edilerek
tekrardan konfigüre edilebilir.
Bunun için Rest Assured yine kendi içinde basitleştirilmiş
bir fonksiyonu bulunmaktadır. Bu şekilde HttpConfig ayarı istenildiği şekilde
yapılabilir.
Rest Assued
ın kendi dökümantasyonlarında bir çok farklı işlevi yerine getiren fonksiyonlar
ve bunların örnek kullanımları mevcut olup bu makalede sadece bazı önemli
özellikler ele alınmaya çalışıldı. Daha fazla örnek ve işlevsel fonksiyonlar için
makalenin kaynak kısmında yaplaşılan linkten detaylı bilgi alınabilir [4].
RestSharp #
RestSharp
.NET için geliştirilmiş bir rest api test aracıdır. Bu aracın diğer araçlardan
farkı olarak kolay yüklenebilir olması ve .NET platformuna özgü olmasıdır. NuGet
paket yöneticisi yardımı ile basit bir şekilde Visual Studio programının
Package Manager konsolunda yüklenebilir [5]. Aynı zamanda isteyenler için
Github ortamındaki kaynak kodlarını alıp projelerine dahil ederekte bu yapıyı
kullanmaları mümkündür [6]. Aynı zamanda RestSharp kendi Github adresinde nasıl
kullanılacağına ilişkin basit anlaşılır bir döküman paylaşmıştır.
RestSharp
ile .NET in kod kısmında test komutlarını yazıp normal bir şekilde console veya
istenirse .NET ortamında geliştirilen programın arayüz kısmında test sonuçları
gösterilebilir.
Genel
Özellikleri
- .NET 4.5.2 and .NET Standard 2.0 Versiyonlarında
Sorunsuz Çalışır.
- NuGET kullanımı ile kolay kurulum imkanı
- Otomatik XML and JSON çıktısı
- ISerializer ve IDeserializer vasıtasıyla özel seri
hale getirme ve deserialization'ları destekler
- Bulanık Eleman Adı Eşleştirme ('product_id' in
XML/JSON will match C# property named 'ProductId')
- Otomatik İçerik Tip Dönüştürücüsü
- GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE,
COPY Metodlarını Destekleme
- Standart Dışı HTTP metodlarını Destekleme
- OAuth 1, OAuth 2, Basic, NTLM – Kimlik Doğrulama
Protokollerini Destekleme
- Dosya Yükleme Özelliği İle Rest API de Dosya
İşlemleri Gerçekleştirme - Multi-part form/file
NuGet Komutu
NuGet Komutu
RestSharp Kurulumu
Package Manager İle Kurulumu
Kullanımı
Bu
senaryomuzda daha önceki toollarda test ettiğimiz api üzerinden GET metodu
yardımı ile request gönderip geriye gelen response ları ekranda gösterimini
yapacağız.
.NET Visual
Studio ortamında paket yöneticisi ile RestSharp ı kurduktan sonra RestSharp ı
using namespace ile komut sayfamıza çağırıp sayfaya include ediyoruz.
RestSharp ın Import Edilmesi
Sonrasında
ise kodlarımızı yazıyoruz. Kodları yazarken kullanımlarına bakmak için github
adresindeki ana sayfasından bakılabilir.
GET Metodu İle Request Oluşturulması
Ve Response Çıktısını Alma
Yukarıda ASP.NET
MVC modeli kullanıldığı için content değişkenindeki response değerlerini
ViewBag komutu ile ilgili Action metodunun view sayfasına göndermekteyiz.
Response Çıktısı
Kodlarımızı
çalıştırıdığımız zaman aşağıdaki resimdeki gibi sonuçları ekranda
gösterilmiştir.
Response Çıktısı
Response çıktısının diğer özellikleri de yine alınabilir.
Bunun için response adlı değişkenden sonra alınacak api den gelen header,
content type veya status code gibi bilgileri de elde etmek mümkündür.
Response Metodu Özellikleri
Status Code un Alınması
RestSharp
ile test edilecek api eğer bir kimlik doğrulama içeriyor ise bunun içinde bir
metod yapısı mevcut. Metodun içine girilecek kullanıcı adı ve şifre
parametreleri ile authentication işlemini gerçekleştirmek mümkündür.
client.Authenticator = new
HttpBasicAuthenticator(username, password);
Rest api de
Header a bilgi eklemek istenebilir gösterilecek content type veya buna benzer
başka parametreler yada api nin dosya yükleme işlemi yapan bir metodu test
edilecek bunun için örnek bir dosya yüklenmesi gerekir yine bunlar içinde basit
olarak kullanımları aşağıda gösterilmiştir.
RestSharp İle Header Ve File Upload Kullanımı
GENEL SONUÇLAR
Bu makalede
toplamda 5 adet web servis test araçları incelenmiştir. Farklı senaryolar
üzerinde test işlemleri yapılan bu araçların her biri genel olarak web
servislerinden gelen istekleri raporlama ve sonuçları gösterme işlevlerini
ortak olarak yapmaktadır.
Ancak
kullanıldıkları platformlar ve kurulum şekilleri farklılık gösterdiği gibi
belirli alanlar için sadece kullanımı mevcut olan araçlarda mevcuttur. Bunların
herbir özelliğini ve kurulum yapılma farklılıkları aşağıdaki tabloda özet
olarak ele alınmıştır.
Test Aracı
|
Özellikleri
|
Platform/Kurulum
|
Postman
|
·
Hem otomatik
hem de keşif amaçlı testler için kullanılabilir
·
Swagger ve RAML
biçimleri için destek gibi bir grup entegrasyona
sahiptir
·
Çalıştırma,
Test, Belge ve İzleme Özelliklerine Sahip
·
Yeni bir dil
öğrenmeye gerek duymaz
·
Rest Ve Soap
Desteği
·
Tüm HTTP
Metodlarını Destekler
|
·
Mac, Windows,
Linux ve Chrome
·
Web sitesi
üzerinden uygulaması indirilerek veya chrome eklentisi yardımıyla
kurulabilir.
|
SoapUI
|
·
Ücretsiz ve
Ücretli Pro sürümleri bulunmaktadır
·
Rest Ve Soap
Api Türleri İçin Kullanılabilir
·
Tüm HTTP
Metodlarını Destekler
·
Load Ve
Security Testing İşlemlerini Yapabilme
|
·
Web sitesi
üzerinden SoapUI kurulum dosyası indirilerek windows ortamında kurulumu
yapılabilir.
|
HTTP Master Express
|
·
RESTfull Web
Servislerini Test Etmek İçin Kullanılır
·
Toplu
Requestleri Çalıştırabilir
·
Parametre
Özellikleri İle Request İsteklerini Dinamikleştirmeyi Sağlar
|
·
Windows
platformlarında çalışmakta ve .NET Framework 4.5 Sistem Gereksinimi
İstemektedir.
·
Web Sitesi
Üzerinden Ücretli Veya Ücretsiz Sürümleri Kullanılabilir.
|
Rest-Assured
|
·
Java
Projelerinde Kullanılan Açık Kayak Kodlu Bir Kütüphanedir
·
REST Hizmetini
Javada Yazılımcılar İçin Test Etmeyi Kolaylaştırır.
·
HTTP Metodlarının
Tümünü Destekler
·
Kolay Kullanım
Esnekliği Sunar
|
·
Java Yazılan
Tüm Geliştirme Ortamlarına Entegre Edilebilir
·
Java Maven
Projesi Oluşturularak Dependency İle Projeye Entegre Edilebilir.
|
RestSharp #
|
·
Rest
İsteklerini Test Etmek İçin Kullanılır
·
.NET
Platformlarında Kullanılır Ancak Mobil Platformlar İçinde Seçenekleri
Mevcuttur
·
Nuget Yapısı
Sayesinde Paket Yöneticisinden .NET Projesine Kolaylıkla Entegre Edilebilir.
|
·
Supports .NET 3.5+, Silverlight 5, Windows
Phone 8, Mono, MonoTouch, Mono for Android
·
Visual Studio Paket Yöneticisi Konsoluna Nuget
Sitesinden Alınan Komut İle Projeye Eklenebilir.
|
Kaynaklar





