API ve API Testi

API Nedir ?

Emir Elibol
Vakıf Katılım Ar-Ge Merkezi
8 min readJul 18, 2023

--

Application Programming Interface bir uygulamanın fonksiyonlarına dışarıdan veya uzaktan erişilerek kullanılmasını sağlayan bir arayüzdür.

İki uygulamanın birbiriyle iletişim kurmasına olanak sağlayan bir yazılım aracısı olan Uygulama Programlama Arayüzü’nün kısaltmasıdır. Uygulamalar farklı teknolojide olabilirler.

Api nin kullanıldığı başlıca yerler Uygulama Sunucuları, Bulut Kaynakları, Bulut Tabanlı Servisler, Mobil Uygulamalar, Database, Web Uygulamaları.

API Kullanım Alanı ve Amaçları

Web ve Uygulama Geliştiricileri Kullanır

Farklı Servislerin Özelliklerinden Yararlanma

Süreçleri çabuk ve programlı bir hale getirir.

Günlük Hayatta API Örnekleri

Google Geliştirici API’ları; Google Haritalar, Analytics, Takvim, Youtube, Google Translate vb.

Bir kullanıcı login olmak isterken girdiği kullanıcı adı ve şifresini istek halinde gönderip karşılığında giriş yapacağı veya yapamayacağı ile ilgili cevabı alır.

API Tipleri Nelerdir ?

API tipleri ikiye ayrılır. Soap API ve Rest API diyebiliriz.

SOAP API

SOAP(en: Simple Object Access Protocol , tr: Basit Nest Erişim Protokolu) temel anlamda, internet üzerinden belirli bilgileri yada mesajları aktarma protokoludur.

Bu aktarılmak istenen mesajlar belirli bir protokolle gerçekleşir.

İki veya daha fazla bilgisayarın iletişimini sağlayan yapıya protokol denir. SOAP API lerde genellikle HTTP protokol kullanılır kimi zamanda TCP/IP protokol kullanılır.

HTTP(Hyper Text Transfer Protocol)

TCP/IP(Transmission Control Protocol/İnternet Protokol) Tcp veri taşımını sağlarken IP taşınan yolu belirtmektedir.

SOAP mesajları XML(Extendsible Markum Language) formattadır.

REST API

REST(Representational State Transfer) client-server arasında hızlı ve kolay şekilde iletişim kurulmasını sağlayan bir servis yapısıdır. Servis yönelimli mimari üzerine oluşturulan yazılımlarda kullanılan bir veri transfer yöntemidir. HTTP üzerinde çalışır ve minimum içerikle veri alıp gönderdiğinden hızlıdır. Genellikle XML veya JSON verileri ile uygulamalar arası iletişimi sağlar.

Web Servis Kavramı

Web servis iki makinenin bir ağ üzerinden birbirleri ile iletişim kurmak için kullandığı bir yöntemdir.

Web Servislerine sadece ağ üzerinden erişebilir.

Web servisler internet üzerinden haberleşirler.

Web Servisler kullanırken HTTP metotlarına başvurulur.

Web Servis Kullanım Şekilleri

Sürekli uygulama üzerinde yapılan işler

Farklı uygulamalar ile veri alışverişi

Web Servis Kullanılan Standartlar

SOAP >> xml tabanlı web servislere erişmeyi sağlayan protokol

UDDI(Universal Description, Discovery and Integration)>>Ağ üzerindeki servislerin hangilerinin erişilebilir olduğunu listeleyen protokol

WDSL(Web Services Discription Language)>>Xml formatlı web servislerin yerlerini ve ne iş yaptıklarını belirleyen bir dildir.

API ve Web Servis İlişkisi

Her Api web servis değildir.

Tüm API’lara internet üzerinden erişilemeyebilir.

Her web servis bir Api dir.

Web Servislerine her zaman ağ üzerinden erişilebilir.

SOAP Servis

HTTP ve TCP Protokol kullanımı

Sadece XML veriler ile işlem yapabilirsiniz.

Mesaj; method hazırlama, cevap ve hata mesajından oluşur.

SOAP Servis Bölümleri

Envelope>> Birçok servis istek ve cevaplarını içerisinde bulunur.

Header>> Meta data gibi bilgileri içerir.

Body>> İstek ve cevap parametleri yer alır.

Fault>> İstek sonucu bir hata varsa hata mesajı durumunu içermektedir.

WSDL Kavramı

Web Services Description Language(Web Servis Tanım Dili)

İçerisinde metot, parametre ve web servis adresini barındırmaktadır.

Belirli başlı elementleri bulunur.

Types>> Mesajllarda kullanılacak veri tiplerini belirtir.

Message>> İletişimde kullanılacak mesajları tanımlar.

PortType>> Web Servisin içerdiği işlemleri ve ilgili mesajları tanımlar.

Binding>> İşlem ve mesajlarda kullanılacak veri formatlarını tanımlar.

