Ç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.
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:
- Bir HTTP isteği,
- Koşullu dal,
- Döngü,
- Gecikme,
- Diğer bir kontrol akışı öğesi
olabilir.
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
Elseyolundaki 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ış:
- Kullanıcı giriş yapar.
- Giriş isteği
200döndürürse ödeme isteği çalışır. - 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.
- Arama çubuğunun yanındaki
+simgesine tıklayın. - Yeni bir Test Senaryosu oluşturun.
- Senaryonun bulunacağı dizini seçin.
- Öncelik değerini ayarlayın.
- 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"
}
Ö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"
}
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
-
Adım Ekledüğmesine tıklayın. - Menüden
Koşullu Dallanmaseçeneğini seçin. - Koşul olarak giriş isteğinin durum kodunu kullanın.
- Operatörü
Eşittirolarak seçin. - Beklenen değer olarak
200girin.
Mantık şu şekilde olmalıdır:
Giriş yanıt durumu Eşittir 200
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.
- Koşulun değer alanına tıklayın.
- Sihirli değnek simgesini seçin.
-
Ön-adım verilerini alseçeneğine tıklayın. - Giriş adımını seçin.
- 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>}}
Örneğin giriş yanıtındaki token alanını almak için:
{{$.1.response.body.token}}
Buradaki 1, giriş adımının kimliğidir.
Bu yöntemle ilgili iki önemli nokta vardır:
-
Ön-adım verilerini alyalnı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.
- Giriş isteğinin post-işlemcilerini açın.
-
Değişken Çıkareylemini ekleyin. - JSONPath ifadesiyle değeri seçin:
$.token
- Değişkene örneğin
tokenadını verin. - Sonraki adımlarda değişkeni kullanın:
{{token}}
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
200dö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
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
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
Ifbloğu çalışmalıdır. - Geçersiz kimlik bilgileriyle
Elsebloğ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}}
Ardından şu tür koşullar oluşturabilirsiniz:
status Eşittir "active"
veya:
message İçerir "account locked"
Sayısal ve liste tabanlı kontroller de mümkündür:
balance Büyüktür 0
role Listede Var ["admin", "editor"]
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}}
ForEach içindeki mevcut öğe referansı:
{{$.<döngü adım kimliği>.element.<alan yolu>}}
Döngüler hakkında ayrıntılı uygulama için ForEach döngüsü öğreticisini inceleyin.
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
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}}
Bunun yerine pm.variables.get() kullanın:
const token = pm.variables.get("$.2.response.body.token");
İ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>
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
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
CLI çalıştırması da uygulamadaki akışla aynı şekilde dallanır:
- Giriş yanıtı okunur.
-
IfveyaElseyolu seçilir. - Sonuç çıkış koduna yansıtılır.
- 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
Forya daForEachkullanı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:
- Bu özellik yalnızca Testler modülünde çalışır, API'ler modülünde çalışmaz.
- 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}}
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");
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:
-
Koşullu Dallanmaadımı ekleyin. - Önceki yanıtı
Ön-adım verilerini alveya çıkarılmış değişken ile koşula bağlayın. - Başarılı yolu
Ifbloğuna ekleyin. - Hata yolunu
+ Elsebloğuna ekleyin. - Aynı senaryoyu
apidog runile 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)