Azure Pipelines'ta Otomatik API Testleri Adım Adım Nasıl Çalıştırılır

Azure Pipelines'ta otomatik API testlerini adım adım çalıştırın: Apidog'da senaryolar tasarlayın, onları Apidog CLI ile tetikleyin ve regresyonlarda derlemeyi başarısız yapın.

Ashley Innocent

Ashley Innocent

15 June 2026

Azure Pipelines'ta Otomatik API Testleri Adım Adım Nasıl Çalıştırılır

enterprise.banner.title

enterprise.banner.feature1

enterprise.banner.feature2

enterprise.banner.feature3

enterprise.banner.ctaB

API'niz dizüstü bilgisayarınızda çalışıyor. Yerel test istemcinizdeki her kontrolü geçiyor. Sonra bir ekip arkadaşı bir dalı birleştiriyor, dağıtım yapılıyor ve eskiden 200 dönen bir uç nokta üretimde 500 dönmeye başlıyor. Kimse bunu fark etmedi, çünkü kimse o dalda testleri çalıştırmadı. Onları bir makinede, bir kez, elle çalıştırdılar.

"Testler mevcut" ile "her değişiklikte testler çalışıyor" arasındaki bu boşluk, bir CI hattının kapattığı şeydir. Kodunuz zaten Azure Repos veya GitHub'da yaşıyorsa ve ekibiniz Azure DevOps üzerinde geliştirme yapıyorsa, Azure Pipelines bu güvenlik ağını kurmak için doğal bir yerdir. Zor kısım nadiren YAML'dır. API test paketinizi, doğru ortamda, yeni dağıtılmış bir yapıya karşı, başsız bir şekilde çalıştırabilecek ve bir şeyler bozulduğunda yapıyı yüksek sesle başarısız edebilecek bir formata sokmaktır.

düğme

Kısaca

"Azure Pipelines'da otomatik API testi" aslında ne anlama geliyor

Azure Pipelines, Azure DevOps içindeki CI/CD hizmetidir. Deponuzda bulunan bir YAML dosyasında (azure-pipelines.yml) bir derlemeyi tanımlarsınız ve Azure, bir tetikleyici her çalıştığında (bir push, bir pull request, bir zamanlama veya manuel bir çalıştırma) bu dosyayı barındırılan veya kendi barındırdığı bir aracı üzerinde çalıştırır.

Azure Pipelines'da Otomatik API Testi

API testi için işin şekli basittir:

  1. Bir aracı (temiz bir VM) başlatın.
  2. Test çalıştırıcınızın ihtiyaç duyduğu her şeyi kurun.
  3. Hedef bir ortama karşı API testlerini çalıştırın.
  4. Sonuçları raporlayın ve bunlara göre derleme durumunu ayarlayın.

İnsanların takıldığı detay 3. adımdır. Yerel bir API istemcisi etkileşimlidir; "Gönder"e tıklarsınız, yanıtı gözlemlersiniz, yeşil bir onay işareti okursunuz. Bir pipeline'ın tıklayacak veya gözlemleyecek kimsesi yoktur. Aynı iddiaları bir insan ve bir GUI olmadan çalıştırmanın bir yoluna ihtiyacınız var. Komut satırı çalıştırıcının var olmasının tüm nedeni budur.

Buradaki CI kavramları hakkında daha geniş bir başlangıç isterseniz, ilk pipeline'ınızı kurmadan önce sürekli entegrasyon, sürekli teslimat ve sürekli dağıtım arasındaki farkı hızlıca okumakta fayda var.

Neden Apidog'da testler tasarlamalı ve CLI ile çalıştırmalı

API testlerini ham kodla yazabilirsiniz. Bir dil seçin, bir HTTP kütüphanesi ve bir iddia çerçevesi kullanın, istek gövdelerini elle oluşturun, yanıtları ayrıştırın, kimlik doğrulama belirteçlerini yönetin ve tüm bunları her sprint'te değişen bir API ile senkronize tutun. Ekipler bunu yapıyor. Ayrıca bakımına orantısız miktarda zaman harcıyorlar.

Apidog farklı bir yol izler. Test senaryolarını görsel olarak oluşturursunuz: istekleri zincirleyin, bir yanıttaki verileri bir sonraki isteğe geçirin, durum kodları, başlıklar ve JSON alanları üzerinde iddialar ekleyin ve aynı senaryoyu birden çok veri satırıyla çalıştırın. Apidog zaten API tanımlarınızı barındırdığı için testler spesifikasyona yakın kalır. Şema değiştiğinde, sapmayı üretimde keşfetmek yerine görürsünüz.

Apidog Test Senaryosu Oluşturma

