utilizzando SoapUI con Selenium per il test dei servizi Web

⚡ Riepilogo intelligente

SoapUI con Selenium consente a una suite di controllare un servizio web e il browser che lo utilizza. Groovy è il ponte, perché SoapUI corre Groovy nativo e Groovy raggiunge ogni Java libreria Selenium navi.

  • 🔘 Due strumenti, due livelli: SoapUI esercita l'endpoint SOAP o REST, mentre Selenium WebDriver gestisce il browser che lo richiama.
  • ☑️ Groovy è la colla: SoapUI supporta Groovy ampiamente e Groovy trasporta l'intero Java set di librerie, quindi Selenium Il codice viene eseguito senza modifiche.
  • ✅ Categoria corridore: SoapUITestCaseRunner apre un file di progetto, seleziona una suite di test e un caso di test e lo esegue da Java.
  • 🧪 Dati dinamici: La funzione setProjectProperties() passa valori come città e codice postale in fase di esecuzione anziché da un file di proprietà statico.
  • ️ Prerequisiti: Migliori Groovy SDK, un JDK, Selenium and SoapUI Tutto deve essere installato prima del primo avvio.
  • 📊 Percorso delle prove: Ogni azione viene scritta nel file soapui.log presente nella cartella bin della directory di installazione.

utilizzando SoapUI con Selenium per il test dei servizi web tramite Groovy

SoapUI è il più popolare open source test funzionali strumento per Test dell'API. Fornisce completo copertura di prova e supporta tutti i protocolli e le tecnologie standard.

Cos'è il SAPONE?

SOAP è un semplice protocollo basato su XML. Consente alle applicazioni di scambiare informazioni tramite HTTP. Utilizza i servizi Web. DescriptLinguaggio WSDL per la comunicazione e altre applicazioni possono interagire con servizi web attraverso quell'interfaccia WSDL.

Servizi web SOAP vs REST in SoapUI

SoapUI Inizialmente nato come client SOAP, e il suo nome lo indica ancora, testa anche gli endpoint REST. Sapere a quale stile si sta puntando determina come viene costruito il test.

Aspetto SOAP REST
Contract Un file WSDL descrive ogni operazione, quindi SoapUI può generare richieste automaticamente. Solitamente una definizione OpenAPI o Swagger, oppure nessuna definizione formaletract affatto.
Formato del messaggio Solo busta XML. Generalmente si utilizza il formato JSON, sebbene siano ammessi anche XML e altri formati.
Trasporti Nella maggior parte dei casi si utilizza HTTP, ma SOAP è indipendente dal protocollo di trasporto. HTTP, con il metodo e URL portando l'intento.
Affermazioni in SoapUI XPath e XQuery vengono confrontati con l'envelope della risposta. Le asserzioni JSONPath e script corrispondono al payload.
Utilizzo tipico Settore bancario, telecomunicazioni e altri settoritracIntegrazioni aziendali complesse. Servizi pubblici e rivolti ai dispositivi mobili in cui il carico utile rimane leggero.

La procedura guidata seguente utilizza un servizio meteo SOAP, ma la stessa classe runner esegue un caso di test REST senza alcuna modifica al Java codice.

Cos'è SOAPUI?

sapone SOAPUI è uno strumento open source multipiattaforma per il test di servizi web. L'edizione SOAPUI-Pro offre funzionalità aggiuntive per le aziende che gestiscono servizi web critici. I servizi web svolgono un ruolo significativo nelle applicazioni internet.

⚠️ Nota sul nome del prodotto: SmartBear è fuori produzione SoapUI Pro come prodotto autonomo e lo ha unito, insieme a LoadUI Pro e ServiceV Pro, in ReadyAPI. L'edizione gratuita mantiene la SoapUI nome ed è ancora rilasciato attivamente. I passaggi seguenti funzionano in entrambi i casi, ed esistente SoapUI progetti aperti in ReadyAPI.

Cosa è Selenium?

Selenium Non si tratta di un singolo programma, bensì di una famiglia di strumenti per utilizzare un browser nel modo in cui lo farebbe una persona. Due elementi sono particolarmente importanti in questo contesto:

  • Selenium — uno strumento di test che automatizza i browser su diverse piattaforme.
  • Selenium webdriver — effettua chiamate dirette ai browser, sfruttando il supporto nativo di ciascun browser per l'automazione.

Perché combinare SoapUI and Selenium in un test

Il controllo del servizio e il controllo dello schermo sono solitamente due operazioni separate gestite da due suite separate, motivo per cui un difetto nella giunzione tra di esse tende a persistere in entrambe. Eseguendole contemporaneamente si colma questa lacuna.

  • Dimostra il viaggio di andata e ritorno. Una prenotazione inviata tramite browser dovrebbe apparire nella risposta del servizio. Solo un test combinato può verificare entrambe le parti.
  • Imposta rapidamente lo stato. Creare un cliente tramite API richiede un secondo; crearne uno compilando un modulo con dodici campi richiede un minuto e fallisce più spesso.
  • Individuare la causa del guasto. Quando l'interfaccia utente mostra un totale errato, l'asserzione API eseguita nella stessa sessione indica immediatamente se il problema risiede nel servizio o nella pagina.
  • Riutilizzare un set di dati. Le coppie codice postale e città nell'esempio seguente alimentano la chiamata al servizio e potrebbero ugualmente alimentare le asserzioni del browser.
  • Elimina le coperture assicurative duplicate. Le regole di validazione già collaudate a livello di servizio non necessitano ciascuna di un test lento del browser.

Il compromesso è un test più impegnativo: due strumenti, due insiemi di dipendenze e un'esecuzione più lunga. Riserva i test combinati per la manciata di percorsi che effettivamente oltrepassano il confine e lascia il resto come puro API o controlli tramite browser puro.

Selenium con SoapUI

Il modo più semplice e facile per integrare Selenium con SoapUI è quello di utilizzare Groovy, quale SoapUI supporta ampiamente.

Groovy è un linguaggio di scripting orientato agli oggetti che include tutti gli elementi Java biblioteche, quindi ogni Java parola chiave e funzione possono essere utilizzate in un Groovy script direttamente. Viene eseguito sulla JVM (Java Macchina virtuale), che è ciò che permette una Groovy entrare SoapUI e Java Selenium test per condividere le stesse classi.

Prerequisiti per l'utilizzo Selenium con SoapUI

Installa i seguenti componenti prima di scrivere qualsiasi codice:

⚠️ Nota sulla versione: Groovy 5.0 è la versione stabile corrente e richiede JDK 11 o versioni successive, quindi installa prima il JDK e lascia che Groovy la versione segue. Selenium viene aggiunto a un Java progetto come Maven o Gradle dipendenza piuttosto che come cartella scaricata e il SoapUI Il file jar deve trovarsi nello stesso classpath del test: è proprio in quel punto che la maggior parte dei primi tentativi fallisce.

Chiama il SoapUI Testcase runner in Selenium

Il codice seguente chiama un SoapUI caso di test. Imposta le proprietà per una città e il suo codice postale corrispondente e, quando viene eseguito, recupera il valore di ogni città e codice postale, quindi segnala il conteggio degli errori per ogni coppia che non corrisponde. Questo codice viene eseguito in Selenium.

Nota: In questo caso, al posto di un file di proprietà statico, viene utilizzato il flag usePropertyFileFlag=true per memorizzare il codice postale e la città. Il codice postale e la città vengono passati dinamicamente in fase di esecuzione dal metodo setProjectProperties().

Istruzioni per eseguire il codice:

  1. Avviare SoapUI.
  2. Avvia un nuovo caso di test.
  3. Aggiungere un nuovo Groovy passo.
  4. Copia e incolla il codice di esempio nel passaggio.
  5. Fare clic su Riproduci.
  6. Puoi vedere Firefox avvio e navigazione verso GoogleDopodiché, puoi vedere il SoapUI voci di registro.
  7. Il codice viene eseguito utilizzando JUnit.

Code Esempio

@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 Nota: questo snippet è riprodotto esattamente come pubblicato ed è un frammento piuttosto che una classe compilabile. Prima che venga compilato è necessario dichiarare l'iteratore ottenuto da set.iteratore(), corretta mentre (iteratore,haSuccessivo)) a mentre (iteratore.hasNext()) and entry.getkey() a entry.getKey(), mettere in maiuscolo l'annotazione come @Quando, rimuovere il carattere superfluo all'inizio del testo del passaggio e utilizzare Corda anziché stringa nella dichiarazione Set. Il testo originale viene mantenuto in modo che l'esempio pubblicato rimanga intatto.

La vista della console consente di dare un'occhiata a tutti i caso di provas eseguito. Troverai un elenco dei codici postali e delle città recuperati e passati in SoapUI Caso di test 1.

Visualizzare SoapUI File di registro

I file di registro registrano ogni azione che si verifica in un sistema operativo o in un'applicazione software. Per visualizzare il SoapUI file di registro, vai alla directory principale, dove vedrai un file chiamato soapui.log.

SoapUI Elenco della directory di installazione con il file soapui.log visibile