Port>> Binding ve web adresinden oluşan servis ürününü tanımlar. Web adresi servisin çalışacağı URL dir.

Service>> Kullanılan portlar kümesidir.

RESTful Servis

Servis Nedir ? Nasıl çalışır ?

Web servis uygulamaların uzaktaki veritabanına erişmesi gerektiği zaman da kullanılabilir.Web serivsler farklı platformlarlar arası haberleşmeyi sağlayan yazılımlardır.

Servis kullanmak hızlı ve güvenlidir.

Rest Mimarisi / Restful Servisler

REST(representational state transfer) -(temsil durum transferi)

Rest istemci sunucu arasında hızlı işlem kurulmasını sağlayan bir servis yapısıdır.

Restin en önemli özelliklerinden biri oluşturulmak istenildiğinde hiçbir programlama diline ihtiya. duymamasıdır. Rest HTTP protokolüne ait HTTP durum kodlarını kullanarak gelen isteklere cevap verir.

SOAP için kullanılması zorunlu olan WSDL gibi bir tanımlamaya ihtiyaç duymaz. XML haricinde istenilen biçimde veri alışverişine imkan verir.

Minimum içerikte veri alıp gönderdiğinden hızlıdır.

Rest için kısıtlama yoktur. Rest ile yazılmıl bir servisle çalışmak için gerekli olan şey URL dir.

RESTful Servis Gereksinimleri

Uniform Interface

Genel olarak işlemci ile sunucu arasında ortak bir arayüz olması gerekmektedir. Bu sayede birbirinden bağımsız olarak gerçekleştirilebilmektedir. Olmazsa olmaz prensiplerdendir.

Dört tane alt kuralı vardır.

  1. Sunucuya yapılan istek tek bir kaynak içermelidir.

2. Sunucu tarafından dönen sonuç kaynak ile ilgili yeterli bilgiyi dönmelidir ki istemci tarafından bu kaynak değiştirilebilsin.

3. Her istek sunucunun ihtiyacı olan tüm bilgiyi içermeyebilir. Aynı şekilde sunucu tarafından yapılan her cevapta istemcinin cevabı anlayabilmesi için gereken bütün bilgiyi içermelidir.

4. Dönen cevap ile ilgili sonuç ek olarak ilgili kaynak ile ilişkili bağlantılarıda paylaşmalıdır.

Clinet-Server Mimarisi

Server ve Client birbirinden ayrıdır. Kendi içlerinde geliştirilebilirler. İstemci sunucu tarafındaki veri kaynağı ile ilgil hiçbirşey bilemez.Sunucu sadece kendisine gelen istekler doğrultusunda değer döner.

Casheable

Sunucu responsların önbelleklenebilir olduğunu belirmelidir. Böylece altyapılar ve istemciler performansı arttırmak için mümkün olduğunda önbelleklenebilir. Önbelleğe alınmayan bilgiler de elden çıkarılabilir. Böylece hiçbir kullanıcı eski data kullanmamış olur.

Stateless

Sunucu istemci ile ilgili hiçbir bilgiyi tutmamalıdır. İstemci tarafından gerçekleştirilen her istek sunucunun sonuç dönebilmesi için gereken bilgiyi taşımalıdır.

Latered System

Güvenliği ve performansı arttırmak için Load-Balancer ve Proxy kullanılabilir.

Code on Demand

Bazı durumlarda sunucunun çalıştırılabilir kod göndermek isteyebileceği ile ilgilidir. Opsiyonel bir durumdur.

Rest Servis HTTP Sonuç Durum Kodları

SOAP ve REST Arasındaki Farklar

Güvenlik

SOAP daha güvenlidir. SOAP servisleri güvenlik protokollerini içerisinde barındırır. Durum bilgisini Request ve ResponsE da tutar.

RESTful servisleri url üzerinden erişilir. Arada herhangi bir güvenlik protokolü bileşeni yoktur.

Format

RESTful ile json,Xml ve Text çalışılabilirken SOAP ile Xml çalışılabilir.

Boyut ve Hız

Eğer data boyutları ve çalışma hızları uygulamanız için kritik seviyedeyse RESTful kullanmak daha mantıklıdır. Json okumak daha kolaydır. Xml dili veri değişim işlemlerinde yavaş kalmaktadır.

Ön Bellek

RESTful da basit HTTP GET metodunu kullandığı için ön bellekleme işi daha kolaydır. SOAP ile önbellekleme yapabilmek için karmaşık Xml Requestleri yapılmalıdır.

Tasarım

RESTfulu kullanması ve tasarlaması daha kolaydır.

Kullanım

SOAP servsiini kullanabilmek için wsdl bilgisine ihtiyaç duyulmaktadır. Proxy sınıfları ve bileşenler gereklidir. RESTful da ise herhangi bir servisi çağırmak için URL bilgisini bilmek yeterlidir. RESTful HTTP Metodlarını kullanır GET,POST,PUT,DELETE Restful oldukça esnekdir ve hafifdir.

