test dei messaggi SOAP

2

Sto lavorando in Scala / Java.

Sto testando l'infrastruttura di messaggistica di una parte del mio sistema che ho realizzato diversi anni fa con CXF e Java. Più specificamente, sto riscrivendo le specifiche dello scambio di messaggi. Questo perché sto cambiando parte di esso. A quel tempo, non stavo usando TDD / BDD. Ora sto eliminando tutto con BDD. In realtà, il proprietario del sistema desidera specificamente avere la specifica di stile BDD prima che io abbia finito il progetto. Trovo anche utile in ogni caso.

I'm particularly interested in writing an end-to-end test, where I would check that the server read the message properly.

Optionally I would like to send a message and in the middle check that what is sent is conform and forward the message to the server. (Actually i think that unit testing the sending on one side and the receiving on the other side should be enough here)

Il test end to end dovrebbe essere qualcosa del tipo:

- > Client one prepara un messaggio

- > Il client invia un messaggio al server

- > Alla ricezione del messaggio sul server verifica, che il messaggio ricevuto corrisponda è previsto che sia stato inviato. In particolare, controlla che l'oggetto composito risultante costruito dal messaggio non elaborato sia corretto.

Questo, da solo, dovrebbe portare fuori diversi test unitari nel mezzo. L'altro vincolo non funzionale aiuterà anche per la questione.

Il problema qui è che il test end-to-end qui descritto in realtà comporta la scrittura di un test con codice asincrono. Ho visto cose come l'attesa o il futuro di scala per gestirlo. Tuttavia, la parte è impantanarsi, è l'osservazione di un nuovo messaggio ricevuto all'interno del server. Leggo le cose sul polling del sistema attraverso una sonda, ma non riesco ancora a capire la parte della sonda. In ogni caso, in tutto e per tutto, il problema è che il messaggio ricevuto è una variabile interna del server, ben incapsulata. Mi sto chiedendo come affrontarlo? Quali tecniche potrebbero essere raccomandate qui ??? Ci devono essere alcuni ganci esistenti per questo? Qualcuno ha qualche idea? Serializzare l'oggetto in un file di registro :), rendendo la variabile accessibile pubblicamente attraverso alcuni getter? Creare qualche oggetto traccia per l'argomento. ecc .... Apprezzerei se qualcuno potesse suggerire qualcosa.

    
posta MaatDeamon 30.07.2014 - 17:46
fonte

2 risposte

3

Consiglierei di testare separatamente il client e il server.

Test del cliente

Il client si connette a un server simulato. Quel server verifica che la richiesta del client sia ben formata in base alle specifiche XSD e alle regole di convalida aggiuntive e invia una risposta predefinita.
La risposta predefinita dal server fittizio deve essere stata preventivamente convalidata, ma può essere eseguita manualmente durante la creazione del test case.
Il test verifica quindi che il client invii il messaggio giusto e elabori correttamente la risposta.

Test del server

Per testare il server, si crea un client stub che invia richieste predefinite al server e convalida che le risposte sono come previsto.
Ora, hai anche la possibilità di testare il comportamento del server quando vengono ricevuti messaggi imprevisti o malformati, il che è molto più difficile in un test end-to-end con un client funzionante correttamente.

    
risposta data 30.07.2014 - 18:34
fonte
1

Sembra che tu abbia bisogno di un proxy da inserire tra il tuo cliente e il tuo servizio. Dovresti essere in grado di generare uno scheletro dal tuo WSDL, quindi applicare la tua logica validate-and-forward in cui i metodi di servizio sono stati eliminati.

    
risposta data 30.07.2014 - 18:17
fonte

Leggi altre domande sui tag