180 likes | 292 Views
UN’IMPLEMENTAZIONE DELLA SUITE DI TEST AUTOMATICO DI ebXML. Relatore: Tesi di Laurea di: Chiar.mo Prof. Fabio Vitali Laura Bianchini Correlatori: Ing. Piero De Sabbata Dott. Nicola Gessa. Laura Bianchini Bologna, 7 Luglio 2004.
E N D
UN’IMPLEMENTAZIONE DELLA SUITE DI TEST AUTOMATICO DI ebXML Relatore: Tesi di Laurea di: Chiar.mo Prof. Fabio Vitali Laura Bianchini Correlatori: Ing. Piero De Sabbata Dott. Nicola Gessa Laura Bianchini Bologna, 7 Luglio 2004
Introduzione Questo progetto di tesi si occupa di sviluppare un ambiente di test per verificare la conformità di un gestore di servizi di messaggistica (MSH) rispetto alle specifiche ebXML di Message Service. L’applicazione che ho costruito per sviluppare e guidare l’esecuzione dei test è il Test Driver. Laura Bianchini 2/13 Bologna, 7 Luglio 2004
Il Progetto MODA-ML • Cos’è: MODA-ML, “Middleware tOols and Documents to enhAnce the textile/clothing supply chain through xML”, è un progetto finanziato dall’Unione Europea e promosso da ENEA, Politecnico di Milano, istituto francese d’abbigliamento (IFTH), Gruppo SOI, Domina srl e un gruppo di aziende pilota del settore Tessile/Abbigliamento. • Obiettivi: Sviluppare un linguaggio comune per lo scambio di informazioni tecnico-gestionali fra le aziende della filiera del Tessile/Abbigliamento. • Tecnologie adottate: Set di Specifiche del Framework ebXML(standard OASIS e UN/CEFACT) • Strumenti sviluppati: - Insieme di documenti XML, formalizzati tramite XML-Schema - MSH, Message Service Handler, per scambiare documenti via SMTP. Laura Bianchini 3/13 Bologna, 7 Luglio 2004
Tecnologie adottate dal progetto MODA-ML: FrameworkebXML: fornisce le basi per la progettazione di MODA-ML, consentendo alle aziende di condurre transazioni elettroniche in modo semplice, affidabile e a basso costo. Nell’insieme delle specifiche ebXML la mia attenzione è focalizzata su: • ebXML Message Service(standard OASIS, UN/CEFACT, ma anche ISO 15000, che definisce l’architettura e le regole per lo scambio di messaggi). • ebXML Test Framework(draft che definisce l’architettura di un sistema di testing e il materiale necessario alla costruzione dei test). Nella fase iniziale del mio lavoro ho collaborato con IIC, una commissione tecnica di OASIS, per la correzione di errori presenti nelle specifiche. Il mio contributo è raccolto in un errata corrige dell’IIC. Laura Bianchini 4/13 Bologna, 7 Luglio 2004
Il Messagge Service Handler di MODA-ML Il servizio di messaggistica di MODA-ML o MSH, è simile ad un qualsiasi client di posta elettronica e permette di: • Inviare e ricevere messaggi controllandone la validità rispetto allo XML Schema appropriato; • Spedire in modo del tutto automatico un messaggio di conferma (acknowledgment) di avvenuta ricezione; • Mantenere un log degli eventi che aiuti l’utente nell’identificazione di errori e malfunzionamenti; • Apporre nei messaggi firme digitali o crittografarne il contenuto; • Controllare la presenza di alcuni errori nei messaggi in input e inviare un messaggio di errore al mittente(se necessario). Il mio compito è controllare attraverso il Test Framework, se quest’ultima funzione dell’MSH si comporta seguendo le specifiche di Message Service Laura Bianchini 5/13 Bologna, 7 Luglio 2004
Architettura del mio Sistema di Test • Il Test Driver è l’applicazione stand-alone che ho costruito per creare e guidare l’esecuzione dei test. • I documenti XML creati contengono le informazioni necessarie al Test Driver per la costruzione dei test. • Il Test Report è il documento XML, generato dal Test Driver, che contiene i risultati dei test effettuati sull’MSH. • Ogni test è composto dall’invio e dalla ricezione di un messaggio. XML Document TEST DRIVER M S H Parametri di configurazione Test Report Partner 1 (emulatore) Partner 2 (MSH) Laura Bianchini 6/13 Bologna, 7 Luglio 2004
Test Requirement Test Suite Test Profile fun_req_57 fun_req_58 fun_req_59 fun_req_60 fun_req_61 Req_id-4 • fun_req_57 fun_req_59 fun_req_60 Req_id-4 I documenti XML Documenti XML necessari al Test Driver per la costruzione dei Test: • Test Profile: contiene gli identificatori dei requisiti che devono essere soddisfatti nella sessione in corso. • Test Requirement: contiene i riferimenti ai Test Case, raggruppati in sottoinsiemi corrispondenti ai requisiti da verificare. • Test Suite: è formato da una collezione di dati di configurazione e da una sequenza di Test Case. Laura Bianchini 7/13 Bologna, 7 Luglio 2004
Il Test Driver Il Test Driver guida l’esecuzione dei test, interpretando i dati di specifica dei test presenti nei documenti XML. Per ogni Test Case il Test Driver deve: • Costruire un messaggio ebXML estraendo le informazioni dal documento Test Suite • Inviare il messaggio all’MSH in esame tramite SMTP • Ricevere il messaggio di risposta tramite SMTP • Analizzare il messaggio ricevuto seguendo le indicazioni presenti nel documento Test Suite • Produrre un file di report (Test Report). Laura Bianchini 8/13 Bologna, 7 Luglio 2004
I Messaggi inviati dal Test Driver Per ogni test, il Test Driver deve inviare un messaggio all’MSH. Poiché il mio compito è analizzare il comportamento del modulo di gestione degli errori dell’MSH, il Test Driver invia messaggi volutamente non conformi alle specifiche ebXML Message Service. Le specifiche ebMS indicano che l’MSH deve essere in grado di trovare gli errori presenti nel messaggio che riceve in input e costruire, di conseguenza, un messaggio da inviare al mittente, contenente la segnalazione degli errori individuati. Il Test Driver deve controllare se il contenuto del messaggio ricevuto dall’MSH è quello descritto nel documento di Test Suite. Laura Bianchini 9/13 Bologna, 7 Luglio 2004
L’interfaccia grafica Indirizzo di posta elettronica dell’MSH che deve essere testato Impostazioni utente Indirizzo del documento Test Profile Laura Bianchini 10/13 Bologna, 7 Luglio 2004
Sistema di certificazione ebXML? L’MSH è la parte fondamentale di ogni sistema aziendale che adotta il framework ebXML e che ne utilizza il sistema di comunicazione asincrono. Esistono varie implementazioni dell’MSH, oltre a quella di MODA-ML. Sarebbe quindi interessante ed utile verificarne in modo oggettivo e automatico l’aderenza alle specifiche di Message Service. • Proposta: Questa tesi potrebbe essere la base di uno studio di fattibilità per la costruzione di un gruppo di lavoro super partes che fornisca un sistema di testing per certificare la conformità delle diverse soluzioni software. Laura Bianchini 11/13 Bologna, 7 Luglio 2004
Vantaggi del Test Framework • I Test sono modulari, automatici e ripetibili (oggettivi, poco costosi) • Il maggior risultato tangibile è stato l’adeguamento del comportamento dell’MSH di MODA-ML alle specifiche ebXML Message Service. Il modulo di gestione degli errori dell’MSH, ora si può definire conforme alle specifiche ebMS. • L’utilizzo da parte delle aziende del Tessile/Abbigliamento di Message Service Handler con certificazione ebXML facilita lo scambio di dati e informazioni tecniche e gestionali, grazie ad una comunicazione più sicura e affidabile. • Il Test Framework permette agli sviluppatori di MSH proprietari di creare applicazioni pienamente interoperabili e di ridurre i tempi di messa a punto delle collaborazioni B2B. Laura Bianchini 12/13 Bologna, 7 Luglio 2004
Sviluppi futuri • Sviluppo del Test Service, un’applicazione integrata nel sistema in esame, che interagisce con l’MSH; ha il compito di guidare l’MSH nella creazione dei messaggi di risposta da inviare al Test Driver. Scopo: funzionamento completo del Test Framework • Completamento dei documenti XML al fine di effettuare i test di conformità su tutti i moduli dell’MSH (esempio: il modulo che si occupa delle sicurezza e che apporta firma digitale e crittografia). Scopo: certificato di conformità al Framework ebXML • Creazione dei documenti XML necessari per effettuare Test di Interoperabilità attraverso l’ebXML Test Framework. Scopo: certificato di interoperabilità all’interno del Framework ebXML tra coppie di sistemi • Estensione del Test framework per certificare la conformità a specifiche sul payload (ad es. messaggi Moda-ML) Laura Bianchini 13/13 Bologna, 7 Luglio 2004
<?xml version="1.0"?> <Envelope url="http://www.moda-ml.net/moda-ml/repository/soap/modamlschema2002.xsd"> <Header> <MessageHeader mustUnderstand="1" version="1.0"> <From><PartyId>lbianchini@katamail.com</PartyId></From> <To><PartyId>null</PartyId></To> <CPAid>cpa_basic</CPAid> <ConversationId>20040701-102319-cpa_basic</ConversationId> <Service>order</Service> <Action>Dummy</Action> <MessageData> <MessageId>20040701-102320-2320</MessageId> <Timestamp>2004-01-04T17:51:23Z</Timestamp> <TimeToLive>P0Y0M1DT12H0M0S</TimeToLive> </MessageData> </MessageHeader> <Via mustUnderstand="1" version="1.0“ actor="http://schemas.xmlsoap.org/soap/actor/next" reliableMessagingMethod="ebXML"/> </Header> <Body/> </Envelope>
<MessageStore> <Message serviceInstanceId="TestService-Istance01/07/2004 10.23.56" id="01/07/2004 10.23.56" syncType="asynchronous" reportingAction="Action name that received the message on reporting service" serviceName="Test Driver"> <MessageContainer> <Envelope url="http://www.moda-ml.net/moda-ml/repository/soap/modamlschema2002.xsd"> <Header> <MessageHeader mustUnderstand="1" version="1.0"> <From><PartyId>msh_modaml@katamail.com</PartyId></From> <To><PartyId>lbianchini@katamail.com</PartyId></To> <CPAid>cpa_basic</CPAid> <ConversationId>20040701-102319-cpa_basic</ConversationId> <Service>uri:www.ebxml.org/messageServices</Service> <Action>Error</Action> <MessageData> <MessageId>20040701-102334-116@katamail.com </MessageId> <Timestamp>2004-07-01T10:23:34Z</Timestamp> <RefToMessageId>20040701-102320-2320</RefToMessageId> </MessageData> </MessageHeader> <Via mustUnderstand="1" version="1.0" actor="http://schemas.xmlsoap.org/soap/actor/next" reliableMessagingMethod="ebXML" ackRequested="true"/> <ErrorList highestSeverity="Error" mustUnderstand="1" version="1.0"> <Error codeContext="http://www.ebxml.org/messageServiceError" errorCode="TimeToLiveExpired" errorMessage="Message has expired according to Time To Live" lang="us-en" location="error location" severity="Error"/> </ErrorList> </Header> <Body/> </Envelope> </MessageContainer> </Message> </MessageStore>
<ebTest:TestCase requirementReferenceId="urn:funreq_id_57" id="urn:TestCase:id:57" description="Generate correct highestSeverity for Errorlist"> <ebTest:TestStep> <ebTest:PutMessage description="Send basic message header"> <ebTest:MessageDeclaration> <mime:Message> <mime:MessageContainer> <soap:Envelope> <soap:Header> <eb:MessageHeader> <eb:To><eb:PartyId>null</eb:PartyId></eb:To> <eb:CPAid>$cpa_basic</eb:CPAid> <eb:ConversationId>$ConversationId</eb:ConversationId> <eb:Action>Dummy-funreq-57</eb:Action> </eb:MessageHeader> </soap:Header> <soap:Body/> </soap:Envelope> </mime:MessageContainer> </mime:Message> </ebTest:MessageDeclaration> </ebTest:PutMessage> </ebTest:TestStep> <ebTest:TestStep> <ebTest:GetMessage description="Correlate returned message"> <ebTest:Filter>/MessageStore/Message/MessageContainer/Envelope/Header[MessageHeader[CPAid='cpa_basic' and ConversationId=$ConversationId] and ErrorList]</ebTest:Filter> <ebTest:TestAssertion description="Verify that ErrorList highestSeverity is Error"> <ebTest:VerifyContent> /MessageStore/Message[MessageContainer[1]/Envelope/Header/ErrorList[@highestSeverity='Error']] </ebTest:VerifyContent> </ebTest:TestAssertion> </ebTest:GetMessage> </ebTest:TestStep> </ebTest:TestCase>