iToverDose/Yazılım· 7 HAZIRAN 2026 · 12:04

API testleri için manuel kalıplar yorucu mu? ConfIT ile otomatik çözüm

Yazılım projelerinde API testi yazmak her yeni endpoint için yinelenen kalıp kodlar ile kâbusa dönüşüyor. ConfIT adlı yeni bir .NET kütüphanesi, bu soruna YAML tabanlı test tanımlarıyla çözüm sunuyor.

DEV Community3 dk okuma0 Yorumlar

Yazılım geliştirme ekipleri için en yaygın sorunlardan biri, API testlerinin sürekli tekrarlanmasıdır. Her yeni endpoint eklendiğinde, geliştiriciler aynı kalıp kodları yeniden yazmak zorunda kalıyor: test sınıfları, veri yolları, yanıt ayrıştırma ve dinamik alanlar için özel doğrulayıcılar. Aslında testin kendisi sadece birkaç satırdan ibaret olsa da, etrafındaki yapılandırma ve altyapı işlemleri zaman kaybına neden oluyor.

Bu soruna çözüm arayışında olan bir geliştirici, kendisini bu tekrarlardan kurtaracak bir araç geliştirdi. ConfIT, .NET projelerinde API testlerini YAML veya JSON formatında tanımlamayı sağlayan bir kütüphane olarak ortaya çıktı. Kütüphanenin temel amacı, testlerin sadece gerekli bilgilerden oluşmasını sağlamak ve tüm altyapı işlemlerini otomatikleştirmek.

Testleri Basitleştirmek: YAML ile Tanımlanan API İşlemleri

ConfIT’in en önemli avantajlarından biri, testlerin nasıl tanımlandığı. Geleneksel yaklaşımda, her test için bir sınıf, metod ve çok sayıda hazırlık kodu yazılması gerekiyor. Oysa ConfIT ile testler, doğrudan API endpoint’lerine yönelik basit tanımlamalara dönüşüyor. Örneğin, yeni bir kullanıcı oluşturma testi şu şekilde tanımlanabiliyor:

CreateUser:
  tags: [smoke]
  api:
    request:
      method: POST
      path: /api/users
      body:
        name: Alice
        email: alice@example.com
    response:
      statusCode: 201
      matcher:
        semantic:
          id: isUuid
        extract:
          userId: $.body.id

Bu tanımlamada dikkat çeken nokta, yanıttan alınan userId değerinin otomatik olarak ikinci bir testte kullanılabilmesi. Örneğin, kullanıcı bilgilerini sorgulayan bir test şu şekilde yazılabiliyor:

GetUser:
  api:
    request:
      method: GET
      path: /api/users/{{userId}}
    response:
      statusCode: 200
      body:
        name: Alice
        email: alice@example.com
      matcher:
        ignore: [createdAt]

Burada {{userId}} değişkeni, ilk testten otomatik olarak aktarılıyor ve herhangi bir elle işlem gerektirmeden yanıt doğrulamasına dahil ediliyor.

Doğrulama Mantığını Basitleştirme: Eşleştirme Seçenekleri

ConfIT’in en kullanışlı özelliklerinden biri, yanıt doğrulama işlemlerini basitleştiren matcher bloğu. Geleneksel olarak, her testte elle yazılması gereken doğrulama kodları, ConfIT ile çok daha basit hale geliyor. Örneğin:

  • ignore: Yanıt içinde yer alan ancak doğrulanması gerekmeyen alanların listelenmesini sağlıyor. Yukarıdaki GetUser örneğinde createdAt alanı bu şekilde dışarıda bırakılıyor.
  • semantic: Adından da anlaşılacağı gibi, belirli veri türlerine yönelik doğrulama sağlıyor. Örneğin:
  • isUuid: UUID formatında olup olmadığını kontrol ediyor.
  • isIsoDate: ISO 8601 tarih formatında olup olmadığını doğruluyor.
  • isEmail: E-posta formatının geçerli olup olmadığını kontrol ediyor.
  • greaterThan(n): Sayısal bir değerin belirli bir eşikten büyük olup olmadığını test ediyor.
  • hasLength(n): Bir dizi veya dizenin belirli bir uzunlukta olup olmadığını doğruluyor.

Bu özellikler, geliştiricilerin her testte aynı doğrulama kodlarını yeniden yazmasını engelliyor ve testlerin daha okunabilir hale gelmesini sağlıyor.

Bileşen ve Entegrasyon Testlerini Tek Bir Yapıda Birleştirme

ConfIT’in bir diğer önemli avantajı, bileşen ve entegrasyon testlerini tek bir yapı altında toplaması. Geleneksel yaklaşımda, bu iki test türü genellikle ayrı sınıflarda ve farklı yapılandırmalarda yer alıyor. Örneğin, bileşen testi geliştiricinin hizmetini yerel olarak çalıştırırken, entegrasyon testi tüm sistemi gerçek ortamda test ediyor. Bu da iki ayrı test takımının bakımının yapılmasını gerektiriyor.

ConfIT’de ise aynı YAML dosyası hem bileşen hem de entegrasyon testlerinde kullanılabiliyor. Testlerin çalıştırılması sırasında sadece yapılandırma dosyası değiştiriliyor. Örneğin, bileşen testi için yapılan yapılandırma şu şekilde olabiliyor:

public TestSuiteFixture()
    => _suite = SuiteBootstrapper.ForComponent<Startup>("suite.config.yaml", 
        onStarted: svc => new DbInitializer(svc.GetRequiredService<AppDbContext>()).Seed());

public TestSuiteContext Context => _suite.Context;

Bu yapıda, tüm test senaryoları aynı dosyada yer alıyor ve sadece suite.config.yaml dosyası değiştirilerek farklı test türleri çalıştırılabiliyor. Geliştiriciler artık iki ayrı test takımını değil, tek bir test setini yönetiyor.

YAML Dosyaları: Sadece Testlerden Daha Fazlası

ConfIT’in beklenmedik bir şekilde ortaya çıkan bir faydası da YAML dosyalarının testlerin ötesinde kullanılması. Yeni ekip üyeleri, projeye dahil olduklarında API’nin nasıl çalıştığını doğrudan YAML dosyalarından okuyabiliyor. Kalite güvence ekipleri, C# koduna dokunmadan yeni test senaryoları ekleyebiliyor. Kod incelemeleri sırasında da geliştiriciler, veri yapıları üzerinde çalışıyor ve test mantığının karmaşıklığıyla uğraşmak zorunda kalmıyor.

Ancak ConfIT’in her durumda kullanılabileceği anlamına gelmiyor. Karmaşık durum makineleri veya çok sayıda koşullu mantık gerektiren testler için hala geleneksel test sınıfları daha uygun olabiliyor. ConfIT, özellikle CRUD türündeki basit API testleri için tasarlanmış bir araç. Tamamen her şeyin yerini almak yerine, yaygın kullanım senaryolarını basitleştirmeyi hedefliyor.

Geleceğe Yönelik Gelişmeler ve Desteklenen Platformlar

ConfIT, .NET 9 ve .NET 10 platformlarını destekliyor. Ayrıca, .NET dışındaki hizmetleri test etmek isteyen geliştiriciler için AppLauncher modunu sunuyor. Bu mod, Go, Node.js veya Python gibi dillerde yazılmış hizmetleri çalıştırarak HTTP üzerinden test etmeyi sağlıyor. Aynı test dosyaları, farklı platformlarda çalışan hizmetler için de geçerli oluyor.

Projeye ilişkin kaynak koduna ve dökümantasyona github.com/techygarg/ConfIT adresinden ulaşılabilir. NuGet paketi ise nuget.org/packages/ConfIT üzerinden indirilebiliyor.

ConfIT’in ThoughtWorks Teknoloji Radarı'nda değerlendirilmesi ve olumlu geri bildirimler alması, bu tür araçların ne kadar ihtiyaç duyulduğunu gösteriyor. Yazılım geliştirme sürecindeki tekrarları ortadan kaldırarak ekiplerin daha verimli çalışmasını sağlayan bu tür yenilikçi yaklaşımların yaygınlaşması, sektör için önemli bir adım olacaktır.

Yapay zeka özeti

Yinelenen API testleriyle mücadele mi ediyorsunuz? ConfIT adlı .NET kütüphanesi ile testleri YAML/JSON ile tanımlayın, zamandan tasarruf edin ve bakımı kolaylaştırın.

Yorumlar

00
YORUM BIRAK
ID #GIBA6T

0 / 1200 KARAKTER

İnsan doğrulaması

2 + 3 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.