SmartestQADocs
api REST API

API Request Step

REST API'lere istek gönderin, response'ları doğrulayın. UI testleriyle API testlerini aynı senaryoda birleştirin.

API Request Nedir?

API Request Step, test akışı içinde REST API'lere HTTP istekleri göndermenizi sağlar. UI testleriyle birlikte kullanarak end-to-end senaryolar oluşturabilirsiniz.

UI + API

Aynı testte ikisini birleştir

Response Assertion

Status, body, header kontrolü

Data Extraction

Response'dan veri çek, kullan

Nasıl Kullanılır?

API Requests Menüsü

Sol menüdeki API Requests bölümünde oluşturduğunuz tüm request'leri testcase'lerinize step olarak ekleyebilirsiniz. Bir kez tanımla, her yerde kullan!

Adım Adım Kullanım

1

Request'i Test Et

Sağ panelde Send butonuna tıklayın. Request çalışacak ve response sağ panelde görüntülenecek.

2

Response'dan Veri Çek

Dönen response'da parametrik olarak kullanmak istediğiniz veriye tıklayın. JSONPath otomatik olarak oluşturulacak ve Global Parameter olarak kaydedilecektir.

Örnek: Response'daki token'a tıkladınızda

$.data.token → auth_token olarak kaydedilir
3

Parametreyi Kullan

Kaydettiğiniz parametreyi süslü parantez içinde istediğiniz yerde kullanabilirsiniz:

{{auth_token}} {{user_id}} {{order_id}}
4

Parametrik Request Oluştur

Request'lerinizi de parametrik yapabilirsiniz! Önceki step'lerde kaydettiğiniz Global Parameter'ları süslü parantez içinde verin:

URL'de:

{{base_url}}/api/orders/{{order_id}}

Header'da:

Authorization: Bearer {{auth_token}}

Body'de:

{"userId": "{{user_id}}"}

Not: Tüm {{param}} değerleri test koşmadan hemen önce gerçek değerleriyle replace edilir. Böylece dinamik ve yeniden kullanılabilir request'ler oluşturabilirsiniz.

Ne Zaman Kullanmalısın?

Kullan ✓

  • • Test öncesi data setup (kullanıcı, sipariş oluştur)
  • • Login API'den token alma
  • • UI işlemini API'den doğrulama
  • • Backend state kontrolü
  • • Webhook/callback test
  • • Test sonrası cleanup

Kullanma ✗

  • • Sadece UI testi yeterliyse
  • • GraphQL (şimdilik REST only)
  • • WebSocket bağlantıları
  • • Dosya indirme (Python kullan)

HTTP Metodları

Metod Kullanım Body
GET Veri okuma, listeleme Yok
POST Yeni kayıt oluşturma JSON / Form
PUT Tam güncelleme JSON / Form
PATCH Kısmi güncelleme JSON / Form
DELETE Kayıt silme Genelde yok

Gerçek Senaryo Örnekleri

POST

Senaryo 1: Login API'den Token Alma

UI login yerine API ile hızlı authentication

🎯 Kullanım Durumu: Her testte UI'dan login yapmak yavaş. API ile token alıp localStorage'a koyarak login bypass yapabilirsin.

URL

{{base_url}}/api/auth/login

Headers

Content-Type: application/json

Request Body

{
  "email": "{{test_email}}",
  "password": "{{test_password}}"
}

Response (örnek)

{
  "success": true,
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "user": { "id": 123, "name": "Test User" }
  }
}

Sonraki steplerde kullanmak için: JSONPath ile token'ı çıkar: $.data.token → Global Parameter'a kaydet

POST

Senaryo 2: Test Öncesi Sipariş Oluşturma

UI testinden önce backend'de data hazırlama

🎯 Kullanım Durumu: "Sipariş Detay" sayfasını test edeceksin ama önce bir sipariş olması lazım. UI'dan sipariş vermek 10 step, API ile 1 step!

URL

{{base_url}}/api/orders

Headers

Authorization: Bearer {{auth_token}}

Request Body

