Cos'è il test SOA? Tutorial con esempio
Cos'è il test SOA?
SOA (Orientato ai servizi ArchiIl test è un test dello stile architettonico SOA in cui i componenti dell'applicazione sono progettati per comunicare tramite protocolli di comunicazione, in genere su una rete.
Cos'è la SOA?
La SOA è un metodo per integrare insieme applicazioni e processi aziendali in modo da soddisfare le esigenze aziendali.
Nell'ingegneria del software, la SOA fornisce agilità e flessibilità ai processi aziendali. Le modifiche al processo o all'applicazione possono essere dirette a un particolare componente senza influenzare l'intero sistema.
Gli sviluppatori di software in SOA sviluppano o acquistano blocchi di programmi chiamati SERVIZI.
Che cos'è il servizio?
- I servizi possono essere un'unità funzionale di un'applicazione o di un processo aziendale, che può essere riutilizzato o ripetuto da qualsiasi altra applicazione o processo. (Ad esempio, nell'immagine sopra, Payment Gateway è un servizio che può essere riutilizzato da qualsiasi sito di e-commerce. Ogni volta che è necessario eseguire un pagamento, il sito di e-commerce chiama/richiede il servizio Payment Gateway. Dopo aver effettuato il pagamento su un gateway, viene inviata una risposta al sito di e-commerce)
- I servizi sono facili da assemblare e i componenti sono facili da riconfigurare.
- I servizi possono essere paragonati a elementi costitutivi. Possono costruire qualsiasi applicazione necessaria. Aggiungerli e rimuoverli dall'applicazione o dal processo aziendale è semplice.
- I servizi sono definiti più dalla funzione aziendale che svolgono piuttosto che da blocchi di codice.
Servizi web
I servizi Web sono componenti applicativi indipendenti disponibili sul Web.
Possono essere pubblicati, trovati e utilizzati sul web. Possono comunicare attraverso Internet.
- Il fornitore di servizi pubblica il servizio su Internet.
- Il Cliente cerca un particolare servizio web dal Registro dei Servizi Web
- Vengono restituiti un URL e il WSDL per il servizio Web richiesto. Utilizzando il WSDL e l'URL, la comunicazione tra il fornitore del servizio e il richiedente avviene tramite messaggi SOAP.
- Quando un consumatore chiama un servizio web, verrà stabilita una connessione HTTP al provider.
Viene creato un messaggio SOAP per istruire il provider a richiamare la logica del servizio Web richiesta. - La risposta ricevuta dal provider è un messaggio SOAP che verrà incorporato nella risposta HTTP. Questa risposta HTTP è il formato dati comprensibile dall'applicazione consumer.
Esempio
La home page di un sito Web e di un motore di ricerca visualizza le previsioni del tempo ogni giorno. Invece di codificare tutta la sezione delle previsioni del tempo, è possibile acquistare un servizio di previsioni del tempo da un fornitore e integrarlo nelle pagine.
Test SOA
La SOA è composta da varie tecnologie. Le applicazioni create utilizzando SOA dispongono di vari servizi liberamente accoppiati.
I test SOA dovrebbero concentrarsi su 3 livelli di sistema
Livello servizi
Questo strato è costituito dai servizi, servizi esposti da un sistema derivato dalle funzioni aziendali.
Per esempio -
Considera un sito web sul benessere composto da
- Inseguitore del peso
- Rilevatore di zucchero nel sangue
- Inseguitore di pressione sanguigna
I tracker visualizzano i rispettivi dati e la data in cui sono stati immessi. Il livello servizi è costituito dai servizi che ottengono i rispettivi dati dal database–
- Servizio di monitoraggio del peso
- Servizio di monitoraggio della glicemia
- Servizio di monitoraggio della pressione arteriosa
- Servizio di accesso
Livello di processo
Il Process Layer è costituito dai processi, insieme di servizi che fanno parte di un'unica funzionalità.
I processi potrebbero far parte dell'interfaccia utente (ad esempio: un motore di ricerca), una parte di uno strumento ETL (per ottenere dati dal database).
L'obiettivo principale di questo livello riguarderà le interfacce utente e i processi.
L'interfaccia utente del rilevatore di peso e la sua integrazione con il database sono l'obiettivo principale.
Le seguenti funzioni saranno prese in considerazione
- Aggiunta di nuovi dati
- Modifica dei dati esistenti
- Creazione di un nuovo tracker
- Eliminazione dei dati
Livello del consumatore
Questo livello comprende principalmente le interfacce utente.
In base al livello, il test di un'applicazione SOA è distribuito in tre livelli.
- Livello di servizio
- Livello di interfaccia
- Livello dall'inizio alla fine
- L'approccio Top Down viene utilizzato per la progettazione dei test.
- Per l'esecuzione del test viene utilizzato l'approccio Bottom Up.
Strategia per il test SOA
Approccio alla pianificazione dei test,
- I tester SOA devono conoscere l'architettura completa dell'applicazione.
- L'applicazione deve essere suddivisa in servizi indipendenti (servizio, che ha la propria struttura di richiesta e risposta e non dipende da nessun altro servizio per formare la risposta).
- La struttura dell'applicazione deve essere riorganizzata in tre componenti: dati, servizi e applicazioni front-end.
- Tutti i componenti devono essere analizzati attentamente e gli scenari aziendali dovrebbero essere delineati.
- Gli scenari aziendali devono essere classificati come scenari comuni e scenari specifici dell'applicazione.
- A Matrice di tracciabilità dovrebbero essere preparati e tutti i casi di test dovrebbero essere ricondotti a scenari aziendali.
Approccio all'esecuzione del test
- Ogni componente del servizio dovrebbe essere testato.
- Test d'integrazione dei componenti del servizio dovrebbe essere fatto per convalidare il flusso di dati attraverso i servizi e l'integrità dei dati.
- Test di sistema del modello completo dovrebbe essere fatto per convalidare il flusso di dati tra l'applicazione front-end e il database.
- Test di Performance dovrebbe essere fatto per una messa a punto fine e prestazioni ottimali.
Metodi di test SOA
1) Test basati sui dati basati sullo scenario aziendale,
- Dovrebbero essere analizzati vari aspetti aziendali relativi al sistema.
- Gli scenari dovrebbero essere sviluppati sulla base dell'integrazione di
- vario Servizi Web dell'applicazione
- Servizi Web e applicazioni.
- L'impostazione dei dati deve essere eseguita in base agli scenari di cui sopra.
- L'impostazione dei dati dovrebbe essere eseguita in modo da coprire anche gli scenari end-to-end.
2) Stub
- Verranno create interfacce fittizie per testare i servizi.
- Attraverso queste interfacce possono essere forniti vari input e gli output possono essere convalidati.
- Quando un'applicazione utilizza un'interfaccia per un servizio esterno, che non è in fase di test (servizio di terze parti), è possibile creare uno stub durante il test di integrazione.
3) Test di regressione
- Test di regressione sull'applicazione dovrebbe essere effettuato quando sono presenti più rilasci in modo da garantire la stabilità e la disponibilità dei sistemi.
- Verrà creata una suite completa di test di regressione che coprirà i servizi che costituiscono una parte importante dell'applicazione.
- Questa suite di test può essere riutilizzata in più versioni del progetto.
4) Test del livello di servizio
Il test del livello di servizio include il test del componente per funzionalità, sicurezza, prestazioni e interoperabilità.
Ogni servizio deve essere prima testato in modo indipendente.
5) Test Funzionali
I test funzionali dovrebbero essere eseguiti su ciascun servizio
- Garantire che il servizio fornisca la risposta giusta a ciascuna richiesta.
- Vengono ricevuti errori corretti per richieste con dati non validi, dati errati, ecc.
- Controlla ogni richiesta e risposta per ogni singola operazione che il servizio deve eseguire in fase di esecuzione.
- Convalidare i messaggi di errore quando si verifica un errore a livello di server, client o rete.
- Verifica che le risposte ricevute siano nel formato corretto.
- Convalidare che i dati ricevuti sulla risposta corrispondano ai dati richiesti.
6) Test di sicurezza
Il test di sicurezza del servizio web è un aspetto importante durante il test del livello di servizio dell'applicazione SOA; ciò garantisce la sicurezza dell'applicazione.
Durante il test devono essere presi in considerazione i seguenti fattori:
- Lo standard di settore definito dai test WS-Security deve essere rispettato dal servizio Web.
- Le misure di sicurezza dovrebbero funzionare perfettamente.
- Crittografia dei dati e Digifirme tals sui documenti
- Autenticazione e autorizzazione
- SQL Injection, Malware, XSS, CSRF, altre vulnerabilità devono essere testate sull'XML.
- Attacchi Denial of Service
7) Test delle prestazioni
È necessario eseguire test delle prestazioni del servizio poiché i servizi sono riutilizzabili e più applicazioni potrebbero utilizzare lo stesso servizio.
Durante il test vengono presi in considerazione i seguenti fattori:
- Le prestazioni e la funzionalità del servizio devono essere testate in condizioni di carico pesante.
- Le prestazioni del servizio devono essere confrontate mentre si lavora individualmente e all'interno dell'applicazione a cui è abbinato.
- È necessario eseguire il test di carico del servizio
- per verificare i tempi di risposta
- per verificare la presenza di colli di bottiglia
- per verificare l'utilizzo della CPU e della memoria
- per prevedere la scalabilità
8) Test del livello di integrazione
- Il test del livello di servizio garantisce il corretto funzionamento solo dei servizi individualmente, non garantisce il funzionamento dei componenti accoppiati.
- I test di integrazione vengono eseguiti concentrandosi principalmente sulle interfacce.
- Questa fase copre tutti i possibili scenari aziendali.
- Il test non funzionale dell'applicazione dovrebbe essere eseguito ancora una volta in questa fase. Sicurezza, conformità e test delle prestazioni garantiscono la disponibilità e la stabilità del sistema in tutti gli aspetti.
- I protocolli di comunicazione e di rete dovrebbero essere testati per convalidare la coerenza della comunicazione dei dati tra i servizi.
9) Test end-to-end
Questa fase garantisce che l'applicazione confermi i requisiti aziendali sia dal punto di vista funzionale che non funzionale.
È garantito che gli elementi seguenti verranno testati durante i test end-to-end
- Tutti i servizi funzionano come previsto dopo l'integrazione
- La gestione delle eccezioni
- Interfaccia utente dell'applicazione
- Il corretto flusso dei dati attraversa tutti i componenti
- Processo di business
Sfide nel test SOA
- Mancanza di interfacce per i servizi
- Il processo di test si estende su più sistemi, creando così esigenze di dati complesse
- L'applicazione è un insieme di vari componenti che tende a cambiare. La necessità di test di regressione è più frequente.
- A causa dell'architettura multistrato, è difficile isolare i difetti.
- Poiché il servizio verrà utilizzato in diverse interfacce, è difficile prevedere il carico, rendendo difficoltosa la pianificazione dei test delle prestazioni.
- SOA è una raccolta di tecnologie eterogenee. Il test di un'applicazione SOA richiede persone con competenze diverse che a loro volta aumentano i costi di pianificazione ed esecuzione.
- Poiché l'applicazione è un'integrazione di più servizi, i test di sicurezza presentano la loro parte di problemi. La convalida dell'autenticazione e dell'autorizzazione è piuttosto difficile.
Strumenti di test SOA
Sul mercato sono disponibili molti strumenti di test SOA per aiutare i tester a testare le applicazioni SOA. Ecco alcuni dei più popolari Strumenti di test SOA:
1) Interfaccia utente SOAP
"SOAP UI" è uno strumento di test funzionale open source per servizi e Test API.
- Applicazione desktop
- Supporta più protocolli: SOAP, REST, HTTP, JMS, AMF, JDBC
- I servizi Web possono essere sviluppati, ispezionati e invocati.
- Può essere utilizzato anche per test di carico, Test di automazionee test di sicurezza
- Gli stub possono essere creati da MockServices
- Le richieste e i test del servizio Web possono essere generati automaticamente tramite il client del servizio Web.
- Avere strumenti di reporting integrati
- Sviluppato da SmartBear
2) KO LISA
"LISA" è una suite di prodotti che fornisce una soluzione di test funzionale per sistemi distribuiti come SOA.
- Può essere utilizzato anche per regressione, integrazione, carico e test delle prestazioni.
- Sviluppato da iTKO (CA Technologies)
- Può essere utilizzato per progettare ed eseguire test.
3) Prova di servizio HP
"Service Test" è uno strumento di test funzionale che supporta sia il test dell'interfaccia utente che quello dei servizi condivisi
- Sia il test funzionale che quello prestazionale dei servizi possono essere eseguiti da un unico script.
- Integrato con HP QC.
- È possibile gestire l'enorme quantità di servizi e dati.
- Supporta test di interoperabilità simulando ambienti client JEE, AXIS e DotNet.
- Sviluppato da HP.
4) Test SOA Parasoft
SOA Test è una suite di strumenti di test e analisi sviluppata per il test di API e applicazioni API.
- Supporta servizi Web, tecnologie REST, JSON, MQ, JMS, TIBCO, HTTP, XML.
- Sono possibili test funzionali, unitari, di integrazione, di regressione, di sicurezza, di interoperabilità, di conformità e di prestazioni.
- Gli stub possono essere creati utilizzando Parasoft Virtualize, che è intelligente rispetto all'interfaccia utente SOAP.
- Sviluppato da ParaSoft
Casi d'uso del test SOA
Considera un sito web di e-commerce, che contiene le seguenti funzioni e sottofunzioni:
Elaborazione dell'ordine
FASE 1
Nella prima fase del testing SOA, ovvero la Fase della Strategia di Test, l'applicazione viene suddivisa in Servizi e funzioni aziendali.
Consideriamo di seguito i servizi nell'applicazione.
- Crea ordine
- Controlla lo stato del cliente
- Modifica lo stato dell'ordine
- Verifica dello stato dell'ordine
- Controlla inventario
Le funzioni aziendali sono le stesse del Sito Web.
Nota: Il documento sulla strategia di test conterrebbe l'elenco dei servizi e delle funzioni che devono essere testate.
FASE 2
Fase di pianificazione dei test. I casi di test sono scritti per ciascun livello.
- Livello dall'inizio alla fine. I casi di test vengono scritti per ciascun caso d'uso e flusso aziendale. Di seguito sono riportati gli esempi di casi di test
- Crea un ordine con l'utente attivo.
- Crea un ordine con un utente inattivo.
- Crea un ordine con il prodotto disponibile con quantità dell'ordine < quantità disponibile.
- Crea un ordine con il prodotto disponibile con quantità ordine > quantità disponibile.
- Crea un ordine con più articoli
- Annulla completamente un ordine.
- Annulla parzialmente l'ordine.
- Livello di integrazione. I casi di test sono scritti per l'integrazione del database e dell'interfaccia utente. Di seguito sono riportati alcuni casi di test di esempio.
- Crea un nuovo ordine con un singolo articolo. Verificare che l'ordine sia stato creato nel database.
- Crea un nuovo ordine con un singolo articolo. Verificare che il prezzo calcolato per l'ordine sia corretto.
- Crea un nuovo ordine con un singolo articolo. Verificare che la quantità del prodotto disponibile sia inferiore all'importo dell'ordine.
- Verifica che lo stato dell'ordine visualizzato sull'interfaccia utente sia uguale a quello sul database.
- Annulla l'ordine e verifica che lo stato dell'ordine sia modificato sul database.
- Per il primo pagamento, verificare che i dettagli del pagamento immessi nell'interfaccia utente siano salvati nel database.
- Per restituire i pagamenti, verificare che i dettagli del pagamento presenti nel database siano visualizzati nell'interfaccia utente.
- Livello di servizio. Ogni servizio viene testato per tutte le condizioni dei dati.
Di seguito sono riportati alcuni esempi.
No. | Dettaglio ordine | Condizioni dell'ordine |
---|---|---|
1 | Crea ordine. N. di articoli = 1 | Quantità in ordine < Quantità nel database |
2 | Crea ordine. N. di articoli > 1 | Quantità nell'ordine < Quantità nel database. |
3 | Crea ordine N. di articoli = 1 | Quantità nell'ordine > Quantità nel database |
4 | Controlla lo stato dell'ordine | Stato sul database = Attivo |
5 | Controlla lo stato dell'ordine | Stato sul database = Spedito |
6 | Controlla lo stato dell'ordine | Stato sul database = Annullato |
7 | Controlla lo stato dell'ordine | ID ordine = non valido |
8 | Verifica la disponibilità del prodotto | Quantità di prodotto >0 |
9 | Verifica la disponibilità del prodotto | Quantità di prodotto = 0 |
10 | Verifica la disponibilità del prodotto | ID prodotto = non valido |
FASE 3 – Esecuzione del test
L'esecuzione del test utilizza un approccio dal basso verso l'alto, ovvero il test del livello di servizio viene eseguito prima, poi del livello di integrazione e infine Test end-to-end.
1) Livello di servizio
Consideriamolo Soapui lo strumento viene preso in considerazione per testare l'applicazione.
Il wsdl e l'URL vengono visualizzati nella finestra di test di SOAP.
La richiesta per ciascun servizio verrà visualizzata nella finestra di richiesta.
Modificando i dati in base ai test case del livello di servizio, vengono create richieste per ciascun test case.
Test Case | RICHIEDI | Risposta prevista |
---|---|---|
Crea ordine. N. di articoli = 1Quantità in ordine <Quantità nel DB | x2 2 | o3251 Riuscito |
Crea ordine.No. di articoli > 1Quantità nell'ordine < Quantità nel database | y1 1 y2 3 | o3251 Riuscito |
Crea ordine n. di articoli = 1Quantità nell'ordine > Quantità nel database | x23 200 | nullo Senza esito |
Controlla lo stato dell'ordineStatus sul database = Attivo | o9876 | Attivo Riuscito |
Controlla lo stato dell'ordineStatus sul database = Spedito | o9656 | Spedito Riuscito |
Controlla lo stato dell'ordineID ordine = non valido | y5686 | nullo Senza esito |
Verifica la disponibilità del prodottoQuantità di prodotto >0 | d34 | 34 SÌ Riuscito |
Verifica la disponibilità del prodottoQuantità di prodotto =0 | y34 | 0 NO Riuscito |
Verifica la disponibilità del prodottoID prodotto = non valido | sder | Senza esito |
2) Livello di integrazione
I casi di test del livello di integrazione vengono eseguiti sull'interfaccia utente e sul database.
- Crea un ordine con un singolo articolo –
- Un utente apre il sito Web.
- Va a effettuare un ordine.
- Seleziona un prodotto e una quantità validi e salva l'ordine.
- Dovrebbe essere visualizzato un messaggio che informa che l'ordine è stato effettuato con successo.
- Un utente apre il database e controlla se i dettagli dell'ordine sono gli stessi inseriti sul sito web.
3) Livello dall'inizio alla fine
I flussi aziendali e i casi d'uso vengono eseguiti sull'interfaccia utente.
- Creare un ordine con più articoli –
- Un utente apre un sito web.
- Va a effettuare un ordine.
- Richiede un prodotto valido e la quantità li aggiunge al carrello.
- Altri prodotti validi vengono aggiunti con quantità valide e l'ordine viene salvato. Il pagamento viene effettuato tramite un nuovo metodo di pagamento e l'ordine viene effettuato.
- Dovrebbe essere visualizzato il messaggio "Ordine effettuato con successo".
- Un tester dovrebbe convalidare che l'intero flusso venga eseguito senza distorsioni dei dati.
Conclusione
Delineando la giusta strategia per test, risorse, strumenti e conformità per fornire un buon servizio, il test SOA può fornire un'applicazione completamente e perfettamente testata.