API ve API Testi
API Nedir ?
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.
- 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ı