DEV Community

Cover image for Harness CI/CD'de Apidog CLI API Testleri Nasıl Çalıştırılır
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Harness CI/CD'de Apidog CLI API Testleri Nasıl Çalıştırılır

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.

Apidog'u bugün deneyin

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 ve stages listesini içerir.
  • stage: Her aşama bir türe sahiptir. CI için type: CI kullanılır.
  • spec: CI altyapısını ve çalışma adımlarını tanımlar.
  • execution: Sıralı steps listesini içerir.
  • Run step: 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"
Enter fullscreen mode Exit fullscreen mode

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, Pwsh veya Python
  • 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ışı:

  1. apidog-cli paketini kurun.
  2. apidog run ile test senaryosunu çalıştırın.
  3. -r cli,junit ile JUnit raporu üretin.
  4. Harness reports bloğ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.

Apidog CLI

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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ı:

  1. Harness kullanıcı arayüzünde projenizin, organizasyonunuzun veya hesabınızın ayarlarına gidin.
  2. Secrets bölümünü açın.
  3. Yeni bir Text Secret oluşturun.
  4. Secret identifier olarak örneğin şunu kullanın:
apidog_token
Enter fullscreen mode Exit fullscreen mode

YAML içinde bu secret şu şekilde okunur:

<+secrets.getValue("apidog_token")>
Enter fullscreen mode Exit fullscreen mode

Organizasyon kapsamlı secret için:

<+secrets.getValue("org.apidog_token")>
Enter fullscreen mode Exit fullscreen mode

Hesap kapsamlı secret için:

<+secrets.getValue("account.apidog_token")>
Enter fullscreen mode Exit fullscreen mode

Kabuk komutu içinde ifadeyi tek tırnak içine alın:

--access-token '<+secrets.getValue("apidog_token")>'
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Bu blok şunu yapar:

  1. apidog-reports dizinindeki XML dosyalarını bulur.
  2. JUnit formatında ayrıştırır.
  3. Test sonuçlarını Harness arayüzünde gösterir.

Apidog komutunda junit raporlayıcısını koruduğunuzdan emin olun:

-r cli,junit
Enter fullscreen mode Exit fullscreen mode

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:

  • platform ve runtime yerine infrastructure kullanılır.
  • Her Run adımı bir container image içinde çalışır.
  • Bu nedenle connectorRef ve image belirtmeniz 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
Enter fullscreen mode Exit fullscreen mode

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:
Enter fullscreen mode Exit fullscreen mode

kullanır ya da:

infrastructure:
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Harness içinde veri dosyası kullanmak için iki seçenek vardır:

  1. Depoyu klonlayıp veri dosyasını repo içinden kullanmak.
  2. Run adı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
Enter fullscreen mode Exit fullscreen mode

Ardından komutta dosya yolunu gösterin:

-d ./test-data/data.csv
Enter fullscreen mode Exit fullscreen mode

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.

Apidog

Tipik akış:

  1. Apidog’da test senaryosunu oluşturun.
  2. İstekleri zincirleyin.
  3. Yanıtlardan değişken çıkarın.
  4. Assertion’ları ekleyin.
  5. Senaryoyu yerel olarak doğrulayın.
  6. Aynı senaryoyu apidog run ile 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")>
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Apidog CLI komutunda da JUnit raporlayıcısını etkinleştirin:

-r cli,junit
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)