{
  "items": [
    { "productId": 101, "quantity": 2 },
    { "productId": 205, "quantity": 1 }
  ],
  "shippingAddress": {
    "city": "Istanbul",
    "district": "Kadıköy"
  }
}

Response'dan orderId al, sonra UI'da /orders/{{orderId}} sayfasına git.

GET

Senaryo 3: UI İşlemini API'den Doğrulama

Formda değişiklik yaptın, backend'e gerçekten kaydoldu mu?

🎯 Kullanım Durumu: UI'dan profil bilgilerini güncelledin. "Başarılı" mesajı göründü ama database'e gerçekten yazıldı mı?

URL

{{base_url}}/api/users/{{user_id}}

Response Assertion

// Status Code
200

// JSONPath Assertions
$.data.phone == "+905551234567"
$.data.address.city == "Ankara"
GET

Senaryo 4: Liste API Pagination Kontrolü

Query params ile sayfalama testi

🎯 Kullanım Durumu: Ürün listesi API'sinin pagination'ı doğru çalışıyor mu kontrol etmek istiyorsun.

URL (Query Params ile)

{{base_url}}/api/products?page=2&limit=20&sort=price_asc

Response Assertion

// Array uzunluğu kontrolü
$.data.length == 20

// Pagination meta kontrolü
$.meta.currentPage == 2
$.meta.totalPages > 1
DELETE

Senaryo 5: Silme İşlemi Doğrulama

UI'dan sildin, gerçekten silindi mi?

🎯 Kullanım Durumu: UI'dan bir adresi sildin. Soft delete mi hard delete mi? API'den kontrol et.

Step 1: Silme API'si

DELETE {{base_url}}/api/addresses/{{address_id}}

Expected: 204 No Content

Step 2: Tekrar GET ile kontrol

GET {{base_url}}/api/addresses/{{address_id}}

Expected: 404 Not Found

POST

Senaryo 6: Dosya Upload API Testi

multipart/form-data ile dosya yükleme

🎯 Kullanım Durumu: Profil fotoğrafı yükleme API'sini test etmek istiyorsun.

URL

{{base_url}}/api/users/avatar

Content-Type

multipart/form-data

Form Data

file: [test-avatar.png]  // Dosya seç
userId: {{user_id}}

Senaryo 7: Zincirleme API İstekleri

Bir response'un output'unu sonraki request'te kullanma

🎯 Kullanım Durumu: Önce kategori listesi al, ilk kategorinin ID'siyle o kategorideki ürünleri çek.

Step 1: Kategorileri Listele

GET /api/categories → $.data[0].id → category_id'ye kaydet

Step 2: Kategori Ürünlerini Getir

GET /api/categories/{{category_id}}/products

Response İşleme

JSONPath ile Veri Çıkarma

Response JSON'dan belirli değerleri çıkarmak için JSONPath kullanabilirsin:

JSONPath Açıklama Örnek Sonuç
$.data.id Direkt alan erişimi 123
$.data.items[0].name Array'in ilk elemanı "iPhone 15"
$.data.items.length Array uzunluğu 5
$.data.items[*].price Tüm price değerleri [100, 200, 150]
$.data.items[?(@.stock>0)] Filtreli seçim Stokta olanlar
Status Code Assertion
200, 201, 204, 404, 500...
Global Parameter'a Kaydet
$.data.token → auth_token

Sık Sorulan Sorular

API timeout süresi nedir?

Varsayılan timeout 30 saniyedir. Proje ayarlarından değiştirebilirsin. Uzun süren işlemler için artır.

HTTPS sertifika hatası alıyorum?

Test ortamlarında self-signed sertifika varsa "Ignore SSL Errors" seçeneğini aktifleştir. Production'da kullanma!

Cookie/Session nasıl yönetilir?

API Step'ler arasında cookie otomatik taşınır. Manuel cookie eklemek için Headers'a Cookie: session=xxx ekle.

OAuth 2.0 nasıl yapılır?

İlk step'te token endpoint'ine POST at, dönen access_token'ı Global Parameter'a kaydet. Sonraki isteklerde Authorization: Bearer {{access_token}} kullan.