Bu görsel çalışmayı CI'a bağlayan parça, npm üzerinde yayınlanan bir komut satırı çalıştırıcısı olan Apidog CLI'dır. Kayıtlı bir test senaryosunu başsız olarak yürütür ve sonucu yansıtan bir durum koduyla çıkar: her şey başarılı olursa 0, herhangi bir iddia başarısız olursa sıfır olmayan bir kod. Bu çıkış kodu, her CI sisteminin anladığı sözleşmedir. Azure Pipelines bunu okur ve derlemenin yeşil mi yoksa kırmızı mı olduğuna karar verir. GUI'de bir kez tasarlarsınız ve aynı senaryo pipeline'da değişmeden çalışır.

Apidog CLI ile Test Akışı

Bu, GitHub Actions, GitLab CI ve Jenkins için de çalışan aynı modeldir. Azure Pipelines, aynı CLI komutu için sadece başka bir barındırıcıdır; bu da ekibiniz platformları değiştirdiğinde bilginin aktarılacağı anlamına gelir.

Ön Koşullar

Hangi hedefe karşı test yapılacağına dair kısa bir not. Her commit'te paketi üretim ortamına karşı çalıştırmak risklidir ve genellikle imkansızdır (üretimde test verisi istemezsiniz). Çoğu ekip CI testlerini bir hazırlık ortamına (staging environment) veya dala özel bir önizleme dağıtımına yönlendirir. Apidog ortamları bunu temiz hale getirir: kendi temel URL'sine ve değişkenlerine sahip bir Staging ortamı tutun ve çalışma zamanında CLI'ye hangisini kullanacağını söyleyin.

Adım 1: Test senaryonuzu çalıştırılabilir bir forma sokun

CLI'nin hangi senaryoyu çalıştıracağını bilmesi gerekir. Apidog size bunu yapmanın iki yolunu sunar.

A Seçeneği: paylaşılan bir çevrimiçi bağlantıdan çalıştırın. Apidog'da test senaryonuzu açın, CLI aracılığıyla çalıştırmayı seçin ve Apidog, senaryoyu ağ üzerinden gösteren bir komut oluşturur. Bu, daha az bakım gerektiren seçenektir: pipeline her zaman senaryonun güncel sürümünü çalıştırır ve test dosyalarını depoya commit etmezsiniz. Dezavantajı ise, pipeline'ın çalışma zamanında bu bağlantının erişilebilir olmasına bağlı olmasıdır.

B Seçeneği: senaryoyu bir dosyaya dışa aktarın ve commit edin. Senaryoyu (ve ortamını) yerel bir dosyaya dışa aktarın, kodunuzla birlikte commit edin ve CLI'yi dosya yoluna yönlendirin. Bu, testi belirli bir commit'e bağlar; yeniden üretilebilirlik sizin için önemliyse istediğiniz budur; çalışan testler tam olarak o commit'teki testlerdir. Dezavantajı ise, senaryo değiştiğinde yeniden dışa aktarmanız gerekmesidir.

Yeni başlayan çoğu ekip için A Seçeneği daha hızlı kurulur. Düzenlenmiş veya denetim ağırlıklı işler için B Seçeneği'nin yeniden üretilebilirliği kazanır. Hızlı değişen özellik dalları için bağlantı tabanlı, yayın dalları için dosya tabanlı olarak karıştırabilirsiniz.

Her iki durumda da, Apidog'un size verdiği tam çalıştırma komutunu not alın. Şuna benzer olacaktır:

apidog run https://api.apidog.com/api/v1/test-scenarios/<scenario-id> \
 -t <access-token> \
 -e <environment-id>

En çok güveneceğiniz bayraklar:

Apidog'un senaryonuz için oluşturduğu çalıştırma komutuna karşı tam bayrak adlarını doğrulayın; çalıştırıcı, apidog run --help ile kullanımı yazdırır. Bayrakları tahmin etmeyin; Apidog'un size verdiklerini kopyalayın ve gizli anahtarları parametreleştirin.

Adım 2: Önce CLI'nin yerel olarak çalıştığını doğrulayın

Yeni bir aracı asla CI içinde hata ayıklamayın. Pipeline geri bildirim döngüleri yavaştır ve loglar terminalinizden daha gürültülüdür. Önce kendi makinenizde başarılı bir çalıştırma elde edin.

CLI'yi yükleyin:

npm install -g apidog-cli

Ardından senaryonuzu çalıştırın:

apidog run https://api.apidog.com/api/v1/test-scenarios/<scenario-id> \
 -t "$APIDOG_ACCESS_TOKEN" \
 -e "<staging-environment-id>"

Üç şeyi kontrol ediyorsunuz:

  1. Komut tamamlanır ve bir geçme/kalma özeti yazdırır.
  2. Çıkış kodu sonuçla eşleşir. Hemen ardından echo $? komutunu çalıştırın; başarı durumunda 0, başarısızlık durumunda sıfır olmayan bir değer olmalıdır.
  3. Ortam doğru çözüldü; istekleriniz kalan yerel bir URL'ye değil, hazırlık ortamınızın (staging) URL'sine ulaştı.

