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.
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:
- Avviare SoapUI.
- Avvia un nuovo caso di test.
- Aggiungere un nuovo Groovy passo.
- Copia e incolla il codice di esempio nel passaggio.
- Fare clic su Riproduci.
- Puoi vedere Firefox avvio e navigazione verso GoogleDopodiché, puoi vedere il SoapUI voci di registro.
- 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.
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.
Quando apri questo file di registro facendo clic su di esso, sarà simile allo screenshot seguente.
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.



