Yeni Başlayanlar İçin Rest Assured API Testine Giriş

Bu başlangıç dostu rehberle REST Assured API testinin temellerini öğrenin. API testini otomatikleştirin, ilk testlerinizi yazın ve verimliliği artırın.

Efe Demir

Efe Demir

5 June 2025

Yeni Başlayanlar İçin Rest Assured API Testine Giriş

```html

Yazılım geliştirme dünyasında, API'ler (Uygulama Programlama Arayüzleri) modern uygulamaların bel kemiği haline geldi. Bu API'ler karmaşıklık ve önem açısından büyüdükçe, sağlam ve verimli test metodolojilerine duyulan ihtiyaç hiç olmadığı kadar kritik hale geldi. Rest Assured'a girin, API testine yaklaşımımızı devrimleştiren Java tabanlı bir kütüphane.

Rest Assured, REST API testlerini otomatikleştirmedeki basitliği ve gücü nedeniyle geliştiriciler ve QA profesyonelleri arasında büyük popülerlik kazanmıştır. İfade edici sözdizimi ve Java ile sorunsuz entegrasyonu, kapsamlı API test stratejileri uygulamak isteyen ekipler için ideal bir seçimdir.

Bu eksiksiz kılavuzda, temel kurulumdan gelişmiş tekniklere kadar her şeyi kapsayan ve hatta API test ortamındaki diğer araçlarla nasıl karşılaştırıldığını keşfeden Rest Assured API testine daha derinlemesine dalacağız.

API Testinde Rest Assured Nedir?

Rest Assured, özellikle RESTful API'leri test etmek için tasarlanmış Java tabanlı bir kütüphanedir. HTTP istekleri oluşturmak ve yanıtları doğrulamak için etki alanına özgü bir dil (DSL) sağlar. Temel özellikler şunları içerir:

Testte REST API Nedir?

REST (Temsili Durum Aktarımı) API, ağ uygulamaları tasarlamak için bir mimari stildir. Test bağlamında, REST API testi şunları içerir:

  1. HTTP yöntemlerinin (GET, POST, PUT, DELETE, vb.) doğru şekilde işlenmesini doğrulama
  2. Yanıt durum kodlarını doğrulama
  3. Yanıt yük yapısını ve içeriğini kontrol etme
  4. Farklı senaryolarda (geçerli/geçersiz girdiler, kimlik doğrulama, vb.) API davranışını test etme
  5. API işlemlerinden sonraki durum değişikliklerini doğrulama

Postman ve Rest Assured Arasındaki Fark Nedir?

Her iki araç da API testi için kullanılırken, farklı amaçlara hizmet ederler:

Özellik Postman Rest Assured
Arayüz GUI tabanlı Kod tabanlı
Dil JavaScript Java
Öğrenme Eğrisi Daha Düşük Daha Dik
Otomasyon Newman ile Mümkün Yerel
CI/CD Entegrasyonu Ek kurulum gerektirir Sorunsuz
Betik Esnekliği Postman'ın betik yazımıyla sınırlı Tam Java ekosistemi

API testlerini Java tabanlı test otomasyon çerçevenize entegre etmeniz veya daha karmaşık test senaryolarına ihtiyacınız olduğunda genellikle Rest Assured tercih edilir.

TestNG ve Rest Assured Arasındaki Fark Nedir?

TestNG ve Rest Assured farklı amaçlara hizmet eder ancak genellikle birlikte kullanılırlar:

Özellik TestNG Rest Assured
Birincil Amaç Test çerçevesi API test kütüphanesi
Kapsam Genel amaçlı test API testine özel
Özellikler Test organizasyonu, paralel yürütme, raporlama HTTP istekleri, yanıt doğrulama
Dil Desteği Java Java

Her iki aracın da güçlü yönlerini birleştirerek Rest Assured testlerinizi yapılandırmak ve çalıştırmak için TestNG'yi kullanabilirsiniz. Örneğin:

import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

public class CombinedTest {

    @BeforeClass
    public void setup() {
        baseURI = "https://api.example.com";
        basePath = "/v1";
    }

    @Test(groups = "smoke")
    public void testGetUser() {
        given()
            .pathParam("id", 1)
        .when()
            .get("/users/{id}")
        .then()
            .statusCode(200)
            .body("name", notNullValue());
    }

    @Test(groups = "regression")
    public void testCreateUser() {
        String newUser = "{\"name\":\"John Doe\",\"email\":\"john@example.com\"}";
        
        given()
            .contentType("application/json")
            .body(newUser)
        .when()
            .post("/users")
        .then()
            .statusCode(201)
            .body("id", notNullValue());
    }
}

Bu örnek, testleri düzenlemek için TestNG ek açıklamalarını ve gerçek API test mantığı için Rest Assured'ı kullanır.

Rest Assured API Testine Başlarken

Rest Assured'ın inceliklerine dalmadan önce, test etmeye hazır olduğumuzdan emin olmak için geliştirme ortamımızı ayarlayalım.

Ortamınızı Kurma

Java'yı Yükleyin: Rest Assured, Java 8 veya daha üstünü gerektirir. Oracle'ın web sitesinden en son JDK'yı indirin ve yükleyin veya OpenJDK'yı kullanın.

Bir IDE Seçin: Herhangi bir metin düzenleyici kullanabilmenize rağmen, bir Entegre Geliştirme Ortamı (IDE) üretkenliğinizi önemli ölçüde artırabilir. Popüler seçenekler şunlardır:

Bir Maven projesi ayarlayın: Maven, bağımlılıklarımızı yönetmeye yardımcı olacaktır. IDE'nizde yeni bir Maven projesi oluşturun veya komut satırını kullanın:

mvn archetype:generate -DgroupId=com.example -DartifactId=rest-assured-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Rest Assured bağımlılığı ekleyin: pom.xml dosyanızı açın ve aşağıdaki bağımlılığı ekleyin:

<dependencies>
    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>4.4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.4.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>2.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Bu, test organizasyonu için Rest Assured, TestNG ve ek eşleştiriciler için Hamcrest'i içerir.

Maven'i Güncelle: Bağımlılıkları indirmek için mvn clean install komutunu çalıştırın.

Bu adımlar tamamlandığında, Rest Assured testleri yazmaya hazırsınız!

Temel Rest Assured API Test Kavramları

Rest Assured, davranış odaklı geliştirmeden (BDD) esinlenerek Verilen-Ne Zaman-O Zaman sözdizimini izler. Bu yapı, kod tabanına aşina olmayanlar için bile testleri okunabilir ve sezgisel hale getirir.

Verilen-Ne Zaman-O Zaman Yapısı

Basit bir örneği inceleyelim:

import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
import org.testng.annotations.Test;

public class SimpleTest {
    @Test
    public void testGetRequest() {
        given()
            .baseUri("https://api.example.com")
        .when()
            .get("/users")
        .then()
            .statusCode(200)
            .body("data.size()", greaterThan(0))
            .body("data[0].id", notNullValue())
            .body("data[0].email", containsString("@"));
    }
}

Bu test şunları yapar:

  1. API için temel URI'yi ayarlar
  2. "/users" uç noktasına bir GET isteği gönderir
  3. Şunları onaylar:

Rest Assured Sözdizimini Anlama

Rest Assured, yöntem çağrılarını zincirlemenize izin veren akıcı bir arayüz kullanır. İşte bazı yaygın yöntemlerin bir dökümü:

Gelişmiş Rest Assured API Test Teknikleri

Rest Assured'a daha aşina oldukça, sağlam ve kapsamlı test paketleri oluşturmak için daha gelişmiş özelliklerini keşfetmek isteyeceksiniz.

Rest Assured API Testinde Kimlik Doğrulama İşleme

Birçok API kimlik doğrulaması gerektirir. Rest Assured çeşitli kimlik doğrulama yöntemlerini destekler:

Temel Kimlik Doğrulama

given()
    .auth().basic("kullanıcı_adı", "şifre")
.when()
    .get("/güvenli-uç_nokta")
.then()
    .statusCode(200);

OAuth 2.0

given()
    .auth().oauth2("erişim_tokeniniz")
.when()
    .get("/oauth2-korumalı-uç_nokta")
.then()
    .statusCode(200);

Özel Kimlik Doğrulama

Özel kimlik doğrulama şemalarına sahip API'ler için, başlıkları manuel olarak ekleyebilirsiniz:

given()
    .header("X-API-Key", "api-anahtarınız")
.when()
    .get("/özel-kimlik-doğrulama-uç_noktası")
.then()
    .statusCode(200);

Rest Assured API Testinde Testleri Parametrelendirme

Parametrelendirilmiş testler, aynı testi farklı girdilerle çalıştırmanıza izin vererek test kapsamınızı artırır:

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class ParameterizedTest {

    @DataProvider(name = "userIds")
    public Object[][] createUserIds() {
        return new Object[][] {{1}, {2}, {3}, {4}, {5}};
    }

    @Test(dataProvider = "userIds")
    public void testMultipleUsers(int userId) {
        given()
            .pathParam("id", userId)
        .when()
            .get("https://api.example.com/users/{id}")
        .then()
            .statusCode(200)
            .body("id", equalTo(userId))
            .body("name", notNullValue());
    }
}

Bu test, veri sağlayıcısı tarafından sağlanan her kullanıcı kimliği için bir kez olmak üzere beş kez çalışacaktır.

Rest Assured API Testinde JSON Yanıtlarını Doğrulama

Rest Assured, JSONPath kullanarak güçlü JSON ayrıştırma yetenekleri sağlar:

given()
.when()
    .get("https://api.example.com/users/1")
.then()
    .statusCode(200)
    .body("name", equalTo("John Doe"))
    .body("email", endsWith("@example.com"))
    .body("roles", hasItems("user", "admin"))
    .body("address.city", equalTo("New York"))
    .body("phoneNumbers.size()", greaterThanOrEqualTo(1));

Bu test, iç içe nesneler ve diziler dahil olmak üzere JSON yanıtının çeşitli yönlerini doğrular.

XML Yanıtlarını İşleme

JSON daha yaygın olsa da, bazı API'ler hala XML kullanır. Rest Assured ayrıca XML yanıtlarını da işleyebilir:

given()
.when()
    .get("https://api.example.com/data.xml")
.then()
    .statusCode(200)
    .body("root.data.name", equalTo("Test Adı"))
    .body("root.data.value", equalTo("100"));

Dosya Yükleme ve İndirme

Rest Assured dosya işlemlerini işleyebilir:

Dosya Yükleme

File fileToUpload = new File("path/to/file.txt");

given()
    .multiPart("file", fileToUpload)
.when()
    .post("/upload")
.then()
    .statusCode(200)
    .body("message", equalTo("Dosya başarıyla yüklendi"));

Dosya İndirme

byte[] downloadedFile = given()
.when()
    .get("/download/file.pdf")
.then()
    .statusCode(200)
    .extract().asByteArray();

// Artık bayt dizisini bir dosyaya yazabilir veya daha fazla işleyebilirsiniz

Apidog'u Rest Assured API Testi ile Kullanma

Rest Assured kendi başına güçlü olsa da, bir API dokümantasyon ve test platformu olan Apidog'u dahil ederek API test iş akışınızı geliştirebilirsiniz. İşte Apidog'u Rest Assured ile birlikte nasıl kullanabileceğiniz:

API'leri Tasarlayın: Uygulamadan önce API'lerinizi tasarlamak ve belgelemek için APIdog'u kullanın. Bu, geliştiriciler ve test uzmanları için net bir spesifikasyon oluşturmaya yardımcı olur.

Testler Oluşturun: APIdog, API spesifikasyonlarınıza göre test senaryoları oluşturabilir. Bunlar doğrudan Rest Assured testleri olmasa da, neyin test edileceğine dair bir plan olarak hizmet edebilirler.

Testleri Uygulayın: APIdog tarafından oluşturulan test senaryolarını Rest Assured testlerine çevirin. Bu, testlerinizin belirtilen tüm davranışları kapsamasını sağlar.

İşbirliği Yapın: API spesifikasyonlarını ve test sonuçlarını ekibinizle APIdog'un işbirliği özellikleri aracılığıyla paylaşın. Bu, herkesin API'nin beklenen davranışı konusunda uyumlu kalmasını sağlar.

Dokümantasyonu Koruyun: Rest Assured testlerinizi güncelledikçe, APIdog dokümantasyonunun senkronize kalmasını sağlayın. Bu, doğru, güncel API dokümantasyonunun korunmasına yardımcı olur.

REST API'yi Apidog ile Nasıl Entegre Edebilirsiniz?

Bir REST API'yi Apidog ile entegre etmek birkaç temel adım içerir. İşte REST API'yi Apidog ile entegre etmek için ayrıntılı bir adım adım süreç:

button
Sign up Apidog Account

2. "Yeni Proje"ye tıklayın ve projenize bir ad verin.

Add New Project Name

3. Yeni bir API oluşturun.

Create a New API

4. Şimdi "Uç Nokta Ekle" düğmesine tıklayın ve "Tüm kitapları al" uç noktası için aşağıdaki ayrıntıları doldurun: Bu durumda,

URL: http://localhost:5000/books

Yöntem: GET

Uç nokta adı: Tüm kitapları al

Add Endpoint

5. Uç noktanızın gerektirebileceği sorgu parametrelerini veya başlıkları, "Parametre ekle" veya "Başlık ekle" düğmelerine tıklayarak belirtin.

Add Parameter

6. Uç noktanızı test etmek ve düzgün çalıştığından emin olmak için "Gönder" düğmesine tıklayın. Uç noktanız beklendiği gibi çalıştığında, Apidog projenize eklemek için "APICase'i Kaydet" düğmesine tıklayın.

Save APICase

7. Artık uç noktanızı test etmek ve Flask API'niz için dokümantasyon oluşturmak için Apidog'u kullanabilirsiniz.

Generate Your Flask API

8. Test senaryonuzun test adımlarını tanımlayın ve test etmek istediğiniz uç noktaları seçin. Test Senaryolarını ihtiyaçlarınıza göre özelleştirin.

Customize the Test Cases

9. Senaryoları test ettikten sonra, bunları web'de yayınlayabilir veya bir PDF veya Markdown dosyasına aktarabilirsiniz.

Export Test Cases

Apidog, kullanıcıların API'lerini özel gereksinimlerine göre kullanmalarına ve test etmelerine yardımcı olmak için çok sayıda özelleştirme seçeneği sunar.

Rest Assured API Testi için En İyi Uygulamalar

Rest Assured API testinden en iyi şekilde yararlanmak için, bu en iyi uygulamaları göz önünde bulundurun:

Testlerinizi düzenleyin: Testlerinizi mantıksal olarak yapılandırmak için TestNG veya JUnit kullanın. İlgili testleri bir araya getirin ve kurulum ve kaldırma için uygun ek açıklamaları kullanın.

Kodu yeniden kullanın: Testlerinizi DRY (Kendini Tekrar Etme) tutmak için ortak işlemler için yardımcı yöntemler oluşturun. Örneğin:

public class TestUtils {
    public static RequestSpecification getBaseRequestSpec() {
        return given()
            .baseUri("https://api.example.com")
            .contentType(ContentType.JSON)
            .accept(ContentType.JSON);
    }
}

Ardından testlerinizde kullanın:

@Test
public void testSomething() {
    TestUtils.getBaseRequestSpec()
        .when()
            .get("/endpoint")
        .then()
            .statusCode(200);
}

Günlük kaydını kullanın: Sorunları daha kolay gidermek için günlük kaydını etkinleştirin. Rest Assured çeşitli günlük kaydı seçenekleri sunar:

given()
    .log().all()  // Tüm istek ayrıntılarını günlüğe kaydet
.when()
    .get("/endpoint")
.then()
    .log().ifValidationFails()  // Doğrulama başarısız olursa yanıtı günlüğe kaydet
    .statusCode(200);

Şemaları doğrulayın: Yanıt yapılarının doğru olduğundan emin olmak için JSON Şema doğrulamasını kullanın:

given()
.when()
    .get("/users")
.then()
    .assertThat()
    .body(matchesJsonSchemaInClasspath("user-schema.json"));

Ortama özgü verileri işleyin: Farklı ortamları yönetmek için özellik dosyalarını veya ortam değişkenlerini kullanın:

public class Config {
    public static String getBaseUrl() {
        return System.getProperty("api.baseUrl", "https://api.example.com");
    }
}

Ardından bunu testlerinizde kullanın:

@Test
public void testEndpoint() {
    given()
        .baseUri(Config.getBaseUrl())
    .when()
        .get("/users")
    .then()
        .statusCode(200);
}

Yanıt çıkarma kullanın: Karmaşık doğrulamalar için, yanıtı çıkarın ve onaylar gerçekleştirin:

Response response = given()
    .when()
        .get("/users")
    .then()
        .extract().response();

JsonPath jsonPath = response.jsonPath();
List<String> names = jsonPath.getList("name");
Assert.assertTrue(names.contains("John Doe"));

Özel eşleştiriciler uygulayın: Belirli doğrulamalar için, özel Hamcrest eşleştiricileri oluşturun:

public class CustomMatchers {
    public static Matcher<String> isValidEmail() {
        return new TypeSafeMatcher<String>() {
            @Override
            protected boolean matchesSafely(String item) {
                return item.matches("^[A-Za-z0-9+_.-]+@(.+)$");
            }

            @Override
            public void describeTo(Description description) {
                description.appendText("geçerli bir e-posta adresi olmalı");
            }
        };
    }
}

Testlerinizde kullanın:

given()
.when()
    .get("/users/1")
.then()
    .body("email", CustomMatchers.isValidEmail());

Kapsamlı test için veri sağlayıcıları kullanın: Çoklu senaryoları test etmek için TestNG'nin veri sağlayıcılarından yararlanın:

@DataProvider(name = "userRoles")
public Object[][] userRoles() {
    return new Object[][] {
        {"admin", 200},
        {"user", 403},
        {"guest", 401}
    };
}

@Test(dataProvider = "userRoles")
public void testAccessControl(String role, int expectedStatus) {
    given()
        .auth().oauth2(getTokenForRole(role))
    .when()
        .get("/admin-endpoint")
    .then()
        .statusCode(expectedStatus);
}

Yeniden deneme mekanizması uygulayın: Kararsız testler veya güvenilmez ağlar için, bir yeniden deneme mekanizması uygulayın:

@Test(retryAnalyzer = RetryAnalyzer.class)
public void testWithRetry() {
    // Test kodunuz burada
}

public class RetryAnalyzer implements IRetryAnalyzer {
    private int retryCount = 0;
    private static final int MAX_RETRY_COUNT = 3;

    @Override
    public boolean retry(ITestResult result) {
        if (retryCount < MAX_RETRY_COUNT) {
            retryCount++;
            return true;
        }
        return false;
    }
}

Özellikleri kullanın: Tutarlı istek/yanıt beklentileri için, özellikleri kullanın:

RequestSpecification requestSpec = new RequestSpecBuilder()
    .setBaseUri("https://api.example.com")
    .setContentType(ContentType.JSON)
    .build();

ResponseSpecification responseSpec = new ResponseSpecBuilder()
    .expectStatusCode(200)
    .expectContentType(ContentType.JSON)
    .build();

@Test
public void testWithSpecs() {
    given()
        .spec(requestSpec)
    .when()
        .get("/users")
    .then()
        .spec(responseSpec);
}

Sonuç

Rest Assured API testi, API testlerinizi otomatikleştirmek için güçlü ve esnek bir yol sunar. Bunu TestNG ve APIdog gibi araçlarla birleştirerek, Java tabanlı projelerinizle sorunsuz bir şekilde entegre olan kapsamlı bir API test stratejisi oluşturabilirsiniz.

Rest Assured kullanmanın temel avantajları şunlardır:

  1. Basitlik: Akıcı API'si, test yazmayı sezgisel ve okunabilir hale getirir.
  2. Güç: İstek oluşturma ve yanıt doğrulama için kapsamlı yetenekler sağlar.
  3. Entegrasyon: Yapı araçları ve CI/CD boru hatları dahil olmak üzere Java ekosistemiyle iyi çalışır.
  4. Esneklik: Basit GET isteklerinden karmaşık kimlik doğrulamaya ve dosya işlemeye kadar, Rest Assured hepsini halledebilir.

API'ler modern yazılım mimarisinde önemli bir rol oynamaya devam ettikçe, sağlam API testi giderek daha önemli hale geliyor. Rest Assured, API'lerinizin güvenilir, performanslı olmasını ve beklendiği gibi davranmasını sağlamak için size araçlar sağlar.

Unutmayın, etkili API testi sadece hata bulmakla ilgili değildir; tüm sisteminizin kalitesini ve güvenilirliğini sağlamakla ilgilidir. Rest Assured ile, API'lerinizi kapsamlı bir şekilde test etmek ve sorunları üretime ulaşmadan önce yakalamak için emrinizde çok yönlü bir araca sahipsiniz.

Rest Assured ile yolculuğunuza devam ederken, özelliklerini keşfetmeye devam edin, en son sürümlerle güncel kalın ve açık kaynak topluluğuna katkıda bulunmaktan çekinmeyin. Mutlu testler!

```

Explore more

Onlook AI İncelemesi: Tasarımcılar için İmleç Burada!

Onlook AI İncelemesi: Tasarımcılar için İmleç Burada!

Onlook'un "tasarımcılar için imleç" olarak tasarım-kod boşluğunu doldurup doldurmadığını, görsel React düzenleme yetenekleriyle görün.

4 June 2025

SmartBear Fiyatlandırması ve 2025'teki En İyi Alternatifleri

SmartBear Fiyatlandırması ve 2025'teki En İyi Alternatifleri

SmartBear fiyatlarını Apidog gibi alternatiflerle karşılaştırın. Entegre tasarım, test ve dokümantasyon özellikleriyle API araçlarında %94'e varan tasarruf sağlayın.

27 May 2025

Şimdi Denemeniz Gereken 10 Harika Neovim LLM Eklentisi

Şimdi Denemeniz Gereken 10 Harika Neovim LLM Eklentisi

2025'te Neovim'de 10 gelişmiş eklenti: LLM ile kod üretimi, düzenleme ve Hugging Face otomatik tamamlama. AI ile geliştirme hızlanıyor!

22 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin