API Testi için Selenium: Kullanılır mı, Kullanılmalı mı?

INEZA Felin-Michel

INEZA Felin-Michel

22 May 2026

API Testi için Selenium: Kullanılır mı, Kullanılmalı mı?

Kurumsal Apidog

Şirket İçi Dağıtım

SSO & RBAC

SOC 2 Uyumlu

Demo Ayırtın

Selenium, bir tarayıcı otomasyon çerçevesidir. Tıpkı bir insanın yaptığı gibi Chrome, Firefox ve diğer tarayıcıları yönlendirir: düğmelere tıklar, formları doldurur, oluşturulan sayfayı okur. Uçtan uca kullanıcı arayüzü testi için standart bir araçtır ve bu işte çok iyidir.

İnsanlar hala Selenium'un API'leri test edip edemeyeceğini soruyor. Dürüst cevap şudur ki, HTTP çağrıları yapmasını sağlayabilirsiniz, ancak bu iş için yanlış araçtır. Bu kılavuz tam olarak nedenini açıklar, Selenium aracılığıyla API testinin gerçekte neye benzediğini gösterir ve sizi bu iş için tasarlanmış araçlara yönlendirir. Amaç, sizi daha sonra hayal kırıklığına uğratacak bir kurulumdan kurtarmaktır.

Selenium ve API Testi Neden Birbiriyle Uyumlu Değil?

Bir API testi, doğrudan bir sunucuya HTTP isteği gönderir ve yanıtı kontrol eder: durum kodu, başlıklar, gövde, zamanlama. Kullanıcı arayüzü yoktur. Testin hızlı, yalıtılmış ve binlerce kez çalıştırılmasının ucuz olması gerekir.

Selenium, tasarımsal olarak tam tersini yapar. Gerçek bir tarayıcı başlatır, sayfaları yükler ve JavaScript'in oluşturulmasını bekler. Bir kullanıcı arayüzünü test ederken tarayıcı tüm olayın merkezidir ve bir API'yi test ederken tamamen gereksiz bir yüktür. Özel bir istemcinin onlarca milisaniyede gönderdiği bir istek, bir tarayıcı süreci, bir WebDriver oturumu ve sayfa oluşturma devreye girdiğinde çok saniyelik bir iş haline gelir.

Daha derin bir uyumsuzluk da var. Selenium'un tüm API'si bir sayfadaki öğelerle ilgilidir: bu düğmeyi bul, bu metni oku, bu öğeyi bekle. Bir HTTP yanıtı bir sayfa değildir. DOM'u yoktur. Bu yüzden Selenium, bir JSON gövdesini incelemek, bir başlığı doğrulamak veya bir durum kodunu kontrol etmek için size hiçbir yararlı şey sunmaz. Araçla birlikte çalışmak yerine, aracı aşmaya çalışırsınız.

Maliyet sadece hız değildir. Tarayıcı tabanlı testler kötü şöhretli bir şekilde istikrarsızdır. Bir sayfanın oluşturulması biraz daha uzun sürdüğü için, bir WebDriver oturumu düştüğü için veya bir tarayıcı güncellemesi bazı zamanlamaları değiştirdiği için başarısız olurlar. Bir API testi deterministik olmalıdır: aynı istek aynı yanıtı verir ve bir hata, gerçekten bir şeyin bozuk olduğu anlamına gelir. API kontrollerini Selenium aracılığıyla yönlendirmek, tarayıcı istikrarsızlığının hiçbir nedeni olmaması gereken bir katmana taşınmasına neden olur. Zamanla, istikrarsız bir süit, ekibi kırmızı derlemeleri umursamamaya alıştırır ve bu da testin amacını ortadan kaldırır. Doğrulama ve tasdik arasındaki fark burada iyi bir bakış açısıdır: Selenium oluşturulan deneyimi doğrular, API testi ise bunun altındaki sözleşmeyi tasdik eder.

“Selenium ile API testi” Gerçekte Ne Anlama Geliyor?

Makaleler Selenium'un API'leri test edebileceğini iddia ettiğinde, genellikle iki geçici çözümden birini kastederler. Hiçbiri Selenium'u bir API test aracı yapmaz. Sadece HTTP'yi onun aracılığıyla veya yanında yönlendirirler.

Birinci seçenek: Selenium'un JavaScript yürütücüsünü kullanın. Selenium, kontrol ettiği tarayıcıda isteğe bağlı JavaScript çalıştırabilir. Modern tarayıcılarda fetch API'si bulunur, bu nedenle tarayıcıdan bir istek yapmasını ve sonucu test kodunuza geri vermesini isteyebilirsiniz:

JavascriptExecutor js = (JavascriptExecutor) driver;
Object status = js.executeAsyncScript(
    "const callback = arguments[arguments.length - 1];" +
    "fetch('https://jsonplaceholder.typicode.com/users/1')" +
    "  .then(r => callback(r.status))" +
    "  .catch(e => callback('error: ' + e));"
);
System.out.println("Status code: " + status);

Bu işe yarar. Ayrıca, normal bir HTTP istemcisinin doğrudan yapacağı tek bir HTTP çağrısı yapmak için bir tarayıcı, bir WebDriver ve bir JavaScript köprüsü başlattığınız anlamına da gelir. Ayrıca, sunucudan sunucuya bir API testinin asla düşünmesi gerekmeyen CORS gibi tarayıcı kısıtlamalarını da devralırsınız.

İkinci seçenek: Selenium'u görmezden gelin ve yanında gerçek bir HTTP kütüphanesi kullanın. Bir Java projesinde bu, API kısımları için Selenium'u REST Assured ile eşleştirmek anlamına gelir:

import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

given()
    .when()
    .get("https://jsonplaceholder.typicode.com/users/1")
    .then()
    .statusCode(200)
    .body("email", equalTo("Sincere@april.biz"));

Buradaki asıl API testinin tamamen REST Assured tarafından yapıldığına dikkat edin. Selenium hiçbir katkıda bulunmaz. İki kütüphane aynı projede yer alıyor. Bu sorun değil, ancak bu “Selenium ile API testi” değildir. Bu, uygun bir API test kütüphanesiyle yapılan API testidir ve Selenium ilgisiz UI testleri için mevcuttur.

Bunları Karıştırmak Ne Zaman Mantıklı Olur?

Bir Selenium süiti içinde HTTP çalışması için tek meşru bir durum vardır ve bu konuda net olmakta fayda var. Selenium UI testleri genellikle tarayıcı aracılığıyla yapmaktan daha hızlı olan kurulum veya temizleme gerektirir.

Sipariş geçmişi sayfasını kontrol eden bir kullanıcı arayüzü testiniz olduğunu varsayalım. Bunu test etmek için bir siparişin var olması gerekir. Bu siparişi oluşturmak için tüm ödeme akışını tarayıcıda tıklamak yavaş ve kırılgandır. Bunun yerine, testiniz siparişi oluşturmak için doğrudan bir API çağrısı yapar, ardından Selenium'u yalnızca gerçekten bir tarayıcıya ihtiyaç duyan kısım için kullanır: geçmiş sayfasını yüklemek ve siparişin göründüğünü doğrulamak.

Bu sağlam bir uygulamadır. API çağrısı bir amaca ulaşmak için bir araçtır, test edilen şeyin kendisi değildir. API çağrısı yine de gerçek bir HTTP istemcisi aracılığıyla gitmelidir, JavaScript yürütücüsü aracılığıyla değil. Yani bu durumda bile Selenium API testi yapmıyor. UI testi yapıyor ve uygun bir HTTP istemcisi API tarafını hallediyor.

API üzerinden kurulum (setup-over-API) kalıbı o kadar yaygındır ki, çoğu olgun test süiti bunu bilerek benimser. Süitin yavaş, tarayıcı odaklı bölümünü mümkün olduğunca küçük tutar, yalnızca gerçekten oluşturulmuş bir sayfaya ihtiyaç duyan birkaç yolculuk için ayırır. Veri hazırlığı ve doğrulamanın çoğu dahil olmak üzere diğer her şey, hızlı HTTP çağrıları üzerinden gerçekleşir. Sonuç, saatler yerine dakikalar içinde çalışan ve gerçek nedenlerle başarısız olan bir süittir. UI ve otomatik katmanların nasıl bir araya geldiğine dair daha geniş bir resim için fonksiyonel test ile otomatik test karşılaştırmasına bakın.

API Testi İçin Tasarlanmış Bir Araç Kullanın

Amacınız API'leri test etmekse, bunun için tasarlanmış bir şey kullanın. Fark küçük değildir. Gerçek bir API test aracı, bir tarayıcı başlatmadan size istek oluşturma, ortam yönetimi, durum, başlıklar ve gövde üzerinde doğrulama, istek zincirleme, veri odaklı çalıştırmalar ve CI entegrasyonu sağlar.

Seçenekleriniz birkaç gruba ayrılır:

Yaklaşım En İyisi API Test Uygunluğu
Selenium UI / tarayıcı uçtan uca testleri Kötü. HTTP için tasarlanmamış.
REST Assured / requests / supertest Bir kod projesi içindeki API testleri İyi. Gerçek HTTP kütüphaneleri.
Postman, Insomnia, Talend API Tester Manuel ve betikli API testi İyi. Amaca yönelik istemciler.
Apidog Tam API yaşam döngüsü: tasarım, hata ayıklama, mock, test, doküman Güçlü. Hepsi için tek çalışma alanı.

Kod tercih ediyorsanız, Java'da REST Assured, Python'da requests veya Node'da supertest gibi bir HTTP kütüphanesi doğru seçimdir. Bu kütüphaneler bir istek yapar ve size yanıtı doğrudan, durum kodları ve JSON gövdeleri için yerleşik doğrulama yardımcıları ile geri verir. Tarayıcı yok, WebDriver yok ve oluşturma yok, bu nedenle tam bir süit hızlı çalışır ve yalnızca API'nin kendisi değiştiğinde başarısız olur.

Görsel bir çalışma alanı istiyorsanız, Apidog, API tasarlama, isteklerde hata ayıklama, uç noktaları mocklama, otomatik test senaryoları oluşturma ve dokümantasyon oluşturma dahil olmak üzere tüm API platformunu tek bir projede kapsayan hepsi bir arada bir API platformudur. Doğrulamaları görsel olarak veya betiklerle oluşturur, istekleri çok adımlı akışlar halinde zincirlersiniz, veri odaklı tekrarlar çalıştırırsınız ve her şeyi CI'da yürütürsünüz. Ayrıca OpenAPI ve Postman dosyalarını da içe aktarır, böylece mevcut bir API'yi hızlı bir şekilde içeri alabilirsiniz. Bunların hiçbiri bir tarayıcıyı içermez, çünkü içermesi gerekmez. Gerçek bir API üzerinde denemek için Apidog'u indirebilirsiniz.

Kod öncelikli bir çerçeve isteyen ekipler için, API otomasyonu için Robot Framework ve bir API otomasyon test çerçevesi oluşturma kılavuzları, Selenium'un aksine, HTTP testine gerçekten uygun yaklaşımları kapsar.

Dürüst Sonuç

Selenium, tarayıcıları otomatikleştirmek için tasarlandığı iş için mükemmel bir yazılımdır. API testi bu değildir. Teknik olarak HTTP'yi Selenium'un JavaScript yürütücüsü aracılığıyla gönderebilirsiniz ve bir HTTP kütüphanesini Selenium ile aynı projede tutabilirsiniz, ancak her iki durumda da Selenium, API testinin kendisine değer katmaz.

Yanlış aracı seçmek nötr bir karar değildir. Testlerinizi daha yavaş, bakımı daha zor ve API'nizle ilgisi olmayan hatalara eğilimli hale getirir. İş için tasarlanmış bir araca başvurun. Test süiteniz daha hızlı, daha güvenilir ve hakkında muhakeme etmesi çok daha kolay olacaktır. En iyi otomatik test platformlarının özeti, amaca yönelik seçenekleri karşılaştırmak için iyi bir yerdir.

Sıkça Sorulan Sorular

Selenium REST API'lerini hiç test edebilir mi?

Tarayıcının JavaScript yürütücüsü aracılığıyla HTTP istekleri gönderebilir, bu nedenle dar teknik anlamda evet. Ancak Selenium'un yanıtları incelemek, JSON üzerinde doğrulama yapmak veya başlıkları kontrol etmek için hiçbir özelliği yoktur ve bir tarayıcının tüm yükünü taşır. Bir REST API test aracı değildir ve bunu bu amaçla kullanmak yavaş, kırılgan testler oluşturur.

Bazı eğitimler neden Selenium'u REST Assured ile gösteriyor?

Çünkü bu eğitimlerdeki API testi tamamen gerçek bir HTTP test kütüphanesi olan REST Assured tarafından yapılır. Selenium, ilgisiz UI testleri için aynı projede bulunur. Eşleştirme iyi, ancak bu, Selenium'un API'yi test ettiği anlamına gelmez. REST Assured test eder.

Bir Selenium testinde API çağrıları yapmak hiç uygun mudur?

Evet, kurulum ve temizleme için. API üzerinden test verileri oluşturmak, bunu UI üzerinden tıklayarak yapmaktan daha hızlı ve daha güvenilirdir. API çağrısı, test edilen şey olmak yerine UI testini destekler ve yine de Selenium'un JavaScript yürütücüsü yerine uygun bir HTTP istemcisi kullanmalıdır.

API testi için Selenium yerine ne kullanmalıyım?

Kod öncelikli testler için, Java'da REST Assured, Python'da requests veya Node için supertest gibi bir HTTP kütüphanesi. Görsel bir çalışma alanı için, Apidog gibi özel bir API platformu veya Postman, Insomnia ve Talend API Tester gibi istemciler. Bunların hepsi HTTP için inşa edilmiştir ve Selenium'un dayattığı tarayıcı yükünü önler.

API testleri için Selenium kullanmak CI hattımı yavaşlatır mı?

Önemli ölçüde. Her Selenium tabanlı API çağrısı bir tarayıcı süreci ve bir WebDriver oturumu başlatır, bu da saniyeden daha kısa süren bir HTTP isteğini çok saniyelik bir operasyona dönüştürür. Bir süit boyunca bu, uzun, istikrarsız hat çalışmalarına neden olur. Özel bir API test aracı, bir tarayıcıyı asla başlatmadığı için aynı kontrolleri çok daha hızlı çalıştırır.

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

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

API Testi için Selenium: Kullanılır mı, Kullanılmalı mı?