Che cos'è il test SOA? Tutorial con esempio

Sommario:

Anonim

Che cos'è il test SOA?

Il test SOA (Service Oriented Architecture) è un test di stile architettonico SOA in cui i componenti dell'applicazione sono progettati per comunicare tramite protocolli di comunicazione tipicamente su una rete.

In questo tutorial imparerai-

  • Cos'è la SOA?
  • Cos'è il servizio?
  • Test SOA
  • Strategia per il test SOA
  • Metodi di test SOA
  • Sfide nei test SOA
  • Strumenti di test SOA
  • Casi d'uso del test SOA

Cos'è la SOA?

SOA è un metodo per integrare applicazioni e processi aziendali insieme in modo da soddisfare le esigenze aziendali.

Nell'ingegneria del software, SOA fornisce agilità e flessibilità ai processi aziendali. Le modifiche al processo o all'applicazione possono essere indirizzate a un particolare componente senza influire sull'intero sistema.

Gli sviluppatori di software in SOA sviluppano o acquistano blocchi di programmi chiamati SERVIZI.

Cos'è il servizio?

  • I servizi possono essere un'unità funzionale dell'applicazione o del 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 effettuare un pagamento, il sito di e-commerce chiama / Richiede il servizio di Payment Gateway. Dopo che il pagamento è stato effettuato su un gateway, viene inviata una risposta al sito di e-commerce)

  • I servizi sono facili da montare e facili da riconfigurare i componenti.
  • I servizi possono essere paragonati agli elementi costitutivi. Possono costruire qualsiasi applicazione necessaria. È facile aggiungerli e rimuoverli dall'applicazione o dal processo aziendale.
  • I servizi sono definiti più dalla funzione aziendale che svolgono piuttosto che come blocchi di codice.

Servizi web

I servizi Web sono componenti di applicazioni indipendenti, disponibili sul Web.

Possono essere pubblicati, trovati e possono essere utilizzati sul web. Possono comunicare tramite Internet.

  1. Il fornitore di servizi pubblica il servizio su Internet.
  2. Il client cerca un particolare servizio web dal registro del servizio web
  3. Viene restituito un URL e il WSDL per il servizio Web richiesto.

    >> Utilizzando il WSDL e l'URL, la comunicazione tra il fornitore di servizi e il richiedente avviene tramite messaggi SOAP. <<

  4. Quando un consumatore chiama un servizio Web, verrà stabilita una connessione HTTP con il provider.

    Viene creato un messaggio SOAP per istruire il provider a richiamare la logica del servizio Web richiesta.

  5. La risposta ricevuta dal provider è un messaggio SOAP che verrà incorporato nella risposta HTTP. Questa risposta HTTP è il formato dei dati comprensibile dall'applicazione consumer.

Esempio

Una home page di un sito Web e un motore di ricerca visualizza il bollettino meteorologico di tutti i giorni. Invece di codificare la sezione del bollettino meteorologico dappertutto, un servizio di bollettino meteorologico può essere acquistato da un fornitore e integrato nelle pagine.

Test SOA

SOA è costituito da varie tecnologie. Le applicazioni create utilizzando SOA hanno vari servizi che sono liberamente accoppiati.

Il test SOA dovrebbe concentrarsi su 3 livelli di sistema

Livello dei servizi

Questo livello è costituito dai servizi, servizi esposti da un sistema derivato dalle funzioni aziendali.

Per esempio -

Considera un sito web sul benessere che consiste in

  1. Tracker del peso
  2. Tracker di zucchero nel sangue
  3. Tracker della pressione sanguigna

I tracker visualizzano i rispettivi dati e la data in cui sono stati inseriti. Il livello dei servizi è costituito dai servizi che ottengono i rispettivi dati dal database-

  • Servizio Weight Tracker
  • Servizio di monitoraggio della glicemia
  • Servizio di monitoraggio della pressione sanguigna
  • Servizio di accesso

Livello di elaborazione

Process Layer è costituito dai processi, raccolta di servizi che fanno parte di un'unica funzionalità.

I processi potrebbero essere una 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 sarà nelle interfacce utente e nel processo.

L'interfaccia utente del rilevatore di peso e la sua integrazione con il database è l'obiettivo principale.

Saranno prese in considerazione le seguenti funzioni

  1. Aggiunta di nuovi dati
  2. Modifica dei dati esistenti
  3. Creazione di un nuovo tracker
  4. Eliminazione dei dati

Livello consumatore

Questo livello comprende principalmente interfacce utente.

In base al livello, il test di un'applicazione SOA è distribuito su tre livelli.

  1. Livello di servizio
  2. Livello di interfaccia
  3. Livello End to End
  • L'approccio Top Down viene utilizzato per la progettazione dei test.
  • L'approccio dal basso verso l'alto viene utilizzato per l'esecuzione del test.

Strategia per il test SOA

Approccio alla pianificazione del test,

  • L'architettura completa dell'applicazione dovrebbe essere compresa dai tester SOA.
  • L'applicazione deve essere suddivisa in servizi indipendenti (Servizio, che ha una 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 di business dovrebbero essere selezionati.
  • Gli scenari aziendali devono essere classificati come scenari comuni e scenari specifici dell'applicazione.
  • È necessario preparare una matrice di tracciabilità e tutti i casi di test dovrebbero essere ricondotti a scenari aziendali.

Approccio all'esecuzione del test

  • Ogni componente del servizio dovrebbe essere testato.
  • È necessario eseguire il test di integrazione dei componenti del servizio per convalidare il flusso di dati attraverso i servizi e l'integrità dei dati.
  • È necessario eseguire il test di sistema del modello completo per convalidare il flusso di dati tra l'applicazione front-end e il database.
  • Il test delle prestazioni dovrebbe essere eseguito per una regolazione fine e prestazioni ottimali.

Metodi di test SOA

1) Test basati su dati basati su scenari aziendali,

  • Devono essere analizzati vari aspetti aziendali relativi al sistema.
  • Gli scenari dovrebbero essere sviluppati sulla base dell'integrazione di
    • Vari servizi Web dell'applicazione
    • Servizi Web e applicazioni.
  • L'impostazione dei dati dovrebbe essere effettuata sulla base degli 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.
  • Vari input possono essere forniti tramite queste interfacce 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

  • Il test di regressione sull'applicazione dovrebbe essere eseguito 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

Il test funzionale dovrebbe essere eseguito su ogni servizio a

  • Assicurati che il servizio offra la risposta giusta a ogni richiesta.
  • Vengono ricevuti errori corretti per richieste con dati non validi, dati errati, ecc.
  • Verificare ogni richiesta e risposta per ogni singola operazione che il servizio deve eseguire in tempo di esecuzione.
  • Convalidare i messaggi di errore quando si verifica un errore a livello di server, client o rete.
  • Convalida che le risposte ricevute siano nel formato corretto.
  • Convalida 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; questo garantisce la sicurezza dell'applicazione.

I seguenti fattori devono essere coperti durante il test:

  • 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 firme digitali sui documenti
  • Autenticazione e autorizzazione
  • SQL Injection, Malware, XSS, CSRF e altre vulnerabilità devono essere testate su XML.
  • Attacchi Denial of Service

7) Test delle prestazioni

È necessario eseguire il test delle prestazioni del servizio poiché i servizi sono riutilizzabili e più applicazioni potrebbero utilizzare lo stesso servizio.

Durante il test vengono considerati i seguenti fattori:

  • 8) Le prestazioni e la funzionalità del servizio devono essere testate sotto carico pesante.
  • Le prestazioni del servizio devono essere confrontate mentre si lavora individualmente e all'interno dell'applicazione, è accoppiato.
  • Deve essere eseguito un test di carico del servizio
    • per verificare il tempo di risposta
    • per verificare la presenza di colli di bottiglia
    • per verificare l'utilizzo di CPU e memoria
    • per prevedere la scalabilità

9) Test del livello di integrazione

  • Il test del livello di servizio garantisce il corretto funzionamento dei soli servizi singolarmente, non garantisce il funzionamento dei componenti accoppiati.
  • Il test di integrazione viene eseguito concentrandosi principalmente sulle interfacce.
  • Questa fase copre tutti i possibili scenari di business.
  • 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.

10) Test end to end

Questa fase garantisce che l'applicazione sia conforme ai requisiti aziendali sia dal punto di vista funzionale che non funzionale.

Gli elementi seguenti sono garantiti per essere testati durante il test end to end

  • Tutti i servizi funzionano come previsto dopo l'integrazione
  • La gestione delle eccezioni
  • Interfaccia utente dell'applicazione
  • Flusso di dati corretto attraverso tutti i componenti
  • Processo di business

Sfide nei test SOA

  • Mancanza di interfacce per i servizi
  • Il processo di test si estende su più sistemi creando così complesse esigenze di dati
  • L'applicazione è una raccolta 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 quindi complicata la pianificazione dei test delle prestazioni.
  • SOA è una raccolta di tecnologie eterogenee. Il test di un'applicazione SOA richiede persone con diversi set di competenze che a loro volta aumentano i costi di pianificazione ed esecuzione.
  • Poiché l'applicazione è un'integrazione di più servizi, i test di sicurezza hanno la propria parte di guai. 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 popolari strumenti di test SOA :

1) SOAP UI

"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 richiamati.
  • Può essere utilizzato anche per test di carico, test di automazione e test di sicurezza
  • Gli stub possono essere creati da MockServices
  • Le richieste ei test del servizio Web possono essere generati automaticamente tramite il client del servizio Web.
  • Disporre di strumenti di reporting integrati
  • Sviluppato da SmartBear

2) iTKO 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) HP Service Test

"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 delle prestazioni dei servizi possono essere eseguiti da un singolo script.
  • Integrato con HP QC.
  • È possibile gestire l'enorme quantità di servizi e dati.
  • Supporta i test di interoperabilità simulando gli ambienti client JEE, AXIS e DotNet.
  • Sviluppato da HP.

4) Parasoft SOA Test

SOA Test è una suite di strumenti di test e analisi sviluppata per testare API e applicazioni API.

  • Supporta le tecnologie Web Services, REST, JSON, MQ, JMS, TIBCO, HTTP, XML.
  • Sono possibili test di funzionalità, unità, integrazione, regressione, sicurezza, interoperabilità, conformità e 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 di e-commerce, che contiene le seguenti funzioni e sotto-funzioni:

Elaborazione dell'ordine

FASE 1

Nella prima fase del test SOA, ovvero Test Strategy Phase, l'applicazione è suddivisa in Servizi e funzioni aziendali.

Consideriamo di seguito i servizi nell'applicazione.

  • Crea ordine
  • Controlla lo stato del cliente
  • Modifica stato ordine
  • Controlla lo stato dell'ordine
  • Controlla l'inventario

Le funzioni aziendali sono le stesse del sito web.

Nota: il documento della strategia di test conterrebbe l'elenco del servizio e delle funzioni che devono essere testate.

FASE 2

Fase di pianificazione del test. I casi di test sono scritti per ogni livello.

  1. Livello End to End. I casi di test vengono scritti per ogni caso d'uso aziendale e flusso.

    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
    • 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.
  2. Livello di integrazione. I casi di test sono scritti per l'integrazione del database e dell'interfaccia utente.

    Di seguito sono riportati casi di test di esempio.

    • Crea un nuovo ordine con un singolo articolo. Verifica che l'ordine sia stato creato nel database.
    • Crea un nuovo ordine con un singolo articolo. Verifica che il prezzo calcolato per l'ordine sia corretto.
    • Crea un nuovo ordine con un singolo articolo. Verifica che la quantità del prodotto disponibile sia inferiore all'importo dell'ordine.
    • Verificare che lo stato dell'ordine visualizzato sull'interfaccia utente sia lo stesso di quello sul database.
    • Annulla l'ordine e verifica che lo stato dell'ordine sia modificato nel database.
    • Per il primo pagamento, verifica che i dettagli di pagamento inseriti nell'interfaccia utente siano salvati nel database.
    • Per la restituzione dei pagamenti, verificare che i dettagli del pagamento nel database siano visualizzati nell'interfaccia utente.
  3. Livello di servizio. Ogni servizio viene testato per tutte le condizioni dei dati.

Di seguito sono riportati alcuni esempi.

No. Dettagli dell'ordine Condizione dell'ordine
1 Crea ordine. Numero di articoli = 1 Quantità su ordine
2 Crea ordine. Numero di articoli> 1 Quantità su ordine
3 Crea numero ordine di articoli = 1 Quantità su ordine> Quantità su database
4 Controlla lo stato dell'ordine Stato su database = Attivo
5 Controlla lo stato dell'ordine Stato su database = Spedito
6 Controlla lo stato dell'ordine Stato nel 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, quindi il livello di integrazione e infine il test End to End.

1) Livello di servizio

Consideriamo che lo strumento Soapui è considerato per testare l'applicazione.

Il WSDL e l'URL vengono esplorati nella finestra di test di SOAP.

La richiesta per ogni servizio verrà visualizzata nella finestra di richiesta.

Modificando i dati secondo i casi di test del livello di servizio, vengono create richieste per ogni caso di test.

Caso di prova

Richiesta

Risposta attesa

Crea ordine. No. di articoli = 1Quantità su ordine

x2 2

o3251 Riuscito

Crea ordine.No. di articoli> 1Quantità su ordine

y11 y2 3

o3251 Riuscito

Crea ordine n. di articoli = 1Quantità su ordine> Quantità su db

x23 200

null Non riuscito

Controllare lo stato dell'ordineStato nel database = Attivo

o9876

Active Successful

Controllare lo stato dell'ordineStato nel database = Spedito

o9656

Spedito Riuscito

Controlla lo stato dell'ordine ID ordine = non valido

y5686

null Non riuscito

Verifica la disponibilità del prodottoQuantità del prodotto> 0

d34

34yes Successful

Verifica la disponibilità del prodottoQuantità del prodotto = 0

y34

0no Successful

Verifica la disponibilità del prodotto ID prodotto = non valido

sder

Non riuscito

2) Livello di integrazione

I casi di test a 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 correttamente.
  • Un utente apre il database e controlla se i dettagli dell'ordine sono gli stessi di quelli inseriti nel sito web.
3) Livello End to End

I flussi aziendali e i casi d'uso vengono eseguiti sull'interfaccia utente.

  • Crea un ordine con più articoli -
  • Un utente apre un sito web.
  • Va a effettuare un ordine.
  • Richiedi 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 un messaggio che dice "Ordine effettuato con successo".
  • Un tester dovrebbe convalidare che l'intero flusso venga eseguito senza distorsioni dei dati.

Conclusione:

Definendo la giusta strategia per test, risorse, strumenti e conformità per fornire un buon servizio, i test SOA possono fornire un'applicazione completamente e perfettamente testata.