Esiste un modo efficace per testare le trasformazioni XSL / le mappe BizTalk?

6

Creare test ripetibili per le mappe BizTalk è frustrante. Non riesco a trovare un modo per gestire i test come farei test unitari, perché non riesco a trovare modi per suddividerli in blocchi logici. Tendono ad essere una grande unità monolitica, e ogni cambiamento ha il potenziale per increspare la mappa e interrompere molti test unitari. Anche se potessi suddividerlo, la creazione di input per i test XML è dolorosa e soggetta a errori.

C'è un modo efficace per testarli? Mi accontenterei di consigli per testare le trasformazioni XSL in generale, ma menziono in particolare le mappe BizTalk principalmente per il motivo che quando si usa il mapper, non c'è davvero alcun modo per rompere il tuo XSLT in modelli (che immagino tu possa usa per dividere la tua logica in blocchi testabili, ma onestamente non sono mai arrivato così lontano con XSLT).

    
posta nlawalker 22.02.2012 - 04:08
fonte

3 risposte

1

Non sono un esperto di BizTalk, ma ho effettuato alcuni test unitari per XSLT. Ho trovato diversi modi per farlo.

  1. Creazione di XML che rappresentano i soliti dati.
  2. Sviluppo di uno strumento inverso (dall'output XSLT a dati XML significativi) e quindi test XSLT su una grande quantità di XML (ad esempio fatturazione mensile, messaggistica di integrazione, ecc.). Se riesci a ottenere la parte significativa dell'XML, sei nel migliore dei modi. Questo test può essere presentato a un cliente per garantire che l'XSLT sia stato realizzato correttamente.

Usiamo il modo in 1 per sviluppare XSLT e il modo in cui 2 per testare XSLT.

    
risposta data 31.10.2012 - 21:59
fonte
1

Dipende da ciò che vuoi dimostrare con i tuoi test.

Se vuoi dimostrare che la trasformazione funziona, puoi utilizzare uno o più messaggi di input, applicare la trasformazione e utilizzare la convalida sul messaggio di output.

È possibile eseguire convalide più specifiche con i controlli XPath su campi specifici. Questo tipo di test può essere utilizzato per convalidare fino all'80% del funzionamento della trasformazione.

Se vuoi testare casi d'angolo specifici (cosa succede quando un nodo non è presente, quando questo nodo è vuoto, ecc.), puoi creare messaggi di test specifici, questo ti aiuterà a raggiungere una fiducia ancora maggiore nel correttezza della trasformazione.

Penso che nella maggior parte dei casi non sia economicamente conveniente provare e testare ogni linea e ogni possibile scenario usando la trasformazione. Quindi mi concentrerei sui casi facili prima, e sui test specifici solo quando si vede un rischio, oppure è stato scoperto un difetto effettivo durante il test.

La cosa più importante è avere abbastanza messaggi di test reali come input. Cerca di raccogliere il maggior numero possibile di messaggi di input possibili dal sistema di origine e scrivi il codice di test per applicare la trasformazione su tutti questi test.

Attualmente sto costruendo una serie di trasformazioni, e le sto testando usando il nostro BizTalk Testing Framework (il nostro costruito in-house). Ho recentemente aggiunto una classe XmlAssert in grado di valutare i valori del nodo in base alle espressioni xPath. Funziona davvero bene. L'esecuzione delle mappe di BizTalk nei test di unità è abbastanza semplice.

    
risposta data 27.10.2014 - 21:39
fonte
0

Per testare XSLT mi affido a due strumenti da riga di comando: il compiacente familiare xmllint per la validità e xmlstarlet per la convalida dei dati. Quest'ultimo consente di creare script di shell per estrarre elementi di dati per il test all'interno di quello script. È possibile utilizzare XPath arbitrario e quindi testare cose come il numero di elementi in un documento di output. Quindi puoi creare una directory di test accanto al tuo XSLT che ha un documento di input di esempio insieme a uno script per produrre l'output e testarlo.

    
risposta data 02.12.2014 - 18:05
fonte

Leggi altre domande sui tag