API ve API Testi
BTK Akademi API ve API Testi kursu notlarım
Kurs içeriği
-API kavramı
-API tipleri
-Web Servis Kavramı
-API Testi
-API Test Tipleri
-API Test araçları
-Test araçları ile örnek test uygulamaları
API nedir?
Application programming interface yani uygulama programlama arayüzüdür. İki uygulamanın birbiriyle iletişim kurmasına olanak sağlayan bir yazılım aracısıdır. Sunucu üstündeki uygulamaya farklı kaynaklardan ulaşılmasına olanak sağlar.
API uygulama sunucularında, bulut kaynaklarında, bulut tabanlı servislerde, mobil uygulamalarda, veritabanlarında ve web uygulamalarında kullanılır.
Genelde web ve uygulama geliştiriciler kullanır. Amaç farklı servislerin özelliklerinden yararlanmaktır.
Süreçleri çabuk ve programlı hale getirir.
API Tipleri
SOAP ve REST.
SOAP basit nesne erişim protokolü temel anlamda internet üzerinden belirli bilgileri ya da mesajları aktarma protokolüdür. SOAP mesajları XML formatlıdır.
REST
Client-server arasında hızlı ve kolay iletişim kurulmasını sağlayan bir servis yapısıdır. XML veya JSON formatlı mesajlar gönderilir. Http üzerinde çalışır minimum veri alıp gönderdiğinden dolayı hızlıdır. Servis yönelimli mimari üzerine oluşturulan yazılımlarda kullanılan bir veri transfer yöntemidir.
Web Servisi
Web servisi iki makinenin bir ağ üzerinden birbirileri ile iletişim kurmak için kullandığı bir yöntemdir. Web servislerine sadece ağ üzerinden erişilebilir. Web servisleri internet üzerinden haberleşirler. Web servisler kullanılırken Http metotlarına başvurulur.
UDDI(Universal Description discovery and integration)
Web servis tanımlamak ve ağ üstünden servislerin hangilerinin kullanılabilir olduğunu listeleyen bir framework’tür.
WSDL(web services description language)
XML formatlı web servislerin ne yaptığını ve ne iş yaptığını belirleyen bir dildir.
API ve Web Servis ilişkisi
Web servisler uzaktaki bir veritabanı ile iletişim kurulurken kurulan bu iletişimdeki veri aktarım türlerini ve veri çeşitlerini standardize etmeyi amaçlar.
Her API bir web servisi değildir. Tüm API’lere internet üzerinden erişilemeyebilir.
Her web servis bir API’dır. Web Servislerine her zaman ağ üzerinden erişilebilir.
SOAP
Http ve TCP ile çalışmaktadır. Sadece XML ile veri alışverişinde bulunabilir. Mesajlar method hazırlama cevap ve hata mesajlarından oluşur.
Soap mesaj bölümleri
Envelope: Birçok servis, istek ve cevaplarını içinde bulunduran bölümdür.
Header: Metadata bilgisi içerir.
Body: istek ve cevaptan parametreler bulunur.
Fault: hata mesajı durumunu içerir.
WDSL
Web servis tanım dilidir. Metot, parametre ve web servis adresleri bulundurur.
Temel elementler
Types: Mesajlarda kullanılacak veri tiplerini tanımlar.
Message: İletişimde kullanılacak mesajları tanımlar.
Port type: Web servisin içerdiği işlemleri yani metotları tanımlar.
Binding: İşlem ve mesajlarda kullanılacak veri formatlarını tanımlar.
Port: Binding ve web servisinden oluşan servis bölümünü tanımlar. Web adresi servisin çalıştıracağı URL’dir.
Service: Kullanılan portlar kümesidir.
Rest API
REST(representational state transfer) temsili durum transferi anlamına gelir. İstemci sunucu arası hızlı iletişim sağlar. http durum kodlarına göre gelen isteklere xml veya json olarak cevap verir. Minimum sayıda veri ilettiğinden dolayı hızldır.
Restful Servis gereksinimleri
Uniform interface, client-server, casheable, stateless, layered system, code on demand.
Uniform Interface: 4 kuralı vardır.
Sunucuya yapılan istek tek kaynak içermelidir.
Sunucu yeterli bilgiyi girmelidir ki istemci değiştirebilsin
Sunucunun ve istemci bir diğerinin istediği tüm gerekli bilgileri içermelidir.
Dönen cevap ile ilgili sonuç ek olarak ilgili kaynak ile ilgili olan bağlantıları da paylaşmalıdır.
Client-Server mimarisi
Sunucu sadece kendisine gelen bilgi sonucunda değer döner.
Sunucu ve sağlayıcı birbirinden bağımsız olarak çalışırlar.
Cashable
Sunucu responser’ın önbelleğinde hangi bilgiler olduğunu belirtmelidir böylece gereken kadar veri aktarılır. Eski verili önbellek atılır böylece kimse eski veri kullanmamış olur.
Stateless
Sunucu istemci ile ilgili hiçbir bilgi tutmamalıdır. İstemci tarafından gerçekleştirilen her istek sunucunun sonuç dönebilmesi için geçerli bilgiyi taşımalıdır. İstemci ayrımı, istek esnasında gönderilen bir token(jeton) aracılığı sayesinde gerçekleştirilir.
Layered System
Sistemdeki bileşenler katmanların ötesini göremez ve kendi katmanını bilemezler. Böylece yük dengeleyiciler(load-balancer) ve proxy’ler kullanılabilir.
Code on Demand
Opsiyonlu bir durumdur. Sunucunun çalıştırılabileceği kod göndermesi ile ilgilidir.
Rest Servis HTTP metotları
GET
Veri listelemek ve görüntülemek için kullanılır. Güvenli olmalıdır. Her zaman sonuçları aynıdır. Adres çubuğunda gönderilir ve adres çubuğunda sonuç gözüktüğü için güvenilir değildir ancak şifreleme ile güvenli olarak kullanılabilir. Örneğin sipariş detaylarını getirebiliriz.
POST
Veri eklemek ve güncellemek için kullanılır. Bilgiler doğrudan sayfaya yollanır. Adres çubuğunda sonuç gözükmez, daha güvenilirdir. Yeni bir sipariş oluşturmak için kullanılabilir.
PUT
Veri güncellemek için kullanılır. Bir istek birden fazla kez tekrar etse de sonucu aynıdır. Bir veriyi günceller veya yeni veriyi üzerine ekler. Örneğin siparişi güncelleyebiliriz.
PATCH: Verinin bir parçasını güncellemek için kullanılır.
DELETE: Kaynaktan veriyi silmek için kullanılır.
OPTIONS: Kabul edilen istekler doğrultusunda bilgi iletilir.
Http durum kodları(State Code)
3 hanelidir ve ilk rakamına göre kategorize edilir.
1XX Bilgilendirici kodlardır.
2XX Başarılı kodlardır.
3XX Yönlendirme kodlarıdır.
4XX İstemci hata kodlarıdır.
5XX Sunucu hata kodlarıdır.
Popüler durum kodları
100 Continue: Başarılı ve devam edilebilir.
200 OK: İstek başarıyla yerine getirildi demektir.
201 Created: İstemcinin isteği ile bir istek oluşturulmuştur.
204 No Content: İstemciye karşı herhangi bir “body” yollanmadıysa sunucunun kasıtlı olarak “body” kısmını boş bırakıldığını gösterir.
400 Bad Request: Diğer kodların ihtiyacımızı karşılamadığı durumlarda kullanılır.
401 Unauthorized: Korumalı kaynağa yetkisiz erişilmeye çalışıldığını ifade eder. Yetki bilgileri hiç gönderilmemiş veya yanlış gönderilmiştir.
403 Forbidden: Yetki sağlanan kullanıcının istenen kaynağa erişim yetkisi yoksa kullanılır.
404 Not Found: İstemcinin istediği kaynağı bulamadığını ifade eder.
505 Internal Server Error: Sunucunun hatası yüzünden istek yerine getirilemiyorsa kullanılır.
SOAP ve Rest Farkı
Güvenlik
SOAP için güvenlik REST’e göre daha kolay ve hızlıdır. Güvenlik bilgisini içinde tutar. REST servislerine URL üstünden erişilir arada herhangi bir güvenlik bileşeni yoktur.
Format
REST ile JSON, XML, Text dosyaları ile çalışabilirken SOAP ile yalnızca XML çalışabiliriz.
Boyut ve hız
REST daha hızlıdır. XML dili veri değişim işlemlerinde yavaş kalmaktadır.
Ön Bellek kullanımı
REST basit http Get metodunu kullandığı için önbellekleme daha kolaydır. SOAP önbellekleme için karmaşık XML request’leri yapılmalıdır.
Tasarım
Rest’in tasarlanması ve kullanılması daha kolaydır çünkü bir dile ihtiyaç duymadan http metodları ile kullanılabilmektedir. Soap için geliştirme araçları vardır ama Rest için gerek yoktur.
Kullanım
Soap için istemcinin tüm bilgisinin bilinmesi lazımdır aksi halde kullanılamaz. Rest için sadece URL bilgisi yeterlidir.
API Testi
Uygulamalar arası veri alışverişinin test edilmesi ve gözlenmesi işlemleridir. Yazılım test ekipleri gerçekleştirir ve kritik öneme sahip bir işlemdir. Api test edilir çünkü işlevsellik, performans, güvenilirlik, güvenlilik ve kullanılabilirlik test edilmelidir. Test esnasında yapılan eylemler: işlevselliği doğrulamak, sınır değer analizi ve hataların bulunması ve kalitenin arttırılması gerçekleştirilir.
API Testinin avantajları ve zorlukları
Api Testi işlemleri
Giriş parametreleri>Beklenen sonuç çıktısı>Cevap almak için harcanan süre>İstek mesajın ayrıştırılması>Hata yönetimi>Dönen cevabı formatlama
Api testinin faydaları
Kontrollü yönetilebilir olması, cevaplar ve verilerin doğrulanabilir olması, hata tespitinin kolaylığı, kısa sürede tamamlanabilir olması ve kısa zamanda daha fazla hata bulunarak kalite arttırılabilir olmasıdı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 koşumlarının kontrol edilmesinin sağlanmasıdır. Manuel bir müdahale gerektirmeden testlerinizin hızlı koşulmasını sağlar.
Önce başarılı durum senaryolarını düşünebilmelisiniz. Testin hızlı olduğundan emin olmak. Süreklilik sağlamak ve bağımlılığı azaltılmak gerekmektedir. Otomasyonun tutarlı olması çok önemlidir. En önemli nokta ise gereksinimin sık değiştiği noktalarda api testi otomasyonu tercih edilmemelidir.
Api testi otomasyonunun kazançları
Zamandan kazanç sağlar. İş yükü hafifletilir. Bakım maliyeti düşecektir. İş yükünü azaltıp verimliliği arttırır.
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) ve stres testi(stress testing) api test tipleridir.
Entegrasyon testi
Birbirinden bağımsız olarak test edilmiş olan iki yazılım ürünü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
Belirlenene ölçüler doğrultusunda sisteme uygulanan yük altında sistem içerisinde ortaya çıkabilecek darboğazları ortaya çıkarmak için yapılan testtir.
Regresyon Testi
Yapılan kodsal değişiklikler sonucunda sistemde değişikli yapılan ve değişiklik yapılamayan alanlarda varsa yeni hataları bulmak için yapılan test çeşididir.
UI Testing
Kullanıcı arayüzü testleri.
Güvenlik testleri
Mantık hataları ve zafiyetleri tespit eder.
Fonksiyonel test
Bileşen veya sistem fonksiyonları test edilir. Yazılımın özellikleri ve işlevselliği test edilir.
Stres Testi
Kararlılığı belirlemek için kullanılan kasıtlı olarak yoğun ve kapsamlı bir test şeklidir. Sonuçları gözlemlemek için normal çalışma kapasitesinin ötesinde genellikle kırılma noktasına kadar test yapılmasını içerir.
API Test araçları
SoapUI hem SOAP hem REST api testi imkanı sağlar. Postman hem REST hem SOAP testi yapabilirsiniz. Katalon Studio ile hem api hem web/mobil otomasyon testleri geliştirebilirsiniz. Rest-Assurred davranışsal yönelimli uygulama geliştirme kabiliyetine sahiptir. Karate DSL açık kaynaklı test aracıdır ve paralel test koşumunu sağlar.
SoapUI
Web servisleri kontrol etmek, herhangi bir web servisi çağırmak, web servisi sanallaştırmak ya da fonksiyonel test yapmak için kullanılır. Özellikle web servis entegrasyonlarında fazlasıyla işe yarayan bir yapıya sahiptir.
JDBC sayesinde veritabanı bağlantısı sağlanır.
Mocking
Mocking servislerin sanallaştırılması demektir. Servis testlerinde dış servislerin değerlerinde sorun yaşıyorsanız dış servisleri taklit ederek istediğiniz veriyi göndermenizi sağlar.
-SON-
Referanslar:
[1] BTK- Akademi API ve API Testi Kursu