Bu çıkış kodu kontrolü göründüğünden daha önemlidir. Bir iddia başarısız olsa bile CLI 0 ile çıkarsa, pipeline'ınız bozuk kodda yeşile döner, ki bu hiç test yapmamaktan daha kötüdür. Bir kez bir hatayı zorlayın (bir iddiayı kasıtlı olarak bozun) ve sıfır olmayan bir kod aldığınızı doğrulayın. Ardından iddiayı geri koyun.

Adım 3: Azure Pipelines YAML'sini oluşturun

Deponuzun köküne azure-pipelines.yml adında bir dosya ekleyin. Barındırılan bir Ubuntu aracısı için eksiksiz, çalışan bir başlangıç noktası:

trigger:
 branches:
 include:
 - main
 - develop

pr:
 branches:
 include:
 - main

pool:
 vmImage: ubuntu-latest

variables:
 NODE_VERSION: '20.x'

steps:
 - task: NodeTool@0
 inputs:
 versionSpec: $(NODE_VERSION)
 displayName: 'Install Node.js'

 - script: npm install -g apidog-cli
 displayName: 'Install Apidog CLI'

 - script: |
 apidog run https://api.apidog.com/api/v1/test-scenarios/$(SCENARIO_ID) \
 -t $(APIDOG_ACCESS_TOKEN) \
 -e $(STAGING_ENV_ID)
 displayName: 'Run API tests'

Üzerinden geçelim:

$(...) referansları pipeline değişkenleridir. SCENARIO_ID, STAGING_ENV_ID ve özellikle APIDOG_ACCESS_TOKEN bir sonraki adımdan gelir, buraya sabit kodlanmaz.

Adım 4: Gizli anahtarları doğru şekilde saklayın

Erişim belirteciniz asla YAML'da düz metin olarak bulunmamalıdır. Depoya okuma erişimi olan herkes onu görür ve bu, Apidog projenize erişim yetkisi verir.

  1. Azure DevOps'ta pipeline'ınızı açın ve Düzenle'yi, ardından Değişkenler'i (veya paylaşılan bir değişken grubu için Kütüphane'yi) seçin.
  2. APIDOG_ACCESS_TOKEN'ı ekleyin ve belirteci yapıştırın.
  3. Kilit simgesini açıp kapatarak gizli olarak işaretleyin. Azure onu şifreler ve loglarda maskeler.

Gizli değişkenler otomatik olarak kabuk ortamına enjekte edilmez; onları adımda açıkça eşleştirirsiniz. Gizli anahtarı env aracılığıyla geçirmek için çalıştırma adımını güncelleyin:

 - script: |
 apidog run https://api.apidog.com/api/v1/test-scenarios/$(SCENARIO_ID) \
 -t $(APIDOG_ACCESS_TOKEN) \
 -e $(STAGING_ENV_ID)
 displayName: 'Run API tests'
 env:
 APIDOG_ACCESS_TOKEN: $(APIDOG_ACCESS_TOKEN)

SCENARIO_ID ve STAGING_ENV_ID gizli olmak zorunda değildir; okunabilirlik için onları düz değişkenler olarak ele alın veya pipeline'lar arasında yeniden kullandığınız bir değişken grubuna taşıyın. Çok sayıda gizli anahtarı yöneten ekipler için, rotasyonun tek bir yerde gerçekleşmesi için değişken grubunu Azure Key Vault ile destekleyin.

Adım 5: Okunabilir bir test raporu yayınlayın

Kırmızı bir derleme, bir şeylerin bozulduğunu söyler. Size neyin bozulduğunu söylemez. Çözüm, CLI'nin bir rapor yayınlamasını sağlamak ve Azure'ın bunu göstermesidir.

Apidog CLI, sonuçlarını bir rapor dosyasına yazabilir. Onu bir çıktı formatına (insanlar için HTML, Azure'ın yerel test görünümünü istiyorsanız JUnit tarzı XML) ve bir çıktı dizinine yöneltin, ardından bu dizini yayınlayın.

 - script: |
 apidog run https://api.apidog.com/api/v1/test-scenarios/$(SCENARIO_ID) \
 -t $(APIDOG_ACCESS_TOKEN) \
 -e $(STAGING_ENV_ID) \
 -r html \
 --out-dir $(Build.ArtifactStagingDirectory)/api-report
 displayName: 'Run API tests'
 env:
 APIDOG_ACCESS_TOKEN: $(APIDOG_ACCESS_TOKEN)

 - task: PublishBuildArtifacts@1
 condition: always()
 inputs:
 pathToPublish: $(Build.ArtifactStagingDirectory)/api-report
 artifactName: api-test-report
 displayName: 'Publish API test report'

Dikkat edilmesi gereken iki şey var. Birincisi, condition: always() yayınlama adımının test adımı başarısız olsa bile çalışmasını sağlar; önemli olan da budur, çünkü bir şeyler bozulduğunda raporu en çok o zaman istersiniz. İkincisi, CLI sürümünüz için tam raporlayıcı bayrağını (-r, --reporter veya benzeri) ve çıktı seçeneğini apidog run --help komutuyla kontrol edin, ardından örneği buna göre ayarlayın.

Sonuçları Azure'ın yerleşik Testler sekmesinde trend grafikleriyle görmek isterseniz, CLI'nin JUnit XML çıktısı vermesini sağlayın ve XML'e işaret eden bir PublishTestResults@2 görevi ekleyin. Bu size sadece tek seferlik bir dosya değil, derlemeler arasında iddia başına geçmişi sunar.

Adım 6: Geçidi gerçek yapın

Pipeline'ı kurmak, onu uygulamakla aynı değildir. Varsayılan olarak, başarısız bir derleme, Azure DevOps'a bunu zorunlu kılmasını söylemediğiniz sürece kimsenin birleştirmesini durdurmaz.

  1. Depolar'a, ardından Dallar'a gidin, main dalını bulun ve Dal ilkelerini açın.
  2. Derleme Doğrulaması ekleyin ve pipeline'ınızı seçin.
  3. Zorunlu olarak ayarlayın.

Artık API test pipeline'ı geçene kadar bir pull request main dalına birleşemez. Çalışan testler ile koruyan testler arasındaki fark budur. Bunu açana kadar bir gösterge panonuz var; sonrasında ise bir geçidiniz.

Gerçekçi veri odaklı bir örnek

Tek atımlık senaryolar bariz kırılmaları yakalar. Gerçek API'lerin birçok girdi ile aynı uç noktanın test edilmesine ihtiyacı vardır; geçerli yükler, uç durumlar, 500 yerine 400 döndürmesi gereken yanlış biçimlendirilmiş istek.

Apidog, veri odaklı testi destekler: bir senaryoya bir CSV veya JSON veri kümesi ekleyin ve her satır için bir kez çalışır, satırın değerlerini isteklere ve iddialara yerleştirir. Örneğin, bir oturum açma senaryosu, geçerli bir kullanıcı, yanlış bir parola, kilitli bir hesap ve boş bir gövde için satırları çalıştırabilir, her biri kendi beklenen durum koduna sahip olur.

Pipeline'da komutun şeklinde hiçbir şey değişmez; aynı senaryoya karşı hala apidog run çağrısı yaparsınız. Veri kümesi senaryo ile birlikte gelir, bu nedenle tek bir CLI çağrısı her satırı kapsar. Apidog'da yeni bir uç durum eklediğinizde, bir sonraki pipeline çalıştırması hiçbir YAML düzenlemesi olmadan bunu alır. Test mantığını pipeline yerine araçta tutmanın getirisi budur: kapsamınız büyürken pipeline sıkıcı kalır.

Yaygın sorunlar ve bunları nasıl düzelteceğiniz

Temel Bilgilerin Ötesinde

Bunların her biri, aynı temele küçük birer eklemedir: temiz bir şekilde çıkan bir CLI ve çıkış koduna saygı duyan bir pipeline.

Sıkça sorulan sorular

Özet

Yeşil bir CI derlemesi, kodun derlendiği anlamına gelmekle kalmayıp, API'nizin gerçekten çalıştığı anlamına gelmelidir. Azure Pipelines'da buraya ulaşmak dört adıma indirgenir: Apidog'da gerçek test senaryoları tasarlayın, bunları Apidog CLI ile başsız olarak çalıştırın, çıkış kodunun derleme durumunu belirlemesine izin verin ve birleşme gerçekleşmeden önce derlemenin geçmesini zorunlu kılın. Bu döngü çalışmaya başladığında, her push, en dikkatli ekip arkadaşınızın vereceği aynı incelemeyi otomatik olarak, her seferinde alır.

Bunun sürdürülebilir kalmasının nedeni ayrılıktır. Test mantığı, API spesifikasyonunuza yakın ve genişletilmesi kolay olan Apidog'da yaşar. Pipeline ince bir sarmalayıcı olarak kalır; kurulum, çalıştırma, raporlama. API'niz büyüdüğünde, araca senaryolar ve veri satırları eklersiniz ve pipeline, düzenleme yapmadan tek işini yapmaya devam eder.

Kurmaya hazır mısınız? Apidog'u indirin, bir test senaryosu oluşturun, CLI çalıştırma komutunu alın ve azure-pipelines.yml dosyanıza bırakın. Bir sonraki regresyonunuz bir müşteri yerine bir makine tarafından yakalanır.

düğme

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin