REST API testinin otomasyonu, bir sunucu uygulamasının iş mantığını kontrol etmenin en hızlı ve en etkili yollarından biridir ve UI olmadan yanıtların doğruluğunu doğrulamayı sağlar.
Soru Tarihi: Önceden testte ana dikkat kullanıcı arayüzüne verilmişti, ancak mikros hizmet mimarisinin gelişimi ve bileşenler arasındaki bağlantıların karmaşıklığının artmasıyla, ''API üzerinden'' etkileşimleri test etmek önem kazanmıştır.
Sorun: REST API sık sık değişebilir: şemalar, parametreler, istek ve yanıt formatları değişir. Ayrıca, dış hizmetlere bağımlılıklar sıkça görülmektedir, bu da izole ve güvenilir testler oluşturmayı zorlaştırır. Büyük bir projede uç noktaların sayısı yüzlerceyle ölçülür.
Çözüm: Özelleşmiş kütüphaneler (RestAssured, Postman/Newman, HTTP istemcileri) kullanılması, iş gereksinimlerine göre test senaryolarının modellenmesi ve test ortamının mümkün olduğunca mock'lar/stub'lar ile izole edilmesi önerilir. Ayrıca, test verilerinin otomatik olarak üretilmesi ve şemalara göre doğrulama yapılması (örneğin, JSON Schema) faydalıdır.
Ana özellikler:
REST API'leri yalnızca yanıt içeriği düzeyinde test edebilir miyiz?
Hayır, yanıt kodları, başlıklar, yapı ve hatta yanıt sürelerini de doğrulamak gereklidir.
REST otomasyonunda yalnızca "happy path" - olumlu senaryoları kontrol etmek yeterli mi?
Hayır, kesinlikle sınır durumlarını, veri doğrulamasını, hata işleme ve olağanüstü senaryoları ("edge cases") test etmek gereklidir.
Otomasyon için ayrı bir stand oluşturmak gerekli mi?
Tercih edilir, testlerin gerçek verilere etkisini en aza indirmek ve istikrarlı sonuçlar elde etmek için. Testler kaynak oluşturabilir ve bunları değiştirebilir, bu da her zaman canlı ortamda kabul edilebilir değildir.
Tüm testler canlı API'ye başvuruyor, aynı kaynaklarda çalışıyor ve verileri temizlemiyor. Bir test durumu bozabilir, diğerleri hemen çöker.
Artılar:
Eksiler:
Ayrı bir ortam oluşturulmuş, testler entegrasyon testleri için mock servisleri kullanıyor ve izole test verileri, her testten sonra teardown ortamı eski haline getiriyor.
Artılar:
flakinessEksiler: