Kısaca
Jenkins'te ReadyAPI testlerini çalıştırmak, testrunner komut satırı aracı ve SmartBear Jenkins eklentisi aracılığıyla mümkündür, ancak ReadyAPI'nin build ajanlarına yüklenmesini gerektirir ve sık sık yapılandırma sorunlarına yol açar. Apidog'un CI/CD entegrasyonu, aracı yazılım gereksinimleri ve çalışma başına lisanslama olmaksızın, basit bir npm ile yüklenen CLI aracılığıyla çalışır.
Giriş
API testlerini bir CI/CD pipeline'ına entegre etmek, bir test ekibinin yapabileceği en değerli şeylerden biridir. Kodun hazırlık veya üretim ortamına ulaşmadan önce her bir çekme isteğinde regresyonları yakalamak, kurulum çabasına değer.
ReadyAPI, Jenkins entegrasyonunu iki mekanizma aracılığıyla destekler: komut satırı testrunner aracı ve resmi SmartBear Jenkins eklentisi. Her ikisi de çalışır, ancak her biri karmaşıklık içerir. Bu kılavuz, ReadyAPI'yi Jenkins ile nasıl kuracağınızı, karşılaşacağınız yaygın sorunları ve Apidog'un daha az altyapı yüküyle aynı pipeline entegrasyonunu nasıl sağladığını kapsar.
Jenkins'te ReadyAPI Kurulumu: testrunner Yaklaşımı
testrunner, ReadyAPI'nin komut satırı yürütme motorudur. Jenkins, ReadyAPI testlerini arayüzsüz (headless) çalıştırması gerektiğinde, bir proje dosyasına işaret eden argümanlarla testrunner'ı çağırır.
Önkoşullar:
ReadyAPI, API testlerini çalıştıran her Jenkins aracısına yüklenmelidir. Bu, en büyük operasyonel gereksinimdir. Beş build aracınız varsa ve ReadyAPI testleri bunlardan herhangi birinde çalışıyorsa, beşinin de ReadyAPI yüklü olması gerekir. Bu durum şunları yaratır:
- ReadyAPI güncellemeleri sırasında bir kurulum bakım yükü.
- Bir lisanslama sorusu: her aracı kurulumu kendi lisansını gerektiriyor mu? SmartBear'ın CI/CD lisanslama politikası sözleşmeye göre değişir. Hesap ekibinizle teyit edin.
- Bulut tabanlı aracılar için artan aracı görüntü boyutu ve başlangıç süresi.
Temel testrunner komutu:
Linux/macOS üzerinde:
/path/to/ReadyAPI/testrunner.sh \
-r \
-f /path/to/results \
-s "TestSuiteName" \
-c "TestCaseName" \
/path/to/project.xml
Windows üzerinde:
C:\ReadyAPI\testrunner.bat ^
-r ^
-f C:\results ^
-s "TestSuiteName" ^
-c "TestCaseName" ^
C:\projects\project.xml
Başlıca testrunner bayrakları:
-r: JUnit uyumlu XML raporu oluştur-f <dizin>: sonuçlar için çıktı dizini-s <ad>: belirli bir test paketini çalıştır (tümünü çalıştırmak için atla)-c <ad>: belirli bir test durumunu çalıştır (tümünü çalıştırmak için atla)-e <ortam>: kullanılacak ortamı belirt-P <ad>=<değer>: proje özelliklerini geçersiz kıl
Jenkins pipeline adımı:
Bir Jenkinsfile'da:
stage('API Tests') {
steps {
sh '''
/opt/readyapi/testrunner.sh \
-r \
-f ${WORKSPACE}/test-results \
-e ${ENVIRONMENT} \
${WORKSPACE}/project.xml
'''
junit 'test-results/*.xml'
}
}
junit adımı, sonuçları Jenkins'e yayınlar, böylece hatalar build raporunda görünür.
SmartBear Jenkins Eklentisini Kullanma
SmartBear, Jenkins eklenti dizininde bulunan ReadyAPI için bir Jenkins eklentisini sürdürmektedir. Eklenti, shell komutlarını manuel olarak yazmanızı gerektirmek yerine Jenkins UI'sında bir build adımı sağlar.
Yüklemek için:
- Jenkins > Jenkins'i Yönet > Eklenti Yöneticisi'ne gidin.
- "SmartBear ReadyAPI Functional Testing" arayın.
- Yükleyin ve Jenkins'i yeniden başlatın.
Kurulumdan sonra, ReadyAPI kurulum yolunu Jenkins genel ayarlarında yapılandırır, ardından build adımları açılır menüsünden seçerek build işinize bir ReadyAPI test adımı eklersiniz.
Eklenti, argüman yapımını sizin için halleder ve sonuçları Jenkins'in test raporlamasına entegre eder. Groovy pipeline scriptlerine göre GUI yapılandırmasını tercih eden ekipler için eklenti, kurulum süresini azaltır.
Eklenti sınırlamaları: Eklenti, belirli Jenkins sürümlerine ve ReadyAPI sürümlerine bağlıdır. Eklenti güncellemeleri, hem ReadyAPI sürümlerinin hem de Jenkins sürümlerinin gerisinde kalır. En son ReadyAPI'yi kullanan ekipler, bir eklenti güncellemesini beklemeyi gerektiren uyumluluk sorunlarıyla karşılaşabilir.
Yaygın Jenkins + ReadyAPI Sorunları
Testrunner başlangıçta takılıyor. ReadyAPI bir Java/Swing uygulamasıdır. CI'da arayüzsüz olarak başlatıldığında, bazen GUI bileşenlerini başlatmaya çalışır. Bu sorunla karşılaşırsanız, DISPLAY ortam değişkenini ayarlayın veya -Djava.awt.headless=true JVM argümanlarını kullanın.
Lisans doğrulama hataları. ReadyAPI, başlangıçta lisansını doğrular. CI aracısı SmartBear'ın lisans sunucusuna ulaşamazsa (kısıtlı kurumsal ağlarda yaygındır), testler bir test hatası yerine lisans hatasıyla başarısız olur. Ya yüzen lisans sunucusu ayarlarını ya da çevrimdışı lisanslamayı yapılandırmanız gerekir.
Bellek dışı hatalar. testrunner'daki varsayılan JVM yığın ayarları muhafazakardır. Büyük test paketleri veya birçok veri dosyası içeren projeler, -Xmx ayarlarının ayarlanmasını gerektirebilir. Yığını artırmak için testrunner.sh veya testrunner.bat dosyasını düzenleyin:
-Xms128m -Xmx1024m
Proje dosyalarıyla ilgili yol sorunları. ReadyAPI projeleri, dış dosyaları (veri kaynakları, şemalar, komut dosyaları) yollar kullanarak referans alır. CI'da çalıştırıldığında, göreceli yollar yalnızca çalışma dizini doğru ayarlanmışsa çalışır. Proje dosyalarındaki mutlak yollar, proje makineler arasında taşındığında sorunlara neden olur. Yollar için proje özelliklerini kullanın ve bunları çalışma zamanında -P bayrakları aracılığıyla ayarlayın.
Testler yerel olarak geçiyor ancak CI'da başarısız oluyor. Genellikle ortam farklılıklarından kaynaklanır: dış dosyalarda farklı veriler, farklı ortam değişkeni değerleri veya sabit kodlanmış yollar. testrunner -e argümanında açık ortam seçimi ile ReadyAPI'nin Ortam özelliğini kullanın.
Apidog Jenkins Entegrasyonu: Daha Basit Bir Yaklaşım
Apidog'un CLI çalıştırıcısı npm aracılığıyla yüklenir ve build aracısında bir masaüstü uygulaması gerektirmez.
Jenkins aracısına kurulum:
npm install -g apidog-cli
Veya bir pipeline adımında:
npm ci
# apidog-cli is in devDependencies
Bir Jenkinsfile'da testleri çalıştırma:
stage('API Tests') {
steps {
sh '''
apidog run \
--collection ${WORKSPACE}/apidog-collection.json \
--environment staging \
--reporter junit \
--reporter-junit-export ${WORKSPACE}/results/report.xml
'''
junit 'results/report.xml'
}
}
ReadyAPI'den başlıca farklılıklar:
Aracılarda masaüstü uygulaması yok. Apidog CLI, hafif bir Node.js paketidir. Dakikalar değil, saniyeler içinde yükleyin. GUI başlatma sorunları yok, lisans sunucusu bağlantı gereksinimleri yok.
Çalışma başına lisanslama endişesi yok. Apidog, CI yürütmesi başına ücret almaz. Pipeline'ınızın gerektirdiği kadar günde çok sayıda test döngüsü çalıştırın.
Ortam değişkenleri veya bayraklar aracılığıyla ortam yapılandırması. Jenkins kimlik bilgileri deposundan doğrudan ortam değişkenleri olarak kimlik bilgilerini ve temel URL'leri geçirin:
withCredentials([string(credentialsId: 'api-key', variable: 'API_KEY')]) {
sh 'apidog run collection.json -e production --env-var "apiKey=${API_KEY}"'
}
GitHub Actions karşılaştırması:
GitHub Actions kullanan ekipler için de Apidog yaklaşımı aynı derecede temizdir:
- name: Run API tests
run: |
npm install -g apidog-cli
apidog run collection.json --environment staging
env:
API_BASE_URL: ${{ vars.STAGING_URL }}
API_KEY: ${{ secrets.API_KEY }}
ReadyAPI eşdeğeri, ReadyAPI yüklü kendi kendine barındırılan bir çalıştırıcıyı veya karmaşık bir Docker görüntü build'ini gerektirir. Hiçbiri bu kadar basit değildir.
CI/CD'yi ReadyAPI'den Apidog'a Geçirme
Test paketinizi taşıyorsanız ve CI/CD yapılandırmanızı aynı anda güncellemeniz gerekiyorsa:
- API tanımlarınızı ReadyAPI'den dışa aktarın ve Apidog'a aktarın.
- Apidog CLI'yı Jenkins ajanlarınıza yükleyin.
- Mevcut ReadyAPI adımının yanı sıra pipeline'ınıza bir Apidog test adımı ekleyin.
- Her ikisini de paralel olarak çalıştırın. Başarısızlık oranlarını ve test kapsamını karşılaştırın.
- Apidog'un kapsamına güvendiğinizde ReadyAPI adımını kaldırın.
- Bir sonraki ajan görüntüsü yenilemesi sırasında ReadyAPI'yi build ajanlarından kaldırın.
Sıkça Sorulan Sorular
ReadyAPI'nin testrunner'ı ayrı bir CI lisansı gerektiriyor mu? SmartBear'ın CI/CD kullanımı için lisanslama politikası sözleşmeye göre değişir. Bazı anlaşmalar standart lisans kapsamında CI/CD yürütme haklarını içerirken; diğerleri ayrı bir anlaşma gerektirir. CI çalışmalarının kapsandığını varsaymadan önce sözleşmenizi kontrol edin veya SmartBear hesap yöneticinizle iletişime geçin.
ReadyAPI testleri Docker konteynerlerinde çalıştırılabilir mi? Evet, çabayla. ReadyAPI yüklü bir Docker görüntüsü oluşturabilir ve bunu bir Jenkins aracı konteyneri olarak kullanabilirsiniz. Görüntü büyüktür (ReadyAPI bir masaüstü uygulamasıdır) ve arayüzsüz yapılandırma gerektirir. Çalışır, ancak konteynerleştirilmiş CI ortamları için oluşturulmuş araçlara kıyasla karmaşıklık ekler.
Apidog, Jenkins'te paralel test yürütmeyi destekliyor mu? Evet. Birden fazla Apidog CLI örneğini paralel Jenkins aşamalarında çalıştırabilirsiniz, her biri farklı bir koleksiyonu veya ortamı çalıştırır. Paralel yürütme, Apidog CLI aracılığıyla değil, Jenkinsfile'ınız aracılığıyla kontrol edilir.
Apidog, Jenkins için hangi test raporu formatını üretir? Apidog'un CLI'ı, Jenkins'in doğal olarak ayrıştırdığı ve test sonuçları bölümünde görüntülediği JUnit XML raporları üretebilir. Format, ReadyAPI'nin testrunner'ının ürettiğiyle aynıdır.
Apidog test scriptleri CLI çalıştırıcısıyla aynı süreçte mi çalışır? Evet. JavaScript test scriptleri, Apidog CLI'nın Node.js süreci içinde yürütülür. Yapılandırılacak ayrı bir script yürütme ortamı yoktur.
Resmi bir Apidog Jenkins eklentisi var mı? Apidog CLI, Jenkins'te özel bir eklenti gerektirmeyen bir shell adımı olarak çalışır. Bu yaklaşım, Jenkins veya Apidog yeni sürümleri yayınladığında güncellenmesi gereken eklenti tabanlı entegrasyonlardan daha kolay sürdürülebilir.
ReadyAPI'nin Jenkins entegrasyonu çalışır, ancak önemli altyapı yönetimi gerektirir. Kapsamlı API test kapsamını korurken CI/CD kurulumlarını basitleştirmek isteyen ekipler için Apidog'un CLI yaklaşımı, en yaygın sorun noktalarını ortadan kaldırır: aracı yazılım gereksinimleri, lisans sunucusu bağımlılıkları ve karmaşık ortam yapılandırması.
