kullanma SoapUI 'da Selenium Web Hizmeti Testi için

⚡ Akıllı Özet

SoapUI 'da Selenium Bu yazılım paketi, bir web servisini ve onu kullanan tarayıcıyı kontrol etmeyi sağlar. Groovy köprüdür, çünkü SoapUI ishal Groovy doğal olarak ve Groovy her şeye ulaşıyor Java kütüphane Selenium gemiler.

  • 🔘 İki araç, iki katman: SoapUI SOAP veya REST uç noktasını çalıştırırken Selenium WebDriver, kendisini çağıran tarayıcıyı yönlendirir.
  • ☑️ Groovy yapıştırıcıdır: SoapUI destekler Groovy kapsamlı bir şekilde ve Groovy tümünü taşıyor Java kütüphane seti, yani Selenium Kod değişmeden çalışır.
  • Koşucu sınıfı: SoapUITestCaseRunner bir proje dosyasını açar, bir test paketi ve test senaryosu seçer ve onu çalıştırır. Java.
  • 🧪 Dinamik veriler: setProjectProperties() fonksiyonu, şehir ve posta kodu gibi değerleri statik bir özellik dosyasından almak yerine, çalışma zamanında iletir.
  • Önkoşul: MKS Groovy SDK, bir JDK, Selenium hem de SoapUI İlk çalıştırmadan önce her şeyin yüklenmesi gerekir.
  • 📊 Kanıt izi: Her işlem, kurulum dizininin bin klasöründeki soapui.log dosyasına yazılır.

kullanma SoapUI 'da Selenium web servis testleri için Groovy

SoapUI en popüler açık kaynak kodlu yazılımdır. fonksiyonel test için araç API testi. Tam sağlar test kapsamı ve tüm standart protokolleri ve teknolojileri destekler.

SABUN nedir?

SABUN HTTP, basit bir XML tabanlı protokoldür. Uygulamaların HTTP üzerinden bilgi alışverişi yapmasına olanak tanır. Web Servislerini kullanır. Descriptİletişim için WSDL (Wireless Data Line) kullanılır ve diğer uygulamalar da onunla etkileşim kurabilir. web hizmetleri WSDL arayüzü aracılığıyla.

SOAP ve REST Web Servisleri Karşılaştırması SoapUI

SoapUI Başlangıçta bir SOAP istemcisi olarak ortaya çıktı ve adı da bunu hala gösteriyor, ancak REST uç noktalarını da test ediyor. Hangi stile işaret ettiğiniz, testin nasıl oluşturulacağını belirler.

Görünüş SABUN DİNLENME
iletract WSDL dosyası her işlemi ayrıntılı olarak açıklar, bu nedenle SoapUI İstekleri otomatik olarak oluşturabilir. Genellikle bir OpenAPI veya Swagger tanımıdır ya da resmi bir tanım yoktur.tracHiç.
Mesaj biçimi Yalnızca XML zarfı. Genellikle JSON kullanılır, ancak XML ve diğer formatlar da kabul edilir.
Transfer Çoğunlukla HTTP kullanılır, ancak SOAP taşıma protokolünden bağımsızdır. HTTP, yöntemiyle ve URL Niyetini taşıyor.
İddialar SoapUI XPath ve XQuery, yanıt zarfıyla eşleşir. JSONPath ve komut dosyası doğrulamaları, veri yüküyle eşleşiyor.
Tipik kullanım Bankacılık, telekomünikasyon ve diğer sektörlertracYoğun kurumsal entegrasyonlar. Veri yükünün hafif kaldığı, kamuya açık ve mobil kullanıma yönelik hizmetler.

Aşağıdaki kılavuzda SOAP tabanlı bir hava durumu servisi kullanılıyor, ancak aynı çalıştırıcı sınıfı, herhangi bir değişiklik yapılmadan bir REST test senaryosunu da çalıştırıyor. Java kodu.

SOAPUI nedir?

SABUNUI SOAPUI, açık kaynaklı, platformlar arası bir web servis test aracıdır. SOAPUI-Pro sürümü, kritik web servisleriyle ilgilenen şirketler için ek işlevsellik sunar. Web servisleri, internet uygulamalarında önemli bir rol oynar.

⚠️ Ürün adı notu: SmartBear'in üretimi durduruldu. SoapUI başına Bağımsız bir ürün olarak tasarlanmıştı ve LoadUI Pro ve ServiceV Pro ile birlikte entegre edildi. ReadyAPIÜcretsiz sürüm şunları korur: SoapUI Adı hala geçerli ve aktif olarak yayınlanmaya devam ediyor. Aşağıdaki adımlar her ikisinde de işe yarar ve mevcut SoapUI açık projeler ReadyAPI.

Nedir? Selenium?

Selenium Bu tek bir program değil, bir kişinin tarayıcıyı kullanacağı şekilde kullanmak için tasarlanmış bir araç ailesidir. Burada iki üye önemlidir:

  • Selenium — Birçok platformda tarayıcıları otomatik hale getiren bir test aracı.
  • Selenium Web Sürücüsü — Her tarayıcının otomasyon için sunduğu yerel desteği kullanarak tarayıcılara doğrudan çağrılar yapar.

Neden Birleştirmeliyiz SoapUI hem de Selenium Tek Testte

Servis kontrolü ve ekran kontrolü genellikle iki ayrı işlem olup, iki ayrı yazılım paketi tarafından gerçekleştirilir; bu nedenle aralarındaki bağlantı noktasında oluşan bir hata her ikisinde de kalıcı olma eğilimindedir. Bunları birlikte çalıştırmak bu boşluğu kapatır.

  • Gidiş-dönüş yolculuğunu kanıtlayın. Tarayıcı üzerinden gönderilen bir rezervasyon, servis yanıtında görünmelidir. Sadece birleşik bir test, her iki bölümü de doğrulayabilir.
  • Durumu hızlıca ayarlayın. API üzerinden müşteri oluşturmak bir saniye sürerken, on iki form alanından oluşan bir form üzerinden müşteri oluşturmak bir dakika sürüyor ve daha sık başarısız oluyor.
  • Bir arızayı yerelleştirin. Kullanıcı arayüzü yanlış toplamı gösterdiğinde, aynı çalıştırmadaki API doğrulaması size hizmetin mi yoksa sayfanın mı hatalı olduğunu hemen söyler.
  • Bir veri setini tekrar kullanın. Aşağıdaki örnekte yer alan posta kodu ve şehir çiftleri, servis çağrısını beslediği gibi tarayıcı doğrulama sorgularını da besleyebilir.
  • Tekrarlanan haberleri azaltın. Servis katmanında zaten doğruluğu kanıtlanmış doğrulama kurallarının her biri için yavaş bir tarayıcı testi yapılmasına gerek yoktur.

Dezavantajı ise daha ağır bir test: iki araç, iki bağımlılık kümesi ve daha uzun bir çalışma süresi. Sınırı gerçekten aşan birkaç yolculuk için birleştirilmiş testleri kullanın ve geri kalanını saf test olarak bırakın. API veya saf tarayıcı kontrolleri.

Selenium 'da SoapUI

Entegrasyonun en basit ve en kolay yolu Selenium 'da SoapUI kullanmaktır Groovy, Hangi SoapUI kapsamlı bir şekilde destekler.

Groovy Nesne yönelimli bir betik dilidir ve tüm bileşenleri içerir. Java kütüphaneler, yani her Java Anahtar kelime ve fonksiyon bir şekilde kullanılabilir. Groovy Doğrudan betik. JVM üzerinde çalışır (Java Sanal Makine), bu da bir şeye olanak tanır. Groovy içeri adım at SoapUI ve Java Selenium Aynı sınıfları paylaşmayı test edin.

Kullanmak için önkoşullar Selenium 'da SoapUI

Kod yazmaya başlamadan önce aşağıdakileri yükleyin:

⚠️ Sürüm notu: Groovy 5.0 şu anki kararlı sürümdür ve JDK 11 veya daha üstünü gerektirir, bu nedenle önce JDK'yı kurun ve ardından işlemin tamamlanmasını bekleyin. Groovy Sürüm onu ​​takip eder. Selenium bir Java projeyi Maven olarak veya Gradle İndirilen bir klasör yerine bir bağımlılık olarak ve SoapUI JAR dosyasının test dosyanızla aynı classpath'te olması gerekiyor; ilk denemelerin çoğu bu tek noktada başarısız oluyor.

Ara SoapUI Test senaryosu çalıştırıcısında Selenium

Aşağıdaki kod bir çağrı yapar. SoapUI Bu test senaryosu, bir şehir ve ona karşılık gelen posta kodu için özellikleri ayarlar ve çalıştırıldığında her şehir ve posta kodunun değerini alır, ardından eşleşmeyen her çift için hata sayısını bildirir. Bu kod şu şekilde çalışır: Selenium.

Not: Burada, posta kodu ve şehir bilgilerini saklamak için statik bir özellik dosyası yerine `usePropertyFileFlag=true` kullanılmıştır. Posta kodu ve şehir bilgileri, `setProjectProperties()` yöntemiyle çalışma zamanında dinamik olarak iletilir.

Kodu çalıştırmak için talimatlar:

  1. Başlamak SoapUI.
  2. Yeni bir test senaryosu başlatın.
  3. Yeni Ekle Groovy adım.
  4. Örnek kodu kopyalayıp ilgili adıma yapıştırın.
  5. Oynat'a tıklayın.
  6. Görebilirsiniz Firefox başlatma ve gezinme GoogleBundan sonra görebilirsiniz. SoapUI Günlük kayıtları.
  7. Kod şu şekilde çalıştırılır: JUnit.

Code Örnek E-posta

@when("<I use the weather service to get the weather information")						
    public void i_use_the_weather_service_to_get_the_information() {
        Set<Entry<String, string>> set = zipAndCities.entrySet();
        while (iterator,hasNext)) {
            Entry<String, String> entry = iterator.next();
            String zipCode = entry.getkey();
            String city = entry.getValue();
            String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city};									
            
            try{
                SoapUITestCaseRunner soapUITestCaseRunner = new	SoapUITestCaseRunner();
                soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml");					
                soapUITestCaseRunner.setProjectProperties(prop);
                soapUITestCaseRunner.setTestSuite("TestSuite1");
                soapUITestCaseRunner.setTestCase("TestCase1");
                soapUITestCaseRunner.run();
                
            } catch (Exception e) {
                System.err.println("checking" + zipCode + " failed!");
                failureCount++;
                zipCodes.append(zipCode + " [" + city +"] ");
                e.printStackTrace();
            }finally{					
                totalCount++;
            }
}
}
}

⚠️ Code not: Bu kod parçası, yayınlandığı haliyle birebir kopyalanmıştır ve derlenebilir bir sınıf yerine bir parçadır. Derlenmeden önce, elde edilen yineleyiciyi bildirmeniz gerekir. set.iterator(), doğru (yineleyici, bir sonraki var) için (iterator.hasNext()) hem de giriş.anahtarınıal() için giriş.anahtarınıal()Açıklamayı büyük harfle yazın @Ne zamanAdım metninin başındaki gereksiz karakteri kaldırın ve şunu kullanın: dizi ziyade dizi Set bildiriminde. Orijinal metin korunarak yayınlanan örnek bozulmadan kalır.

Konsol görünümü, her şeye hızlıca göz atmanızı sağlar. test durumuÇalıştırılan işlemlerin ardından, alınan ve ilgili fonksiyona aktarılan posta kodları ve şehirlerin listesini bulacaksınız. SoapUI Test Durumu 1.

Görüntüle SoapUI Log dosyası

Günlük dosyaları, bir işletim sisteminde veya yazılım uygulamasında gerçekleşen her eylemi kaydeder. Bu günlük dosyalarını görüntülemek için... SoapUI Günlük dosyasına ulaşmak için ana dizine gidin, orada "log" adlı bir dosya göreceksiniz. soapui.log.

SoapUI soapui.log dosyasının da görülebildiği kurulum dizini listesi

In SoapUIGünlük dosyası, kurulum dizininin içindeki bin klasöründe bulunur; örneğin C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Mevcut bir kurulumda sürüm klasörü farklılık gösterir ve ReadyAPI Kurulum, dosyaları kendi bin klasörüne yazar.

bin klasörünün SoapUI Günlük dosyasının saklandığı kurulum dizini

Bu log dosyasını üzerine tıklayarak açtığınızda aşağıdaki ekran görüntüsüne benzer görünecektir.

soapui.log dosyasının içeriği, kaydedilen test çalıştırma girdilerini göstermektedir.

Dönüşümün SoapUI hem de Selenium Entegrasyon Genellikle Bozulur

Bu aşamada meydana gelen arızaların neredeyse tamamı test sorunundan ziyade kablolama sorunundan kaynaklanmaktadır. Öncelikle kontrol edilmesi gerekenler bunlardır.