API TESTİ

Uygulamalar arasında veri alışverişinin test edilmesi işlemlerin verimliliğinin gözlemlenmesi için yapılan testlerdir.

API testleri Yazılım Test Ekibi tarafından yapılır.

Önem derecesi yüksek seviyede yapılan işlerdir.

Örnek: Bir ödeme sisteminde iki farklı uygulama arasında bilgi sağlanmış olsun. Alınan bilgiyi bir uygulamadan diğerine taşırken veriyi eksik parametrelerle yada yanlış formatlı bilgiler içeren bir istek iletiliyor olması ve bu bilgilere bağlı olarak dönen sorunlu cevap çok sayıda müşterinin mağdur olmasına sebep olabilir.

Neden API TESTİ ?

İşlevsellik

Performans

Güvenirlik

Güvenlik

Kullanılabilirlik

API Testinin Önemi

API nin doğru ve düzgün çalıştığını görmek gerekir.

Sınır Değer Analizi yapılır.

Hataları(Bug) bulmak.

Kalitenin artırılması.

API Testinin Avantajları ve Zorlukları

Test edilmesi ve doğrulanması gereken yerler:

Giriş Parametreleri, beklenen sonuç çıktısı, cevap almak için harcanan süre, istek mesajının ayrıştırılması, hata yönetimi, dönen cevabı formatlama.

API Testinin Faydaları

Cevaplar ve Veriler doğrulanır.

Kontrollü yönetilebilir.

Hata tespiti kolaylığı.

Kısa sürede tamamlanabilir.

Kısa zamanda daha fazla hata bulunur ve kalite artırılır.

API Testinin Zorlukları

İş uygulama mantığı bilgisi.

Karmaşık protokoller.

Kodsal değişikliğin etkisi.

Test veri yönetimi

Teknik bilgileri içeren envanter takibi

API Test Otomasyonu

Önceden tahmin edilen sonuçlarla gerçek sonuçların kıyaslanması ile test konuşlarının kontrol edilmesinin sağlanmasıdır. Manuel bir müdahele gerektirmeden testlerin hızlı koşulması sağlanır.

API testlerini otomatize ederken belli başlı prensipler üzerine kurgulamak oldukça önemlidir.

Önce başarılı case senaryoları.

Hızlı olduğundan emin olmak.

Süreklilik.

Bağımlılık azaltılmalı.

Tutarlı olması.

Gereksinim değişiklikleri.

API Testi Otomasyonunun Kazançları

Zaman maliyeti.

İş yükünü hafifletir.

Bakım.

Verimlilik.

API Test Tipleri

Entegrasyon Testi (Integration Testing)

Yük Testi (Load Testing)

Regresyon Testi (Regression Testing)

Güvenlik Testi (Security Testing)

Kullanıcı Arayüz Testi (User Interface Testing)

Fonksiyonel Test (Functional Testing)

Stres Testi (Stress Testing)

Entegrasyon Testi

Birbirinden bağımsız olarak test edilmiş olan iki yazılım ürünün birbirine bağlanması, birbiri arasında veri aktarımının sağlanması için birleştirilen modüllerin test edilmesidir.

Yük Testi

Belirlenen ölçüler doğrultusunda sisteme uygulanan yük altında sistem içerisinde ortaya çıkabilecek darboğazları (bottleneck) ortaya çıkarmak için yapılan testtir.

Regresyon Testi

Yaplan kodsal değişiklikler sonucunda sistemde değişiklik yapılan ve değişiklik yapılmayan alanlarda varsa yeni hataları bulmak için yapılan test çeşididir.

Kullanıcı Arayüz Testi(UI)

API’ları da kapsayan uçtan uca entegrasyon testlerinin bir parçası olarak gerçekleştirilen daha büyük işlem ekransal GUI öğelerini doğrulmasına olanak tanır.

Güvenlik Testi

Bilişim sistemlerindeki mantık hataları ve zafiyetleri tespit ederek, söz konusu güvenlik açıklıklarının kötü niyetli kişiler tarafından istismar edilmesini önlemek ve sistemleri daha güvenli hale getirmek amacıyla yapılan testtir.

Fonksiyonel Test

Sistemin veya yazılımın özelliklerini ve işlevselliğini test etmek için kullanılan tekniktir.

Fonksiyonel testlerde temel olarak bileşen veya sistem fonksiyonlarının testleri yapılır.

Stres Testi

Belirli bir sistemin, kritik bir altyapının veya varlığını, kararlılığını belirlemek içi kullanılan kasıtlı olarak yoğun veya kapsamlı bir test şeklidir.

Sonuçları gözlemlemek için normal çalışma kapasitesinin ötesinde, genellikle bir kırılma noktasına kadar test yapılmasını içerir.

API Test Araçları

--

--