mobile menu
Web Kapak Desktop (2)
RestAssured ile API Testlerinin Otomasyonu

Günümüzde yazılım geliştirme süreçlerinde, test otomasyonu kritik bir rol oynamaktadır. Özellikle, API’lerin güvenilirliğini ve işlevselliğini garanti altına almak için test otomasyonu kaçınılmazdır. Bu yazıda test otomasyonu nedir, RestAssured kütüphanesi ile API testleri nasıl yazılır bunlardan bahsedeceğim. 

 

 

 

Görsel 1: REST-assured ve Java Kullanarak API Test Otomasyonu 

Test Otomasyonu Nedir?  

Test otomasyonu, yazılım test süreçlerini manuel olarak yapmak yerine, otomatik araçlar ve scriptler kullanarak gerçekleştirme yöntemidir. Amaç, tekrarlayan testleri hızlı ve güvenilir bir şekilde yürütmek, test sürecini hızlandırmak ve hataları minimuma indirmektir. Kaliteyi artırırken, zaman ve maliyet tasarrufu sağlar. 

Post thumbnail 

Görsel 2: Manuel Test ile Otomasyon Testi Karşılaştırması 

RestAssured Nedir? 

Introduction to API Automation Testing-Exploring RestAssured:  

Görsel 3: API Test Sürecinin Yazılım Geliştirmedeki Rolü 

RestAssured, Java tabanlı bir API test otomasyon kütüphanesidir. RESTful web servislerinin doğrulama işlemlerini basitleştirmek için geliştirilmiş, API test otomasyonunda yaygın olarak kullanılan güçlü ve esnek bir araçtır. JSON ve XML gibi veri formatlarını destekler ve hem HTTP hem de HTTPS isteklerini kolayca yönetmemizi sağlar.  

RestAssured, JUnit ve TestNG gibi test frameworkleriyle kolayca entegre edilebilir. GET, POST, PUT, DELETE gibi tüm HTTP metodlarını destekler. Özellikle BDD (Behavior-Driven Development) yaklaşımını destekleyen bir yapıya sahip olması, RestAssured’u diğer kütüphanelerden ayırır. RestAssured, yanıt doğrulamalarında Hamcrest Matchers kütüphanesini kullanarak, esnek doğrulamalar yapabilir.  

A diagram of a computer

Description automatically generated 

Görsel 4: RestAssured Akış Diyagramı 

RestAssured Kurulumu 

RestAssured kullanmaya başlamak için, Maven ya da Gradle gibi bir yapı yönetim aracı ile RestAssured kütüphanesini projemize dahil etmemiz gerekir. Maven kullanıyorsak, pom.xml dosyamıza şu bağımlılığı eklememiz yeterli: 

A screen shot of a computer code

AI-generated content may be incorrect. 

Görsel 5: pom.xml Dosyasında RestAssured Bağımlılığı 

RestAssured Kullanımı

RestAssured'u kullanabilmek için, öncelikle gerekli kütüphaneleri içe aktarmamız gerekiyor.   

A screen shot of a computer

AI-generated content may be incorrect. 

Görsel 6: Gerekli Kütüphanelerin Java’da İçe Aktarılması 

Şimdi JSONPlaceholder API’sini kullanarak, RestAssured ile temel CRUD işlemlerini içeren test senaryolarını yazalım. JSONPlaceholder, sahte verilerle çalışan bir test API’sidir ve genellikle test amacıyla kullanılır. 

1. Kullanıcı Bilgilerini GET ile Alma 

Bu test, belirli bir kullanıcının bilgilerini GET isteğiyle alır ve doğrulama yapar, kullanıcının var olup olmadığını ve ilgili bilgilerin doğruluğunu kontrol eder. Yanıtın HTTP kodunun 200 olduğunu ve kullanıcı bilgilerini doğrular. 

A screenshot of a computer program

AI-generated content may be incorrect.

Görsel 7: GET İsteği ile Kullanıcı Bilgisi Alma 