In SoapUI, il file di registro si trova nella cartella bin all'interno della directory di installazione, ad esempio C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. In un'installazione corrente la cartella della versione è diversa e un ReadyAPI L'installazione scrive i dati nella propria cartella bin.

cartella cestino del SoapUI directory di installazione in cui viene memorizzato il file di registro

Quando apri questo file di registro facendo clic su di esso, sarà simile allo screenshot seguente.

Contenuto del file soapui.log che mostra le voci registrate durante l'esecuzione del test.

Dove SoapUI and Selenium L'integrazione si interrompe comunemente

Quasi tutti i guasti a questo punto sono dovuti a problemi di cablaggio piuttosto che a problemi di test. Questi sono gli elementi da controllare per primi.

Sintomo Causa probabile Cosa controllare
NoClassDefFoundError o ClassNotFoundException su SoapUITestCaseRunner Migliori SoapUI Il file jar non è presente nel classpath di test. Aggiungere il SoapUI dipendenza dal file di build, oppure puntare il classpath al jar nel SoapUI cartella lib. Un jar mancante appare come un normale Selenium eccezione nella consolle.
Impossibile trovare il file di progetto La funzione setProjectFile() risolve un percorso relativo rispetto alla directory di lavoro, che può variare tra un IDE e uno strumento di compilazione. Eseguire il comando dalla directory principale del progetto oppure specificare un percorso assoluto.
Suite di test o caso di test non trovato I nomi in setTestSuite() e setTestCase() devono corrispondere esattamente al progetto. Copia i nomi direttamente dal SoapUI albero del progetto; fanno distinzione tra maiuscole e minuscole.
La proprietà non raggiunge mai la richiesta setProjectProperties() è stato eseguito dopo run() oppure la richiesta non fa riferimento alla proprietà. Imposta ogni proprietà prima di eseguire la funzione run() e utilizza la sintassi del segnaposto per le proprietà all'interno della richiesta.
Il browser non si avvia Il driver e il browser installato hanno versioni principali diverse. lasciare Selenium Il gestore risolve il driver o abbina il driver alla build del browser.
Una funzionalità funziona nell'IDE ma non nell'ambiente di esecuzione. Questo passaggio si basa su una funzionalità disponibile solo nella versione Pro, come ad esempio un'origine dati. Conferma la licenza oppure ricrea il passaggio utilizzando equivalenti open-source.

Una volta che il runner termina correttamente e soapui.log mostra le voci previste, l'integrazione funziona e può essere ripiegata in un'integrazione più ampia test di automazione on.

DOMANDE FREQUENTI

L'edizione open-source funziona Groovy passaggi ed espone il test case runner, quindi l'integrazione stessa non necessita di licenza. Pro o ReadyAPI Funzionalità come le origini dati e la procedura guidata basata sui dati sono le parti che non funzioneranno senza di essa.

Sì, ed è l'immagine speculare di questa guida. A Groovy Il passaggio può istanziare direttamente un WebDriver, a condizione che Selenium i barattoli vengono messi nel SoapUI cartella lib in modo che lo script possa risolverli.

SoapUI esegue Groovy nativamente in una fase di script, senza ciclo di compilazione e Groovy raggiunge ogni Java classe già presente nel classpath. Semplice Java necessita di una fase di compilazione, motivo per cui Groovy vittorie per codice di integrazione breve.

Avvolgilo come un JUnit or TestNG testa e lascia che Maven o Gradle invocarlo, esattamente come fa l'esempio. Sull'agente il browser deve essere eseguito senza interfaccia grafica e il SoapUI Il file di progetto deve essere incluso nel commit insieme al codice di test.

Gli assistenti sono utili per estendere un piccolo insieme di coppie città-codice postale a una copertura più ampia e per individuare i campi di risposta non modificati dalle asserzioni. I valori generati necessitano comunque di una verifica reale, perché un codice postale plausibile non è necessariamente valido.

Entro certi limiti. Il copilota gestisce Groovy sintassi e comune Java chiama bene, ma ha poca conoscenza del SoapUI oggetti di scripting come testRunner, context e log, quindi questi suggerimenti necessitano di un'attenta revisione.

Memorizzali come variabili d'ambiente o in un gestore di segreti e leggili nelle proprietà del progetto in fase di esecuzione, lo stesso meccanismo utilizzato qui da setProjectProperties(). Un file di progetto sottoposto a commit con una password in chiaro è una potenziale falla di sicurezza.

Mantieni i controlli a livello di protocollo — stato, schema, XPath sull'involucro — all'interno SoapUI, dove gli strumenti vengono costruiti per loro. Affermare nel Selenium verifica solo ciò che il browser stesso deve mostrare, quindi un errore indica un livello specifico.

Riassumi questo post con: