Pagina Principale/SoapUI

Page last edited 1 867 giorni 5 ore fa
Da wiki.betaingegneria.it.

soapUI[modifica]

SoapUI è un ambiente per test funzionali per SOA (Simple Object Access) e per testare web services. Con la sua semplice interfaccia grafica e le funzionalità di classe enterprise, soapUI permette di creare facilmente e rapidamente ed eseguire test funzionali automatici, regressione e prove di carico. In un unico ambiente di test, soapUI fornisce una copertura completa di test - da SOAP e servizi REST basati su Web, a strati di messaggistica JMS enterprise, database, applicazioni Rich Internet, e molto altro ancora.

Si può usare soapUI per costruire messaggi SOAP da includere nei messaggi HTTP di Mirth. Oppure si può usare per invocare i listener costruiti con Mirth (per testare i webservice).

Come installare SoapUI[modifica]

Come prima cosa installare un interprete Java: io ho installato la SunJDK e anche OpenJDK. Senza la prima non posso fare funzionare Mirth; senza la seconda non parte soapUI. Poi la cosa più comoda è scaricare il binario da [1]. Si scompatta lo zip e si esegue lo script di installazione.

Poi si lancia.

Come lanciare SoapUI[modifica]

  marcob@jsbach:/opt/eviware/soapUI-4.0.0/bin$ ./sopaui.sh [INVIO]

In questa nuova release di Ubuntu l'ho installato da un'altra parte: lanciare:

  marcob@jsbach:~/Scaricati/soapui-4.5.0/bin/soapui.sh [INVIO]

Posizione delle applicazioni soapUI per l'invio dei certificati INPS:

  /home/marcob/Documenti/clienti/ulss16/2012/webservices/studio/certificati-inps-soapui-project.xml

Ottenere un template SOAP dichiarando il WDSL[modifica]

  • Tasto desto sul progetto (esempio certificati_inps) > Add WDSL
  • Scrivere nel dialog l'URL del servizio
 es: https://mirservicetest.sanita.finanze.it/TrasmissioneCertificatiWeb/services/RettificaCertificato
  • soapUI crea un test case, per visualizzare il formato della request:
 certificati_inps > RettificaCertificatoBinding > rettificaCertificato > Request 1
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://interrogazionelavoratorerequest.xsd.cert.mirsac.sanita.finanze.it">
  <soapenv:Header/>
  <soapenv:Body>
     <int:InterrogazioneLavoratore>
        <int:pincodeMedico>?</int:pincodeMedico>
        <int:codiceFiscale>?</int:codiceFiscale>
     </int:InterrogazioneLavoratore>
  </soapenv:Body>
 </soapenv:Envelope> 

Copia / incolla questo frammento dentro a Mirth

 Channels > InterrogaLavoratore > Destinations > Chiama WS INPS > Request Variables >  $payload (nel value)

Ottenere un XML di risposta da una invocazione[modifica]

Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

Tasto destro sopra interrogazioneLavoratore per creare una nuova Request (se serve).

In basso scegliere la Scheda Aut (vedi figura seguente)

Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

Inserire Username, Password e dominio come in figura. Il servizio che si invocherà è in alto sulla barra https... ecc. Se non è corretto, cliccando sulla freccetta compare in elenco [edit current]: modificare a dovere.

Poi cliccare sul pulsantino verde a sinistra in alto, si ottiene la response:

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header/>
  <soapenv:Body>
     <p600:RicevutaLavoratore xmlns:p600="http://interrogazionelavoratoreresponse.xsd.cert.mirsac.sanita.finanze.it">
        <p600:ricevutaNonOk>
           <p706:errore xmlns:p706="http://tipicert.xsd.cert.mirsac.sanita.finanze.it">
              <p706:tipoErrore>111</p706:tipoErrore>
              <p706:sezioneErrata>S111</p706:sezioneErrata>
              <p706:descrizione>Pincode assente o errato</p706:descrizione>
           </p706:errore>
        </p600:ricevutaNonOk>
     </p600:RicevutaLavoratore>
  </soapenv:Body>
 </soapenv:Envelope>

Come creare una nuova batteria di test[modifica]

E' una funzionalità che aiuta nei test dei webservices. Nel mio caso la cosa è parecchio complicata: il webservice di Mirth non è accessibile direttamente ma è dietro un Proxy e protetto da password.

Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

Creare un nuovo progetto[modifica]

Come prima cosa creo un nuovo progetto SOAP ConvenzionatiReverseProxy2, in cui l'indirizzo è

  https://extranet.sanita.padova.it/convest

username=ou_test_mirth001, password=t3st2012 (questi vanno inseriti nella maschera di autenticazione da precompilare)

Dichiaro poi il WSDL immettendo questo indirizzo

  https://extranet.sanita.padova.it/convest?wsdl

Se tento di chiamare il web service esso risponde, ma l'url che vedo non è quello del proxy ma quello di Mirth diretto (controprova: se metto Wireshark in ascolto sulla porta ethernet e catturo i pacchetti destinati al proxy non catturo nulla).

Ho bisogno di vedere che succede da locale a proxy!!!

Creare una nuova TestSuite[modifica]

Allora aggiungo una TestSuite.

Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

Come si vede, all'inizio è la TestSuite è vuota; una TestSuite è un inseme di casi di test (TestCase):

Aggiungere un nuovo TestCase[modifica]

In questo caso è un Web TestCase:

Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

Nel campo Web Address scrivo l'endpoint corrispondente al mio reverse proxy http://extranet.sanita.padova.it/convest

Un TestCase è a sua volta strutturato in operazioni semplici (step): all'interno della TestCase aggiungo un nuovo step:

Aggiungere uno step al TestCase[modifica]
Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

In corrispondenza al campo Endpoint ripeto l'indirizzo del proxy: http://extranet.sanita.padova.it/convest

L'ultimo passaggio è la personalizzazione della chiamata dell'end point che per funzionare deve essere fatta in modalità POST e nella cui intestazione deve essere presente il campo SOAPAction con valore "" (stringa vuota); questo scopo si raggiunge editando il servizio come mostrato qui di seguito (nota il Method e l'Header, entrambi nel lato sinistro della schermata):

Errore nella creazione della miniatura: Impossibile salvare la miniatura nella destinazione

Si noti, nel lato sinistro della figura, la presenza del controllo Headers... che permette di aggiungere la direttiva SOAPAction e, sulla sua sinistra, del controllo Authentication... (purtroppo nello screen shot si vede solo A... in ogni caso se si clicca lì compaiono i controlli per immettere username e password)