API Test İşlemi

Fake API ve Mock Data

API Nedir? sorusuna cevaben yayınlanan yazının ardından REST ve SOAP API ayrımına değinmiştim. Bir sonraki aşamada da bir örnek REST API uygulaması oluşturmuştum.

AA

Bu yazıda, ilgili yazı akışının devamı niteliğinde API Testing‘e ve örnek olarak kullanılabilecek servislere / uygulamalara değinmeye çalışacağım.

API Testing

API (Application Programming Interface)’ler, bir uygulamanın farklı sistemleri veya katmanları (layers) arasındaki bağlantı dokusudur. API kullanımı ile, farklı sistemler ve uygulamalar arasında veri alışverişi gerçekleştirebilmek oldukça kolay hale gelmekte. Ancak, bu süreçte gerçekleştirilen işlemlerin test edilmesi, işlemlerin verimliliğinin kontrol edilmesi gerekir. UI testlerinden farklı olarak, API testi1 GUI olmadan mesaj katmanında gerçekleştirilir.Bu süreçler için SoapUI2, Tricentis3, Katalon4, Postman5 gibi araçlar kullanılabilir. Son dönemde API Testing ile araçlar ve tekniklere olan ilgi katlanarak artış göstermektedir6 7.

Uygulamalar genellikle üç katmana sahiptir; Veri katmanı (data layer), Servis (API) katmanı ve UI katmanı. Servis katmanı uygulamanın business logic’ini (kullanıcıların servis ile nasıl etkileşime geçeceği bilgisi, veriler ve/veya fonksiyonlar) içerir. API veya servis katmanı hem veri katmanına hem de sunum katmanına doğrudan temas eder. Test süreci8 9 genellikle kullanıcı arayüzü çerçevesinde (presentation layer) ilerlese de API testleri ile veri sürecinin de ayrıca test edilmesi performansa ve verilerin doğruluğuna katkı sağlayacaktır. Tabi, API testinin birçok yönü hesaba katılmalıdır. Genellikle tek veya bazen birden fazla API uç noktasına (endpoints) istekte bulunmak ve edinilen yanıtları (data responses) doğrulamak test sürecinin genel yapısını oluşturur.

API Test Türleri

Aşağıda temel bazı test süreçlerini alt başlıklar halinde iletiyorum. Elbette uygulamanın, servisin detaylarına ve kapsama göre test süreçlerini (runtime error detection, security testing, penetration testing, fuzz-testing gibi) çeşitlendirmek gerekecektir. Yazının son bölümünde, ek okumalar için eklediğim yazı önerilerine göz atabilirsiniz.

Unit Testing

API testinin en kolay yolu tek bir istek (single request) ve/veya bir yanıt (single response) ya da yanıt setini tek bir endpoint (single endpoint) üzerinden test etmektir.

Integration Testing

Entegrasyon testi, API’lerin dahili veya üçüncü taraf servislerin merkezinde olduğu durumlarda, en sık gerçekleştirilen testlerden biridir.

End-to-End Testing

Uçtan uca (end-to-end / e2e) testler, birkaç farklı API bağlantısı arasında veri akışının doğrulanması sürecinde kullanılır.

Performance Testing

İlk otomatik performans testi hattınızı (testing pipeline) oluşturmak ilk başta çok zor görünebilir. Sorgular, akış (CI (Continuous Integration) / CD (Continuous Deployment)) süreçlerinde hız, güvenlik ve etkinlik bağlamında kullanılır.

API Test Sürecinin Yararları

  • API testi ile, mantık (logic) tasarlandıktan sonra, cevapları (response) ve verileri doğrulamak için testler yapılabilir.
  • Kullanıcı arayüzleri (UI) nasıl erişildiklerine (tarayıcılar, cihazlar, screen orientation vb.) bağlı olarak değerlendirilmelidir. API testleri bu süreçte daha kontrollü yönetilebilir.
  • API testleri başarısız olduğunda, sistemin nerede aksadığını ve hatanın nasıl ortaya çıktığını belirlemek daha kolaydır. Uygulamanın işleyişi de bu bağlamda kolaylıkla kontrol edilebilir.
  • Kullanıcı etkinlikleri bağlamında UI testleri günler sürebilir. Ancak, API testleri dakikalar içerisinde gerçekleştirilebilir. Bu sayede, daha kısa zamanda daha fazla hata bulunabilir ve düzenlenebilir.

Test API Servisleri

Aşağıda liste halinde, fake API istekleri (request) gerçekleştirip yanıt (response) alabileceğiniz (hatta yanıtları ve edinilen bilgileri özelleştirebileceğiniz) bazı servisleri paylaştım. Servislerin çoğunda istek sınırı mevcut. Dolayısıyla bu sınırlandırmalar çerçevesinde hareket etmekte fayda var.

  • SWAPI (The Star Wars API), Start Wars filmlerindeki karakterler, gezegenler, filmler gibi bilgileri içeren, tamamen açık bir API. Yani, veri sorgulamak ve almak için kimlik doğrulaması gerekmez.
  • JSONPlaceholder içerik, yorum, albümler, fotoğraflar, yapılacaklar listesi ve kullanıcılar gibi farklı içerik türlerini barındıran bir fake API. Ayrıca, bir diğer araç olan My JSON Server ile kendi data’larınızı da kullanmanız mümkün.
  • Reqres, fake kullanıcı bilgileri içeren bir API.
  • Dummy Rest API, fake çalışan verilerinin yer aldığı bir API.
  • Fake Rest API, aktiviteler, yazarlar, kitaplar, kapak görselleri ve kullanıcılar gibi bilgiler içerir.
  • Mocky, temel cevaplar almayı mümkün kılmakta.
  • Beeceptor, kod gerektirmeksizin kendi API servisinizi yayına alabileceğiniz ve kendi verilerinizi istek limiti (günlük 50 istek) dahilinde kullanabileceğiniz bir API servisi.
  • The Movie Database API, pek çok dizi ve film bilgisine (puan, güncel durum, etkileşim vb.) ulaşmanızı sağlayan bir API servisidir.

Ayrıca, AnyAPI ve public-apis ile farklı servislerin sundukları API’leri bir arada görüntüleyebilirsiniz.

Diğer yandan mocking servisleri aracılığı ile uygulamanızın kullandığı yapıyı takip edebilirsiniz10.

  • MockApi, ücretsiz olarak 1 proje ve her proje için 4 kaynak oluşturma imkanı sunmakta. Uygulama ve test kapsamınıza göre ücrretli seçenekleri de değerlendirebilirsiniz.
  • Mocky, ücretsiz ve sınırsız kullanım imkanı sunan servislerden biri. Servisin sunduğu oldukça kapsamlı ayarlamalar ile uygulamanıze oldukça benzer bir yapı olışturabilirsiniz.
  • Mockoon, ücretsiz, açık kaynak ve pek çok platformda çalıştırılabilir bir uygulama aracılığı ile yerel olarak işlemler gerçekleştirebilme imkanı sunuyor. Yakın zamanda eklenen CLI desteği ile birlikte pratik bir şekilde arayüz bağımsız işlemler de gerçekleştirilebilmekte.

Önerilen Yazılar