API ve API Testi

Cahit Barkin Ozer
6 min readMay 31, 2021

--

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

--

--

Cahit Barkin Ozer
Cahit Barkin Ozer

Written by Cahit Barkin Ozer

Üretken YZ başta olmak üzere teknoloji alanındaki yenilikleri öğrenip sizlerle paylaşıyorum. Youtube Kanalım: https://www.youtube.com/@cbarkinozer

No responses yet