Apidog CLI testlerini Harness CI/CD’de çalıştırmak için tek bir Run adımı yeterlidir: apidog-cli kurulur, apidog run çalıştırılır ve JUnit XML çıktısı Harness’a raporlanır. Apidog erişim jetonunu Harness Secret olarak saklayın, YAML içinde <+secrets.getValue("apidog_token")> ile kullanın ve reports bloğunu apidog-reports/*.xml dosyalarına yönlendirin.
Harness CI/CD nedir?
Harness CI, Harness platformunun sürekli entegrasyon modülüdür. Kodunuzu yönetilen veya kendi kendine barındırılan derleme altyapısında oluşturur, test eder ve doğrular. Ardından dağıtım için yapıtları Harness CD’ye aktarabilirsiniz.
Harness boru hatları YAML ile tanımlanır:
-
pipeline: Boru hattı meta verilerini vestageslistesini içerir. -
stage: Her aşama bir türe sahiptir. CI içintype: CIkullanılır. -
spec: CI altyapısını ve çalışma adımlarını tanımlar. -
execution: Sıralıstepslistesini içerir. -
Runstep: Kabuk komutlarını çalıştırır.
API testleri için model basittir: CI aşamasına bir Run adımı ekleyin, Apidog CLI komutunu çalıştırın ve Harness’ın test sonucuna göre boru hattını durdurmasına izin verin.
Harness, test raporlaması için JUnit XML okur. Apidog CLI junit raporlayıcısını desteklediği için Harness içinde Testler sekmesinde başarılı/başarısız senaryoları doğrudan görebilirsiniz.
Harness CI nasıl çalışır?
Bir Harness CI YAML yapısı aşağıdaki hiyerarşiyi izler:
pipeline:
stages:
- stage:
type: CI
spec:
execution:
steps:
- step:
type: Run
spec:
shell: Sh
command: |-
echo "komutlar burada"
Bir kabuk komutu çalıştırmak için type: Run kullanılır. Run adımının spec alanında:
-
shell:Sh,Bash,PowerShell,PwshveyaPython -
command: Çalıştırılacak komutlar -
reports: Test sonuçlarını Harness’a yayınlamak için rapor tanımı
Apidog CLI için gerekli işlem akışı:
-
apidog-clipaketini kurun. -
apidog runile test senaryosunu çalıştırın. -
-r cli,junitile JUnit raporu üretin. - Harness
reportsbloğu ile XML dosyalarını okuyun.
Bir dakikada Apidog CLI
Apidog CLI, Apidog’da görsel olarak oluşturduğunuz test senaryolarını komut satırından çalıştırır. Yerel makinede, CI ortamında veya Harness gibi bir boru hattında başsız test çalıştırmak için kullanılır.
Newman ile karşılaştırma yapmak isterseniz Apidog CLI ve Newman yazısına bakabilirsiniz.
Temel kullanım:
npm install -g apidog-cli
apidog run \
--access-token <ACCESS_TOKEN> \
-t <TEST_SCENARIO_ID> \
-e <ENVIRONMENT_ID> \
-r cli,junit \
--out-dir ./apidog-reports
CI için önemli bayraklar:
| Bayrak | Amaç |
|---|---|
--access-token |
Apidog bulut çalıştırmasını doğrular. Kısa formu yoktur. |
-t |
Test senaryosu kimliğini belirtir. |
-e |
Ortam kimliğini belirtir. Gereklidir. |
-r |
Raporlayıcıları seçer. cli, html, json, junit desteklenir. |
--out-dir |
Raporların yazılacağı dizini belirler. Varsayılan: ./apidog-reports
|
Harness entegrasyonu için kritik kısım şudur:
-r cli,junit --out-dir ./apidog-reports
Bu ayar Apidog CLI’nin JUnit XML üretmesini sağlar. Harness da bu XML dosyasını okuyarak test sonuçlarını gösterir. Rapor formatları hakkında daha fazla bilgi için Apidog CLI test raporları kılavuzuna bakabilirsiniz.
Apidog erişim jetonunu Harness Secret olarak saklama
Erişim jetonunu YAML içine düz metin olarak yazmayın. Bunun yerine Harness Secret kullanın.
Uygulama adımları:
- Harness kullanıcı arayüzünde projenizin, organizasyonunuzun veya hesabınızın ayarlarına gidin.
- Secrets bölümünü açın.
- Yeni bir Text Secret oluşturun.
- Secret identifier olarak örneğin şunu kullanın:
apidog_token
YAML içinde bu secret şu şekilde okunur:
<+secrets.getValue("apidog_token")>
Organizasyon kapsamlı secret için:
<+secrets.getValue("org.apidog_token")>
Hesap kapsamlı secret için:
<+secrets.getValue("account.apidog_token")>
Kabuk komutu içinde ifadeyi tek tırnak içine alın:
--access-token '<+secrets.getValue("apidog_token")>'
Bunun nedeni, jeton içinde $ gibi kabuk tarafından yorumlanabilecek karakterlerin bulunabilmesidir. Tek tırnak, shell genişletmesini engeller.
Apidog CLI kimlik doğrulaması hakkında daha fazla bilgi için Apidog CLI kimlik doğrulama notlarına bakabilirsiniz.
Harness Cloud boru hattı
Harness Cloud, Harness tarafından yönetilen Linux derleme makinelerini kullanır. Node.js ve npm hazır geldiği için hızlı başlangıç için en pratik seçenektir.
Aşağıdaki YAML, Apidog CLI testlerini Harness Cloud üzerinde çalıştırır:
pipeline:
name: Apidog API Tests
identifier: apidog_api_tests
projectIdentifier: YOUR_PROJECT
orgIdentifier: YOUR_ORG
stages:
- stage:
name: API Tests
identifier: api_tests
type: CI
spec:
cloneCodebase: false
platform:
os: Linux
arch: Amd64
runtime:
type: Cloud
spec: {}
execution:
steps:
- step:
type: Run
name: Run Apidog CLI Tests
identifier: run_apidog_cli_tests
spec:
shell: Sh
command: |-
npm install -g apidog-cli
apidog run \
--access-token '<+secrets.getValue("apidog_token")>' \
-t 605067 \
-e 1629989 \
-n 1 \
-r cli,junit \
--out-dir ./apidog-reports
reports:
type: JUnit
spec:
paths:
- apidog-reports/*.xml
Değiştirmeniz gereken alanlar:
-
YOUR_PROJECT: Harness proje kimliğiniz -
YOUR_ORG: Harness organizasyon kimliğiniz -
apidog_token: Harness Secret identifier -
605067: Apidog test senaryosu kimliği -
1629989: Apidog ortam kimliği
cloneCodebase: false ayarı, boru hattının kaynak kod deposunu klonlamamasını sağlar. Test senaryoları Apidog bulutunda bulunduğu için çoğu API testi çalıştırmasında depoya ihtiyaç yoktur.
-n 1 tek iterasyon çalıştırır. Veri odaklı testlerde bu değeri artırabilir veya -d ile veri dosyası kullanabilirsiniz.
Test sonuçlarını Harness’a yayınlama
Harness’ın Testler sekmesini dolduran bölüm reports bloğudur:
reports:
type: JUnit
spec:
paths:
- apidog-reports/*.xml
Bu blok şunu yapar:
-
apidog-reportsdizinindeki XML dosyalarını bulur. - JUnit formatında ayrıştırır.
- Test sonuçlarını Harness arayüzünde gösterir.
Apidog komutunda junit raporlayıcısını koruduğunuzdan emin olun:
-r cli,junit
Eğer junit kaldırılırsa Apidog CLI XML dosyası üretmez. Bu durumda komut başarılı çalışsa bile Harness Testler sekmesi boş kalır.
Harness ayrıca Test Intelligence gibi özellikler sunar. Ancak bu optimizasyon daha çok dil düzeyindeki unit testler içindir. Apidog CLI ile başsız API senaryoları çalıştırırken doğru yaklaşım, Run adımı ve JUnit reports bloğu kullanmaktır.
Kendi kendine barındırılan temsilci alternatifi
API’leriniz özel ağda çalışıyorsa, VPN arkasındaysa veya özel bir çalışma zamanı gerekiyorsa Harness Cloud yerine kendi kendine barındırılan temsilci kullanabilirsiniz.
Kubernetes tabanlı temsilci kullanımında yapı değişir:
-
platformveruntimeyerineinfrastructurekullanılır. - Her
Runadımı bir container image içinde çalışır. - Bu nedenle
connectorRefveimagebelirtmeniz gerekir.
Örnek Kubernetes temsilci yapılandırması:
spec:
cloneCodebase: false
infrastructure:
type: KubernetesDirect
spec:
connectorRef: YOUR_K8S_CONNECTOR
namespace: harness-ci
execution:
steps:
- step:
type: Run
name: Run Apidog CLI Tests
identifier: run_apidog_cli_tests
spec:
connectorRef: YOUR_DOCKER_CONNECTOR
image: node:20
shell: Sh
command: |-
npm install -g apidog-cli
apidog run \
--access-token '<+secrets.getValue("apidog_token")>' \
-t 605067 \
-e 1629989 \
-r cli,junit \
--out-dir ./apidog-reports
reports:
type: JUnit
spec:
paths:
- apidog-reports/*.xml
Burada:
-
YOUR_K8S_CONNECTOR: Harness Kubernetes connector -
YOUR_DOCKER_CONNECTOR: Docker registry connector -
image: node:20: Node.js ve npm içeren container image -
namespace: harness-ci: Pod’un çalışacağı Kubernetes namespace
Aynı aşamada Harness Cloud ve temsilci altyapısını karıştırmayın. Bir CI aşaması ya:
platform:
runtime:
kullanır ya da:
infrastructure:
kullanır.
İkisini aynı aşamada birlikte kullanmayın.
Harness Cloud ve temsilci seçimi
API’lerinizin erişilebilirliğine ve derleme altyapısını kimin yönettiğine göre seçim yapın.
| Faktör | Harness Cloud | Kendi kendine barındırılan temsilci |
|---|---|---|
| Kurulum | Sıfır altyapı, npm önceden yüklü | Kümeyi veya VM'leri siz yönetirsiniz |
| Ağ erişimi | Genel uç noktalar | Özel ve dahili uç noktalar |
| Çalıştır adımı görüntü gerektirir | Hayır | Evet, Kubernetes altyapısında |
| Maliyet modeli | Derleme kredileri kullanır | Kendi işlem gücünüz |
| İçin en iyi | Bulut API'leri, hızlı başlangıç | Dahili API'ler, özel çalışma zamanları |
Genel öneri:
- API uç noktalarınız herkese açık veya Harness Cloud’dan erişilebilir durumdaysa Harness Cloud ile başlayın.
- Test ortamınız özel ağdaysa, VPN arkasındaysa veya belirli runtime bağımlılıkları gerektiriyorsa kendi temsilcinizi kullanın.
Her iki modelde de Apidog komutu neredeyse aynıdır. Değişen ana kısım Harness altyapı tanımıdır.
Veri odaklı çalıştırmalar
Parametreli API testleri için CSV veya JSON veri dosyası kullanabilirsiniz.
Apidog CLI’de veri dosyası için -d veya --iteration-data kullanılır. İterasyon sayısı -n ile belirlenir:
apidog run \
--access-token <ACCESS_TOKEN> \
-t <TEST_SCENARIO_ID> \
-e <ENVIRONMENT_ID> \
-d ./data.csv \
-n 5 \
-r cli,junit \
--out-dir ./apidog-reports
Harness içinde veri dosyası kullanmak için iki seçenek vardır:
- Depoyu klonlayıp veri dosyasını repo içinden kullanmak.
-
Runadımı içinde dosyayı başka bir kaynaktan hazırlamak veya indirmek.
Repo içindeki veri dosyasını kullanacaksanız cloneCodebase: true yapmanız gerekir:
cloneCodebase: true
Ardından komutta dosya yolunu gösterin:
-d ./test-data/data.csv
Daha fazla örnek için Apidog CLI veri odaklı test ve otomatik API testi kılavuzlarına bakabilirsiniz.
Neden önce Apidog’da test tasarlamalısınız?
Apidog CLI, Apidog projenizde zaten tanımlı olan test senaryolarını çalıştırır. Bu nedenle testleri önce Apidog’da tasarlarsınız, sonra aynı senaryoları CI/CD içinde çalıştırırsınız.
Apidog, API tasarımı, hata ayıklama, test etme, mock ve dokümantasyon için hepsi bir arada bir API platformudur. Böylece test paketinizi bir kez oluşturup farklı ortamlarda yeniden kullanabilirsiniz.
Tipik akış:
- Apidog’da test senaryosunu oluşturun.
- İstekleri zincirleyin.
- Yanıtlardan değişken çıkarın.
- Assertion’ları ekleyin.
- Senaryoyu yerel olarak doğrulayın.
- Aynı senaryoyu
apidog runile Harness’ta çalıştırın.
Apidog OpenAPI odaklı çalıştığı, dal desteği ve takım çalışma alanları sunduğu için QA mühendisleri ve backend geliştiricileri aynı test kaynağını paylaşabilir.
Daha geniş CI/CD desenleri için şu kaynaklara bakabilirsiniz:
İlk test senaryonuzu oluşturduktan sonra yukarıdaki YAML örneklerinden birini kullanarak Apidog testlerini Harness CI/CD’ye bağlayabilirsiniz.
Sıkça Sorulan Sorular
Harness CI/CD nedir?
Harness CI/CD, yazılım oluşturmak, test etmek ve dağıtmak için kullanılan bir boru hattı platformudur. Boru hatları YAML ile tanımlanır ve aşamalar ile adımlardan oluşur. CI aşaması Harness Cloud veya kendi kendine barındırılan temsilci üzerinde çalışabilir.
Harness CI nasıl çalışır?
Bir Harness boru hattı stages listesinden oluşur. Her CI aşamasında altyapı tanımı ve execution bloğu bulunur. execution içinde sıralı adımlar çalışır. Apidog CLI için genellikle tek bir Run adımı yeterlidir.
Harness’ta sırları nasıl saklar ve kullanırsınız?
Harness Secret Manager’da bir Text Secret oluşturun ve identifier değerini not edin. YAML içinde şu formatla referans verin:
<+secrets.getValue("identifier")>
Organizasyon veya hesap kapsamı için org. ya da account. öneki kullanın. Shell komutlarında secret ifadesini tek tırnak içine alın.
Harness’ta test sonuçlarını nasıl yayınlarsınız?
Run adımına JUnit reports bloğu ekleyin:
reports:
type: JUnit
spec:
paths:
- apidog-reports/*.xml
Apidog CLI komutunda da JUnit raporlayıcısını etkinleştirin:
-r cli,junit
Harness XML dosyalarını ayrıştırır ve sonuçları Testler sekmesinde gösterir.
Harness CI ücretsiz mi?
Harness, CI için ücretsiz bir katman sunar. Harness Cloud derlemeleri planınıza dahil olan derleme kredilerini kullanır. Fiyatlandırma ve kredi limitleri değişebileceği için güncel bilgiler için Harness fiyatlandırma sayfasını kontrol edin.
Depomu klonlamadan Apidog CLI testlerini çalıştırabilir miyim?
Evet. Test senaryolarınız Apidog bulutunda tutuluyorsa CI aşamasında şunu kullanabilirsiniz:
cloneCodebase: false
CLI, erişim jetonuyla kimlik doğrulaması yapar ve test senaryosu ile ortamı kimlikleri üzerinden çalıştırır. Bu durumda boru hattının kaynak kod deposunu klonlaması gerekmez.


Top comments (0)