DEV Community

Cover image for Apidog API Test Senaryolarına If/Else Dallanma ve Akış Kontrolü Nasıl Eklenir
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Apidog API Test Senaryolarına If/Else Dallanma ve Akış Kontrolü Nasıl Eklenir

Çoğu API testi doğrusal ilerler: giriş yapın, ödeme oluşturun, makbuzu alın ve her adımda doğrulama yapın. Ancak giriş isteği 401 döndürürse ödeme isteğini çalıştırmak hem gereksizdir hem de asıl hatayı sonraki adımın hatasıyla gizleyebilir. Çözüm, önceki yanıtı değerlendiren, çalıştırmaya devam edip etmeyeceğine karar veren ve hatayı doğru noktada raporlayan koşullu bir test akışı oluşturmaktır.

Apidog'u bugün deneyin

Bu kılavuzda Apidog ile bir API test senaryosuna if/else dallanması ekleyeceksiniz. Örnek akışta önce oturum açacak, durum kodunu kontrol edecek ve yalnızca giriş başarılıysa ödeme isteğini çalıştıracaksınız. Temel senaryo oluşturma için Apidog ile test senaryosu nasıl yazılır rehberine bakabilirsiniz. Koşullu mantığın JavaScript tarafındaki temelleri için MDN koşullu ifadeler kılavuzu yararlıdır.

Akış kontrolü nedir ve ne değildir?

Apidog'da otomatik testler Testler modülünde oluşturulur. Çalışma birimi bir Test Senaryosudur; bu yapı Postman'deki Collection kavramına benzer. Senaryo içinde Test Adımları tanımlarsınız. Her adım:

olabilir.

Apidog akış kontrolü arayüzü

Akış kontrolü, senaryonun istekleri yalnızca sırayla çalıştırmak yerine yanıt verilerine göre karar vermesini sağlar. Apidog akış kontrolü ve koşullu dallanma belgeleri, bu öğelerin ayrıntılı referansını içerir.

Bu yazının odağı Koşullu Dallanmadır:

  • Koşulu değerlendirir.
  • Koşul doğruysa bir adım grubunu çalıştırır.
  • Koşul yanlışsa Else yolundaki alternatif adımları çalıştırır.

Dallanma ve döngü aynı şey değildir. Dallanma bir kez karar verir; döngü ise bir bloğu tekrar tekrar çalıştırır.

Örneğin sipariş kimlikleri dizisindeki her öğe için aynı isteği çalıştırmanız gerekiyorsa ForEach döngüsü kullanmalısınız. Bu konu için ForEach döngüsü öğreticisine bakın.

Apidog belgelerinde akış kontrolü, koşullu dallanma, döngüler veya adımlar arası veri aktarımı için plan ya da bulut/kendi kendine barındırılan kurulum ayrımı belirtilmemektedir. Senaryo oluşturabiliyorsanız, senaryoya dal ekleyebilirsiniz.

Giriş yanıtına göre dallanan senaryo oluşturma

Hedef akış:

  1. Kullanıcı giriş yapar.
  2. Giriş isteği 200 döndürürse ödeme isteği çalışır.
  3. Giriş başarısızsa ödeme isteği çalışmaz; hata yolu tetiklenir.

Adım 1: Test senaryosunu oluşturun

Apidog'da Testler modülünü açın.

  1. Arama çubuğunun yanındaki + simgesine tıklayın.
  2. Yeni bir Test Senaryosu oluşturun.
  3. Senaryonun bulunacağı dizini seçin.
  4. Öncelik değerini ayarlayın.
  5. Senaryoyu oluşturun.

Artık boş bir senaryoya adım ekleyebilirsiniz.

Adım 2: İlk adım olarak giriş isteğini ekleyin

İlk Test Adımını ekleyin. Apidog'da istek eklemek için şunları kullanabilirsiniz:

  • Mevcut uç nokta spesifikasyonunu içe aktarma,
  • Kaydedilmiş bir uç nokta durumunu içe aktarma,
  • Özel istek oluşturma,
  • cURL komutundan istek oluşturma.

Hızlı başlangıç için özel bir POST isteği ekleyin:

POST https://api.your-store.com/v1/login
Content-Type: application/json

{
  "email": "dana@example.com",
  "password": "correct-horse-battery-staple"
}
Enter fullscreen mode Exit fullscreen mode

Önce bu adımı tek başına çalıştırarak yanıtı doğrulayın. Başarılı bir giriş örneği:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "userId": "usr_10482"
}
Enter fullscreen mode Exit fullscreen mode

Beklenen HTTP durum kodu 200 olmalıdır.

Adım 3: Orkestrasyon moduna geçin

Herhangi bir adıma tıklayarak orkestrasyon moduna girin.

  • Sol panel senaryonun genel akışını gösterir.
  • Sağ panel seçili adımın yapılandırmasını gösterir.
  • Adımları yeniden sıralamak için simgesini sürükleyebilirsiniz.

Koşullu dalı bu görünümden ekleyip düzenleyeceksiniz.

Adım 4: Koşullu dallanmayı ekleyin

  1. Adım Ekle düğmesine tıklayın.
  2. Menüden Koşullu Dallanma seçeneğini seçin.
  3. Koşul olarak giriş isteğinin durum kodunu kullanın.
  4. Operatörü Eşittir olarak seçin.
  5. Beklenen değer olarak 200 girin.

Mantık şu şekilde olmalıdır:

Giriş yanıt durumu Eşittir 200
Enter fullscreen mode Exit fullscreen mode

Koşullu dallanma için kullanılabilecek operatörler şunlardır:

  • Eşittir
  • Eşit Değildir
  • Mevcuttur
  • Mevcut Değildir
  • Küçüktür
  • Küçük veya Eşittir
  • Büyüktür
  • Büyük veya Eşittir
  • Regex ile Eşleşir
  • İçerir
  • İçermez
  • Boştur
  • Boş Değildir
  • Listede Var
  • Listede Yok

Adım 5: Koşulda önceki yanıtı kullanın

Giriş isteğinin sonucunu koşul alanına aktarmanın iki yolu vardır.

Yöntem 1: Ön-adım verilerini al

Bu yöntem ek yapılandırma gerektirmez.

  1. Koşulun değer alanına tıklayın.
  2. Sihirli değnek simgesini seçin.
  3. Ön-adım verilerini al seçeneğine tıklayın.
  4. Giriş adımını seçin.
  5. Yanıt durumunu koşula bağlayın.

Arka planda Apidog şu yapıda bir ön-adım referansı kullanır:

{{$.<adım kimliği>.response.body.<alan yolu>}}
Enter fullscreen mode Exit fullscreen mode

Örneğin giriş yanıtındaki token alanını almak için:

{{$.1.response.body.token}}
Enter fullscreen mode Exit fullscreen mode

Buradaki 1, giriş adımının kimliğidir.

Ön-adım verilerini alma örneği

Bu yöntemle ilgili iki önemli nokta vardır:

  • Ön-adım verilerini al yalnızca Testler modülünde çalışır.
  • Değer yalnızca tüm senaryo çalıştırıldığında çözülür.

Tek bir adımı tek başına çalıştırdığınızda ön-adım referansının boş görünmesi normaldir.

Yöntem 2: Çıkarılmış değişken kullanın

Aynı değeri farklı modüllerde veya birden çok dalda kullanmanız gerekiyorsa değişken çıkarın.

  1. Giriş isteğinin post-işlemcilerini açın.
  2. Değişken Çıkar eylemini ekleyin.
  3. JSONPath ifadesiyle değeri seçin:
$.token
Enter fullscreen mode Exit fullscreen mode
  1. Değişkene örneğin token adını verin.
  2. Sonraki adımlarda değişkeni kullanın:
{{token}}
Enter fullscreen mode Exit fullscreen mode

Adımlar arasında veri taşıma hakkında daha fazla bilgi için test adımları arasında veri nasıl geçirilir rehberini inceleyin.

Bu senaryoda durum kodunu kontrol etmek için Ön-adım verilerini al en kısa yöntemdir.

Adım 6: Else dalını ekleyin

If bloğunun üzerine gelin ve + Else seçeneğine tıklayın.

Ardından iki yolu yapılandırın:

  • If bloğu: Ödeme isteğini Test Adımı olarak ekleyin. Bu istek yalnızca giriş isteği 200 döndürdüğünde çalışmalıdır.
  • Else bloğu: Hatanın görünür olacağı bir adım ekleyin. Bu adım bir loglama/bildirim uç noktasına istek gönderebilir veya her zaman başarısız olan bir doğrulama içerebilir.

Ödeme isteği giriş belirtecine ihtiyaç duyuyorsa {{token}} değişkenini veya doğrudan ön-adım referansını kullanın:

POST https://api.your-store.com/v1/payments
Authorization: Bearer {{token}}
Content-Type: application/json
Enter fullscreen mode Exit fullscreen mode

Bu, kimliği doğrulanmış API çağrılarında kullanılan yaygın taşıyıcı belirteç modelidir; benzer kullanım için Stripe API belgelerine bakabilirsiniz.

Tam akış artık şöyledir:

Eğer giriş durumu 200 ise:
  Ödeme isteğini çalıştır
Aksi halde:
  Hatayı raporla ve ödeme adımını çalıştırma
Enter fullscreen mode Exit fullscreen mode

Adım 7: Senaryoyu kaydedip çalıştırın

Tümünü Kaydet düğmesine tıklayın.

Kaydedilmemiş değişiklikler nokta göstergesiyle işaretlenir. Ardından tüm senaryoyu çalıştırın:

  • Geçerli kimlik bilgileriyle If bloğu çalışmalıdır.
  • Geçersiz kimlik bilgileriyle Else bloğu çalışmalıdır.
  • Ödeme isteği başarısız girişten sonra çalışmamalıdır.

Varyasyonlar ve gelişmiş akış kontrolü

Temel dal çalıştıktan sonra aynı yapı taşlarını farklı API test senaryolarında kullanabilirsiniz.

Yanıt gövdesindeki alana göre dallanma

Her zaman durum koduna göre karar vermeniz gerekmez. Örneğin API, kilitli hesaplar için bile 200 dönüyor ancak gerçek durumu status alanında iletiyor olabilir.

Bu durumda aşağıdaki değeri kullanın:

{{$.1.response.body.status}}
Enter fullscreen mode Exit fullscreen mode

Ardından şu tür koşullar oluşturabilirsiniz:

status Eşittir "active"
Enter fullscreen mode Exit fullscreen mode

veya:

message İçerir "account locked"
Enter fullscreen mode Exit fullscreen mode

Sayısal ve liste tabanlı kontroller de mümkündür:

balance Büyüktür 0
role Listede Var ["admin", "editor"]
Enter fullscreen mode Exit fullscreen mode

Dallanmayı döngülerle birleştirme

Koşullu dallanma ve döngüler birlikte kullanılabilir.

Örneğin ürün kimlikleri üzerinde çalışan bir ForEach döngüsünde, stokta olmayan ürünleri atlamak için koşullu dal ekleyebilirsiniz.

Döngü indeksi referansı:

{{$.<döngü adım kimliği>.index}}
Enter fullscreen mode Exit fullscreen mode

ForEach içindeki mevcut öğe referansı:

{{$.<döngü adım kimliği>.element.<alan yolu>}}
Enter fullscreen mode Exit fullscreen mode

Döngüler hakkında ayrıntılı uygulama için ForEach döngüsü öğreticisini inceleyin.

Koşullu dallanma ve döngü örneği

Break If ile döngüyü erken durdurma

Eğer Koşul Doğruysa Durdur (Break If condition) öğesi, belirli bir koşul karşılandığında döngüyü sonlandırır.

Bu yaklaşımı şu durumlarda kullanabilirsiniz:

  • Aranan kayıt bulunduğunda,
  • Hata eşiğine ulaşıldığında,
  • Sayfalı veri akışında son sayfaya gelindiğinde.

Öğeyi sürükleyerek yeniden konumlandırabilir ve aynı döngüye birden fazla kez ekleyebilirsiniz.

On Error ile döngü hatalarını yönetme

Döngülerin başlangıcında sabit konumda bulunan Hata Durumunda (On Error) öğesi, döngü içindeki bir isteğin hata vermesi durumunda ne yapılacağını belirler.

Seçenekler:

Seçenek Davranış
Yoksay Sonraki istekle devam eder.
Devam Et Mevcut iterasyondaki kalan istekleri atlar.
Yürütmeyi Durdur Döngüyü durdurur, döngü sonrasındaki adımlara devam eder.
Yürütmeyi Sonlandır Tüm senaryoyu durdurur.

Adımlar arasına bekleme ekleme

Bazı servisler yazma işleminden sonra veriyi hemen görünür hâle getirmeyebilir. Bu durumda Bekle (Wait) öğesiyle milisaniye cinsinden gecikme ekleyebilirsiniz.

Tipik kullanım:

Kaynak oluştur
→ 500 ms bekle
→ Kaynağı GET isteğiyle doğrula
Enter fullscreen mode Exit fullscreen mode

Betik içinde değer kullanma

Koşul oluşturucudaki operatörler yetersiz kaldığında, değeri ön-işlemci veya son-işlemci betiğinde hesaplayabilirsiniz.

Betiklerde doğrudan şu sözdizimini kullanamazsınız:

{{değişken}}
Enter fullscreen mode Exit fullscreen mode

Bunun yerine pm.variables.get() kullanın:

const token = pm.variables.get("$.2.response.body.token");
Enter fullscreen mode Exit fullscreen mode

İstekler arası veri aktarımı için istek zincirleme ve API testi orkestrasyonu ve veri geçirme yazılarını inceleyin.

Bir test senaryosu kendisini referans alamaz. Bu koruma, iç içe senaryolarda oluşabilecek sonsuz döngüleri engeller.

Apidog CLI ile senaryoyu CI'da çalıştırma

Oluşturduğunuz senaryoyu yalnızca Apidog arayüzünde çalıştırmak zorunda değilsiniz. Apidog CLI ile kaydedilmiş senaryoları başsız modda çalıştırabilir ve CI işlem hattınıza ekleyebilirsiniz.

Önce CLI'ı kurun ve erişim belirteciyle giriş yapın:

npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
Enter fullscreen mode Exit fullscreen mode

Ardından senaryoyu kimliği ve ortam kimliğiyle çalıştırın:

apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

Parametreler:

  • -t: Test senaryosu kimliği
  • -e: Ortam kimliği
  • -r: Raporlayıcı

Kullanılabilecek raporlayıcı örnekleri:

# Konsol çıktısı
-r cli

# HTML raporu
-r html

# JUnit raporu
-r junit

# Birden fazla raporlayıcı
-r html,cli
Enter fullscreen mode Exit fullscreen mode

CLI çalıştırması da uygulamadaki akışla aynı şekilde dallanır:

  1. Giriş yanıtı okunur.
  2. If veya Else yolu seçilir.
  3. Sonuç çıkış koduna yansıtılır.
  4. Başarısız giriş CI yapısını başarısız hâle getirebilir.

Kurulum için Apidog CLI kurulum kılavuzuna, GitHub Actions entegrasyonu için Apidog CLI GitHub Actions kılavuzuna bakın. Senaryoları zamanlayarak çalıştırmak için Apidog'da API testlerini nasıl planlayacağınızı inceleyin.

Sıkça Sorulan Sorular

Koşullu Dallanma ile döngü arasındaki fark nedir?

Koşullu Dallanma, bir adım bloğunun koşula bağlı olarak bir kez çalışıp çalışmayacağını belirler. Döngü ise bir bloğu tekrar tekrar çalıştırır.

  • Giriş başarılıysa ödeme isteğine devam etmek için dallanma kullanın.
  • Bir dizi veya sayım üzerinde istek tekrarlamak için For ya da ForEach kullanın.

Yineleme örnekleri için ForEach döngüsü öğreticisine bakın.

Ön-adım verilerini al referansı neden boş dönüyor?

İki yaygın neden vardır:

  1. Bu özellik yalnızca Testler modülünde çalışır, API'ler modülünde çalışmaz.
  2. Değer yalnızca tüm test senaryosu çalıştırıldığında çözülür.

Tek bir adımı tek başına çalıştırırsanız, referansın kullanabileceği önceki adım verisi yoktur.

Durum kodu yerine yanıt gövdesindeki alana göre dallanabilir miyim?

Evet. Örneğin:

{{$.1.response.body.status}}
Enter fullscreen mode Exit fullscreen mode

referansını kullanabilir, ardından Eşittir, İçerir veya Listede Var gibi bir operatör seçebilirsiniz. Adımlar arası veri aktarımı için test adımları arasında veri nasıl geçirilir rehberini inceleyin.

Bir değişkeni koşul oluşturucusu yerine betikte nasıl kullanırım?

Betikler {{değişken}} sözdizimini desteklemez. Bunun yerine:

pm.variables.get("$.2.response.body.token");
Enter fullscreen mode Exit fullscreen mode

kullanın.

Koşullu dallanma ek ücret veya kendi kendine barındırılan sürüm gerektirir mi?

Apidog belgelerinde akış kontrolü, koşullu dallanma, döngüler veya veri aktarımı için plan kısıtlaması ya da bulut/kendi kendine barındırılan ayrımı belirtilmemektedir. Senaryo oluşturabiliyorsanız, senaryoya dal ekleyebilirsiniz.

Sonuç

Doğrusal testler bir şeylerin başarısız olduğunu gösterir. Koşullu test akışları ise hatanın nerede oluştuğunu gösterir ve başarısız olacağı belli olan sonraki istekleri çalıştırmaz.

Uygulamak için:

  1. Koşullu Dallanma adımı ekleyin.
  2. Önceki yanıtı Ön-adım verilerini al veya çıkarılmış değişken ile koşula bağlayın.
  3. Başarılı yolu If bloğuna ekleyin.
  4. Hata yolunu + Else bloğuna ekleyin.
  5. Aynı senaryoyu apidog run ile CI ortamında çalıştırın.

Apidog'u ücretsiz deneyin ve doğrusal API testlerinizi gerçek API davranışına göre karar veren senaryolara dönüştürün.

Top comments (0)