Semptom Muhtemel sebep Kontrol edilecekler
NoClassDefFoundError veya ClassNotFoundException SoapUITestVakaÇalıştırıcısı MKS SoapUI JAR dosyası test sınıf yolunda bulunmuyor. Eklemek SoapUI Derleme dosyasına olan bağımlılığı belirtin veya sınıf yolunu jar dosyasına yönlendirin. SoapUI lib klasörü. Eksik bir jar dosyası sıradan bir sorun olarak ortaya çıkıyor. Selenium istisna konsolda.
Proje dosyası bulunamadı. setProjectFile() işlevi, çalışma dizinine göre göreceli bir yol belirler; bu yol, IDE ve derleme aracı arasında farklılık gösterir. Proje kök dizininden çalıştırın veya mutlak bir yol belirtin.
Test paketi veya test senaryosu bulunamadı. setTestSuite() ve setTestCase() içindeki isimler projeyle birebir aynı olmalıdır. İsimleri olduğu gibi kopyalayın. SoapUI Proje ağacı; büyük/küçük harf duyarlıdırlar.
Mülk hiçbir zaman talebi karşılamaz. setProjectProperties() fonksiyonu run() fonksiyonundan sonra çalıştırıldı veya istekte ilgili özelliğe referans verilmiyor. `run()` fonksiyonundan önce her özelliği ayarlayın ve istek içinde özellik yer tutucu sözdizimini kullanın.
Tarayıcı başlatılmıyor. Sürücü ve yüklü tarayıcı farklı ana sürümlere sahip. Let Selenium Yönetici sürücüyü çözümlüyor veya sürücüyü tarayıcı yapısıyla eşleştiriyor.
Bir özellik IDE'de çalışıyor ancak çalıştırıcıdan çalışmıyor. Bu adım, veri kaynağı gibi yalnızca Pro sürümünde bulunan bir özelliğe bağlıdır. Lisansı onaylayın veya adımı açık kaynaklı eşdeğerleriyle yeniden oluşturun.

Çalıştırıcı sorunsuz bir şekilde çıkış yaptıktan ve soapui.log beklenen girdileri gösterdikten sonra, entegrasyon çalışıyor demektir ve daha geniş bir yapıya dahil edilebilir. otomasyon testi süit.

SSS

Açık kaynak kodlu sürüm çalışır. Groovy Adımları gösterir ve test senaryosu çalıştırıcısını kullanıma sunar, bu nedenle entegrasyonun kendisi lisans gerektirmez. Pro veya ReadyAPI Veri kaynakları ve veri odaklı sihirbaz gibi özellikler, bu olmadan çalışmayacak kısımlardır.

Evet, ve bu kılavuzun tam tersi. A Groovy Bu adım, aşağıdaki koşullar sağlandığı takdirde doğrudan bir WebDriver örneği oluşturabilir. Selenium Kavanozlar şuraya yerleştirilir: SoapUI Komut dosyasının bunları çözümleyebilmesi için lib klasörü.

SoapUI infaz Groovy Derleme döngüsü olmadan, doğrudan bir komut dosyası adımında ve Groovy her şeye ulaşıyor Java Sınıf zaten classpath'te mevcut. Sade. Java Bir derleme adımına ihtiyaç duyuyor, bu yüzden Groovy Kısa entegrasyon kodu için kazançlar.

Onu şu şekilde sarın: JUnit or TestNG test et ve Maven'ı çalıştır veya Gradle Örnekte olduğu gibi aynen çağırın. Aracıda tarayıcı başsız modda çalışmalıdır ve SoapUI Proje dosyası, test koduyla birlikte commit edilmelidir.

Yardımcılar, küçük bir şehir ve posta kodu çifti kümesini daha geniş bir kapsama alanına genişletmek ve doğrulama yapılmayan yanıt alanlarını tespit etmek için kullanışlıdır. Oluşturulan değerlerin yine de gerçek bir kontrole ihtiyacı vardır, çünkü makul bir posta kodu geçerli bir posta kodu anlamına gelmez.

Bu, belirli sınırlar dahilindedir. Yardımcı pilot işlemleri yürütür. Groovy sözdizimi ve yaygın Java İyi arama yapıyor, ancak konu hakkında çok az bilgisi var. SoapUI TestRunner, context ve log gibi betik nesneleri söz konusu olduğundan, bu önerilerin yakından incelenmesi gerekiyor.

Bunları ortam değişkenleri olarak veya bir sır yöneticisinde saklayın ve çalışma zamanında proje özelliklerine okuyun; burada setProjectProperties() işlevi aynı mekanizmayı kullanır. Düz metin şifresi içeren kaydedilmiş bir proje dosyası, olası bir güvenlik açığı anlamına gelir.

Protokol düzeyindeki kontrolleri (durum, şema, zarf üzerindeki XPath) içeride tutun. SoapUIBurada, aletler onlar için üretilmiştir. İddia edin Selenium Sadece tarayıcının kendisinin göstermesi gerekenleri test edin, böylece bir hata tek bir katmanı işaret eder.

Bu yazıyı şu şekilde özetleyin: