API Test, Yazılım Kalitesinin Omurgası
Modern yazılımlar, API'lar (Application Programming Interfaces) üzerine inşa edilir. Mobil uygulama, web tarayıcısı, üçüncü taraf sistemler - hepsi sunucuyla API aracılığıyla iletişim kurar. Eğer API hatalıysa veya yavaşsa, tüm yazılım kalitesi etkilenir.
2024 araştırması gösteriyor ki, yazılım hatalarının 60-70%'i API seviyesinde başlar. UI testleri bunu kaçırabilir (tarayıcı hatalı yanıtı gizleyebilir), ama API testleri çıkın.
API test neden çok önemli?
- Performans: UI testleri bağlantı gecikmelerini gizleyebilir. API testleri ağ seviyesinde yanıt sürelerini ölçer.
- Güvenlik: Kimlik doğrulama, yetkilendirme, veri şifrelemesi - API seviyesinde doğrulanmalı.
- Entegrasyon: Üçüncü taraf servislerin (ödeme, kimlik doğrulama, raporlama) API'larının çalışıp çalışmadığını sadece API testleri kontrol edebilir.
- Hız: API testleri UI testlerinden 100 kat daha hızlı koşar.
API Test Türleri
1. Fonksiyonel API Test
API'nın tasarlandığı şekilde çalışıyor mu? Giriş verisi gönder, beklenen çıktıyı al.
Örnek: /api/users/123 adresine GET isteği gönder, kullanıcı bilgisini JSON olarak al. Dönen JSON'da expected alanlar var mı (id, name, email)? Veri doğru mu?
Fonksiyonel test, her API endpoint'i ve her kod yolu için yazılmalıdır. Başarılı senaryo kadar başarısız senaryolar (invalid data, authentication failure) da kapsamalıdır.
2. Entegrasyon API Test
İki veya daha fazla API'nın birlikte çalışıp çalışmadığını test eder.
Örnek: Kullanıcı kaydı (/api/users - POST) yapıldıktan hemen sonra, o kullanıcıya giriş (/api/auth/login - POST) yapılabilir mi? Kaydolmuş kullanıcının veritabanına kaydedilmesi tamamlandı mı?
Entegrasyon testleri, servislerin senkronizasyonunu ve veri akışını doğrular.
3. Performans API Test
API'nın hızı yeterli mi? Yüksek yük altında ne kadar yanıt verir?
Örnek: /api/products endpoint'i 100 saniye içinde ne kadar istek işleyebilir? Ortalama yanıt süresi kaç milisaniye?
4. Güvenlik API Test
API'nın saldırılara karşı dayanıklı mı?
- SQL injection: API input'da SQL kodu gönder, veritabanı etkilenir mi?
- Authentication bypass: Token olmadan API'yı çağır, yanıtlı mı?
- Authorization flaw: Başka kullanıcının verilerine erişebilir mi?
- Rate limiting: Aynı IP'den sınısız istek gönder, sınırlandırıyor mu?
Güvenlik testleri, daha ileri bir çalışmadır ve bazen dış uzmanlar tarafından yapılır.
5. Contract Testing
API'nın sağlayıcısı (sunucu) ile tüketicisi (istemci) arasında "kontrat" vardır. Sunucu JSON şu alanları dönderir, istemci bunları bekler. Eğer sunucu kontratı kırarsa, istemci kırılır.
Contract test, bu anlaşmayı doğrular. Sunucu geliştirici API formatını değiştiremez - test buna izin vermez.
Örnek: API /api/user/1 adresinden istek yapıldığında, dönen yanıt id, name ve email alanlarını içerir. Contract test, bu yapının hep böyle kalması garantisini verir. Sunucu geliştirici bu alanları değiştirirse, test başarısız olur.
API Test Araçları Karşılaştırması
Postman
En yaygın ve en kolay API test aracı. İnsan-dostu UI ile REST API'ları test edersiniz.
Avantajlar:
- Kurulum yok (web tarayıcısı veya masaüstü uygulaması)
- Harika koleksiyon yönetimi (testleri organize et, paylaş)
- Environment yönetimi (dev, test, production ayarlarını değiştir)
- Temel otomasyon testleri yazabilirsin (JavaScript)
- Ekip işbirliği iyi
Dezavantajlar:
- İleri performans testleri için uygun değil
- CI/CD hatta entegrasyon, daha çok ek scripting gerektirir
- Ücretsiz versiyon sınırlandırılmış
- Kompleks test senaryoları (koşullu logic, döngüler) zor
Uygun Durumlar: Hızlı ve manuel API test gereksinimleri, API'nın başlangıçta keşfedilmesi, temel seviye otomasyon testleri için ideal seçim.
REST Assured
Java-tabanlı otomasyon test framework'ü. BDD stiliyle yazılır.
Avantajlar:
- Java yazarsa kolayca entegre edebilir (JUnit, TestNG ile)
- Kod temiz ve okunaklı
- Güçlü assertion framework'ü
- CI/CD hatta kolay entegrasyon
- JSON Path ve XPath desteği
Dezavantajlar:
- Sadece Java (Python, JavaScript istersen uygun değil)
- Performans testi yerel yeteneği zayıf
- Kurulum biraz daha kompleks
Uygun Durumlar: Java tarafında çalışan ekipler, API otomasyon testleri ihtiyacı, CI/CD pipeline entegrasyonu gereken projeler.
Karate
REST ve GraphQL API testleri için BDD framework. Gherkin dili ile yazılır (İnsan dilini andırır). Örneğin, bir kullanıcı giriş test senaryosu, API endpoint'ini belirtir, giriş bilgilerini gönderir, response status kontrolü yapar ve token döndüğünü doğrular.
Avantajlar:
- BDD, non-teknik kişiler de yazabilir
- REST, GraphQL, SOAP desteği
- Mock server yapabilirsin
- CI/CD dostu
- Diller: Java, JavaScript
Dezavantajlar:
- Java/JavaScript deneyimi gerekir
- Community daha küçük
Uygun Durumlar: BDD yaklaşımını tercih eden ekipler, çoklu dil ve protokol desteğine ihtiyaç duyulanlar, iş analisti ve test uzmanlarının testler yazabileceği yapılar.
k6
Performans ve yük testi için specialized tool. JavaScript'te yazılan testler, binlerce eş zamanlı kullanıcıyı simüle edebilir.
Avantajlar:
- Performans testleri çok kolay ve hızlı
- Gerçekçi yük simülasyonu
- Real-time metrik görselleştirme
- Cloud-based scaling
- Açık kaynak
Dezavantajlar:
- Sadece performans testleri (fonksiyonel test zayıf)
- Özel bir tools'a bağımlılık
- Veri assertion'ları sınırlı
Uygun Durumlar: Yük testi ve performans testleri gereksinimleri, stres testleri, API'nın sınır kapasitesini belirleme.
Hızlı Karşılaştırma Tablosu
| Özellik | Postman | REST Assured | Karate | k6 |
|---|---|---|---|---|
| Kurulum | Çok Kolay | Kolay | Kolay | Kolay |
| Fonksiyonel Test | Var | Mükemmel | Mükemmel | Sınırlı |
| Performans Test | Sınırlı | Sınırlı | Sınırlı | Mükemmel |
| GUI Test | Var | Hayır | Hayır | Hayır |
| Otomasyon | Temel | Mükemmel | Mükemmel | Mükemmel |
| BDD Support | Hayır | Var | Mükemmel | Hayır |
| CI/CD | Orta | Mükemmel | Mükemmel | Mükemmel |
| Öğrenme Eğrisi | Hafif | Orta | Hafif | Orta |
API Test Stratejisi
Yazılım test çerçevesini tam olarak anlamak için, Yazılım Test ve Kalite Güvence rehberi adlı ana kaynağımızı inceleyebilirsiniz.
Test Piramidinde API Testlerinin Yeri
Birim testler tabanında, entegrasyon ortada, E2E UI testleri tepede. API testleri nereye girse?
Optimal yapı:
- Birim testleri: %60
- API testleri: %25
- E2E UI testleri: %15
API testleri, pahalı UI testlerinden çok daha ucuz ve hızlı. Üretim hatalarının çoğunu yakalamak için, buraya yatırım yapmalı.
Mock vs Real Services
Test ortamında gerçek üçüncü taraf servislerini çağırmak maliyetli olabilir. Ödeme ağ geçidi, SMS servisi vs. Her test koşuşunda ücret çekilmesi istemezsin.
Çözüm: Mock servisi. Sahtesini kullanarak test et. Real servisi sadece entegrasyon testinde, ve kontrollü olarak çağır.
Wiremock, Mockoon gibi araçlar, gerçekçi mock API'lar oluşturur.
Test Veri Yönetimi
API testleri, gerçekçi veri gerektirir. Ancak gerçek müşteri verileri kullanılamaz.
Çözüm:
- Veritabanı seeding: Test başlamadan önce veritabanı belirli verilerle doldurulur
- Faker kütüphanesi: Rastgele ancak tutarlı veri oluştur (Bogus.js, Faker Python, etc.)
- Dedicated test data: Sadece test için ayrılmış veriler
API Test Yaşam Döngüsü
1. Test Planlaması
- Hangi endpoint'ler test edilecek?
- Hangi senaryolar (başarı, başarısızlık, edge case)?
- Performans hedefleri nedir (yanıt süresi, throughput)?
- Güvenlik kontrolleri nelerdir?
2. Test Tasarımı
Her test senaryosu için:
- Giriş: Hangi veriyi gönderecek?
- Beklenen çıktı: Ne dönmeli?
- Assertion: Dönen veriyi nasıl doğrulayacak?
3. Test Uygulanması
Seçilen aracın (REST Assured, Karate, vb) çerçevesinde testler yazılır.
4. Test Yürütülmesi ve Raporlama
CI/CD hatta otomatik koşturulur. Sonuçlar raporlanır: Kaç test geçti, kaç başarısız oldu, ortalama yanıt süresi nedir?
CI/CD Hatta API Testleri
Modern geliştirme, her git push'ta testlerin otomatik koşması anlamına gelir. API testleri bu hatta merkezi önemdedir.
Sıralama genellikle:
- Build (kodu derle)
- Birim testleri (hızlı)
- API testleri (orta hız)
- E2E testleri (yavaş, sadece critical path'lar)
- Performans testleri (gecede çalıştırılabilir)
Test başarısız olursa, kod main branch'e merge edilmez. Kalite kapısı kapalı kalır.
Yaygın Hatalar
Test verisi harcaması: Her test kez gerçek veri oluşturmak, test sonunda silmek. Mock kullansı.
Hardcoded değerler: Test kodu dev ortamında çalışır, production'da çöker. Environment değişkenleri kullan.
Testler arasında bağımlılık: Test A başarılı olmazsa, Test B de başarısız olur. Testler bağımsız olmalı.
Assertion eksikliği: API çağrısı yanıt alıyor, ama yanıtın doğru olup olmadığını kontrol etmiyor.
Performans testinin ihmal edilmesi: API fonksiyonel olabilir ama yavaş. Performans de test edilmeli.
API Test Türlerinin Maliyet ve ROI Analizi
API test yatırımının geri dönüş, hızlı ve kanıtlanmıştır:
| Test Türü | Yazımı Maliyeti | Yürütme Maliyeti | Hata Bulma Oranı | Aylık Bakım |
|---|---|---|---|---|
| Manuel API Test | 1.000 USD/endpoint | 200 USD/test çalışması | 40% | 500 USD |
| Otomasyon (Postman) | 2.000 USD/endpoint | 50 USD/test çalışması | 70% | 300 USD |
| Otomasyon (REST Assured) | 3.000 USD/endpoint | 30 USD/test çalışması | 80% | 400 USD |
| Contract Testing | 5.000 USD/endpoint | 20 USD/test çalışması | 85% | 600 USD |
Örnek: 20 endpoint, ayda 30 kez test:
Manuel:
- Yazım: 20.000 USD (bir kez)
- Aylık koşu: 30 koşu x 20 endpoint x 30 dakika = 300 saat = 15.000 USD/ay
- Yıllık: 200.000 USD
Otomasyon (REST Assured):
- Yazım: 60.000 USD (bir kez)
- Aylık koşu: 30 koşu x 5 dakika = 2.5 saat = 150 USD/ay
- Yıllık: 62.000 USD
Tasarruf: 138.000 USD/yıl, ilk yıl ROI = %130%
API Test Best Practices
1. Test Data Strategy
- Isolated Test Data: Her test, kendi veri setine sahip olmalı
- Seed and Clean: Her test başında temiz veri, test sonu temizle
- Faker Libraries: Realistic fake data üret (Bogus, Faker, Factory Bot)
2. Mock ve Stub Stratejisi
- Üçüncü taraf API'lar mock'la: Ödeme sistemi, SMS gateway
- İnternal API'lar mock'lama, API test bitene kadar
- Production'a geçmeden real API ile integration test
3. Assertion Best Practices
- Sadece status code kontrol etme, response body'yi de kontrol et
- JSON schema validation: Dönen veri yapısı doğru mu?
- Business logic assertion: "balance < 0" gibi invalid state'ler
4. Error Handling
- 2xx (success), 4xx (client error), 5xx (server error) testleri
- Rate limit (429), timeout (504) gibi edge case'ler
- Error message'lar meaningful mi?
API Versioning ve Backward Compatibility
Başarılı API, backward compatible kalmalı. Eski client'lar, yeni API'yla çalışmalı.
API Versioning Stratejileri:
URL Versioning (yaygın)
- /api/v1/users
- /api/v2/users
- Avantaj: Clear, explicit
- Dezavantaj: URL's proliferation
Header Versioning (clean)
- GET /api/users with header: Accept-Version: 2.0
- Avantaj: URL's clean
- Dezavantaj: Tools uyması zor
İçerik Müzakeresi (modern)
- GET /api/users ile başlık: Accept: application/vnd.myapi.v2+json
- Avantaj: RESTful
- Dezavantaj: Kompleks
API test'leriniz, tüm versiyonlar için çalışmalıdır. V1 client'ı hala çalışıyor mu kontrol et.
API Test Reporting ve Metrikleri
API test'leri sonuçlanınca, raporlanmalı. İş tarafı anlaşılabilir metrikler:
- API Availability: Kaç yüzde zaman API yanıt verdi? Hedef: %99.9+
- Response Time: Ortalama, percentile (p95, p99)
- Error Rate: Kaç istek başarısız? Hedef: < 0.1%
- Throughput: Saniye başına kaç istek işlenir? Hedef: 1000+ req/sec
- Data Accuracy: Dönen veri, beklenen veri ile eşleşti mi? Hedef: 100%
Good Dashboards:
- Jenkins/GitLab CI: Build başarısı, test sonuçları, trend
- Grafana: Real-time API metrikleri
- Splunk: Error log analysis
- DataDog/NewRelic: API performance monitoring
Yaygın API Test Hatalar
Hard-coded URL'ler: Dev'de localhost:8080, prod'ta production.com
- Çözüm: Environment variables, config files
Stateful testler: Test A başarısız olursa, Test B de başarısız
- Çözüm: Her test bağımsız, setup ve teardown yapı
Network flakiness'e bağlı başarısızlık: Random timeout
- Çözüm: Retry logic, explicit waits, timeout config
Assertion eksikliği: API çağrı başarılı, ama dönüş verisi hatalı
- Çözüm: Response body validation, schema check
Performance baseline yok: Test "geçti" ama yanıt süresi 5 saatten 30 saniyeye çıktı
- Çözüm: Performance baseline, trend monitoring
API Test Otomasyonunun İş Değeri
API test otomasyon, kaliteyi artırmanın ötesinde, hızı da artırır:
- Geliştirme Hızı: Regression testleri otomatik olduğunda, yeni feature yazılması daha güvenli
- Pazara Çıkış Süresi: Stabilite garantili olunca, release cycle'ı hızlandırabiliriz
- Destek Maliyeti: Üretim hataları %60 azalır, destek ticket'ları düşer
- Müşteri Memnuniyeti: API downtime minimum, customer satisfaction artır
Yazılım test çerçevesinin genel bağlamında API testlerinin yeri hakkında daha fazla bilgi için, Yazılım Test ve Kalite Güvence rehberi adresini ziyaret edebilirsiniz.
Smart Maple API Test Hizmetleri
API test stratejisinden uygulamaya kadar, Smart Maple yazılım geliştirme ekiplerine kapsamlı API test hizmetleri sunuyor. Postman, REST Assured, k6 ve diğer araçlarla test otomasyonu, CI/CD entegrasyonu, performans test raporlaması ve contract testing hizmetlerini gerçekleştiririz. Yazılımınızın API'larının güvenli, hızlı ve güvenilir olmasını sağlamak için smart-maple.com adresini ziyaret edin ve deneyimli ekibimizle iletişime geçin.
Related Articles
MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma
Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı
Read MoreLLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]
LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek
Read MoreBilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI
Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri
Read More