Bu örnekteki metodların işlevlerini sırasıyla açıklayalım: 

  • RestAssured.baseURI - Bu, test edilecek API'nın temel URI'sini belirler. 

  • given() - Bu aşama, testin başında mevcut olan koşulları veya ön hazırlıkları, istek öncesinde kullanılacak parametreleri veya başlıkları belirtmek için kullanılır. Örneğin, API'nin temel URI'sini ayarlamak, gerekli başlıkları veya parametreleri tanımlamak gibi işlemler bu aşamada yapılır. 

  • when() - Bu aşama, testin gerçekleştiği anı temsil eder. Bu aşamada, GET, POST, PUT, DELETE gibi HTTP metodları kullanılarak istekler yapılır.  

  • then() - Bu aşama, isteğin sonuçlarını doğrular ve testin beklenen davranışlara uygun olup olmadığını kontrol eder. Yanıtın durum kodu, yanıtın içeriği, belirli verilerin varlığı gibi doğrulamalar yapılır. ‘statusCode’ ve ‘body’ ile yanıtın durum kodu ve içeriği kontrol edilir. 

  • statusCode(200) - HTTP cevabının durum kodunun 200 (OK) olması gerektiğini kontrol eder. 

  • extract() - Yanıtın bir Response nesnesi olarak çıkarılmasını sağlar.Bu nesne, test sırasında yanıtın detaylı doğrulama veya işlem yapılabilmesi için kullanılır. Örneğin, yanıt gövdesinden belirli bir veri çekmek, başlıkları kontrol etmek ya da başka test adımlarında kullanmak amacıyla çıkarılabilir. 
     

2. POST İsteği ile Yeni Kullanıcı Oluşturma 

Bu test, POST isteği ile yeni bir kullanıcı oluşturur ve yanıt içeriğini doğrular. JSONPlaceholder API’si veriyi gerçekten eklemese de başarılı bir yanıt alırız. 
 

A screenshot of a computer program

AI-generated content may be incorrect. 

Görsel 8: POST İsteği ile Yeni Kullanıcı Oluşturma  

 
3. Kullanıcı Bilgilerini PUT ile Güncelleme 

Bu test, mevcut bir kullanıcıyı PUT isteğiyle günceller ve yanıt içeriğini doğrular. JSONPlaceholder API’de güncelleme işlemi geçerli olur ve test sonucu 200 döner. 

A screenshot of a computer program

AI-generated content may be incorrect. 

Görsel 9: PUT İsteği ile Kullanıcı Bilgisi Güncelleme  

4. Kullanıcıyı DELETE ile Silme 

Bu test, belirli bir kullanıcıyı DELETE isteği ile siler ve yanıt kodunu doğrular. JSONPlaceholder API’de veri gerçekten silinmese de başarılı bir yanıt (200 veya 204) döner. 

A screen shot of a computer

AI-generated content may be incorrect. 

Görsel 10: DELETE İsteği ile Kullanıcı Silme 

Daha Gelişmiş Test Senaryoları 

Şimdi temel CRUD işlemlerinin dışına çıkarak, hata durumları, veri doğrulama ve performans testleri gibi daha kapsamlı testler yazarak, API’nin farklı açılardan nasıl test edilebileceğini görebileceğimiz test senaryoları yazalım. Bu örneklerle, API’nin farklı durumlara nasıl yanıt verdiğini, hata durumları ve filtreleme gibi çeşitli senaryoları test etmiş oluruz. 

5. Yanıt Süresi Performans Kontrolü 

Bu test, belirli bir isteğin yanıt süresini kontrol eder. API’nin hızlı çalıştığından emin olmak için, belirli bir süre sınırının altında yanıt verip vermediğini test ederiz. Özellikle gerçek API’lerde performans önemli bir faktördür.  
 

A screen shot of a computer program

AI-generated content may be incorrect. 

Görsel 11: Yanıt Süresi Performans Testi 

 
6. Belirli Bir Kullanıcının Gönderilerini Filtreleme 

Bu test, belirli bir kullanıcıya ait gönderileri userId ile filtreleyerek doğrulama yapar. Böylece yalnızca belirtilen kullanıcıya ait sonuçların döndüğünü kontrol edebiliriz. 

A screenshot of a computer program

AI-generated content may be incorrect. 

Görsel 12: Belirli Kullanıcının Gönderilerini Filtreleme

7. Geçersiz ID ile Hata Durumunu Test Etme 

Bu test, bir API’nin geçersiz bir isteğe nasıl yanıt verdiğini görmek için, olmayan bir id ile GET isteği gönderip, 404 hatasını doğrular. 

A screen shot of a computer program

AI-generated content may be incorrect. 

Görsel 13: Geçersiz ID ile Hata Durumu Testi (404) 

8. Yanlış Veri Tipi ile POST İsteği Gönderme 

Bir API’nin beklenmeyen veri tipleri karşısında doğru hata mesajını döndürüp döndürmediğini kontrol etmek önemlidir. Örneğin, email alanına sayısal bir değer göndererek hatalı bir POST isteği yapabiliriz. 

A screen shot of a computer program

AI-generated content may be incorrect. 

Görsel 14: Yanlış Veri Tipi ile POST İsteği Gönderme 

9. DELETE Sonrası GET ile Kontrol 

Bir kaynağı sildikten sonra, o kaynağı tekrar GET ile kontrol ederek 404 yanıtı döndüğünü doğrulamak, verinin gerçekten silindiğini test etmenin harika bir yoludur. 

A screen shot of a computer program

AI-generated content may be incorrect.                     Görsel 15: DELETE Sonrası GET ile Silme Doğrulama 

Sonuç 

RestAssured, RESTful API’lerin test edilmesini oldukça kolaylaştıran güçlü bir araçtır. Basit ve anlaşılır sözdizimi (syntax) sayesinde, API test senaryoları hızlı bir şekilde yazılabilir ve uygulanabilir. Bu yazıda, RestAssured’un temel özelliklerine ve temel kullanım örneklerine değindik. API testleri hakkında daha fazla bilgi edinmek isteyenler, aşağıdaki kaynaklardan yararlanabilir veya kendi senaryolarını geliştirerek ilerleyebilirler. 
 
Ayrıca, bu alanda daha derinlemesine çalışmak isteyenler için bazı ileri seviye başlıklar ve ilgili kaynaklar aşağıda listelenmiştir:

1. JSONPath ve XMLPath Kullanımı:

Karmaşık veri yapılarında belirli alanlara erişmek için JSONPath (JSON için) ve XMLPath (XML için) ifadeleri kullanılır. Özellikle nested (iç içe geçmiş) yapılarda veri doğrulamada büyük kolaylık sağlar. 

Kaynaklar: 
https://github.com/json-path/JsonPath 
https://www.w3schools.com/xml/xpath_intro.asp 
 
2. Filtreleme Karmaşıklığı: 

Gerçek API’lerde, çok sayıda filtreleme parametresi kullanılabilir (örneğin tarih aralığı, kullanıcı tipi, durum gibi). Bu tür testlerde doğru kombinasyonların sınanması ve sonuçların bekleneni karşılayıp karşılamadığı dikkatle kontrol edilmelidir. 

Kaynak: 
https://learning.postman.com/docs/sending-requests/create-requests/parameters/  
3. Asenkron ve Reaktif API Testleri: 

Asenkron API’ler, işlem başladıktan sonra sonucu hemen dönmez. Bu durumda polling (belirli aralıklarla sonucu sorgulama) veya callback mekanizmaları devreye girer. Reaktif API’ler ise akış tabanlıdır ve klasik test senaryolarına göre farklılık gösterir. 

Kaynaklar: 
https://rieckpil.de/testing-spring-boot-applications-with-rest-assured/  
https://docs.spring.io/spring-framework/reference/web/webflux.html 
 
4. Güvenlik Testleri: 

API’lerde authentication (kimlik doğrulama), authorization (yetkilendirme), rate-limiting (istek sınırlama) ve veri sızıntısı gibi risklerin test edilmesi kritik öneme sahiptir. 

• Kitap: API Testing and Development with Postman – Dave Westerveld 
• Akademik Makale: A Survey on Automated REST API Testing – IEEE Access, 2021 

Kaynakça 

Dilan Ergön
Temmuz 26 , 2025
Diğer Blog İçerikleri