Lascia che ti dia un po 'di informazioni sul problema.
Abbiamo un'applicazione java con integrazione MQ e un pacchetto di test di integrazione, anch'esso scritto in java.
Il pacchetto di test esegue tutti gli scenari (positivi e negativi) eseguendo i casi di test (metodi) e modificando i parametri in base allo scenario. Il modo in cui fa le asserzioni è di mettere un messaggio sulle code di input dell'applicazione e si aspetta un messaggio nelle code di output dell'applicazione. Il corpo del messaggio viene controllato perché differisce a seconda dello scenario di test.
C'è solo 1 coda di input e 1 coda di output nell'applicazione principale. Il numero di casi (metodi) di test è circa 300 e, a causa dell'esecuzione di tutti gli scenari noti, il numero di casi di test effettivamente eseguiti è circa 2500. A causa di ciò, il test pack richiede circa 6 ore per essere eseguito completamente.
Poiché c'è solo una coda su cui il test pack asserisce il messaggio di output, dobbiamo cancellare la coda ogni volta prima di eseguire il prossimo test case. Altrimenti può portare alla miscelazione dei messaggi di output. Ad es. la chiamata di metodo n. 2 potrebbe finire per consumare messaggi di output per la chiamata di metodo n. 1. Quindi non possiamo eseguire i test case anche in parallelo.
Voglio migliorare questo processo e sarei molto grato per qualsiasi suggerimento per ottimizzare il pacchetto di test. In questo momento sto pensando di separare le code di input e output dell'applicazione principale secondo la funzione aziendale e quindi affermare su più code in parallelo. Ma questo approccio significa che devo cambiare l'architettura originale in modo che i miei casi di test funzionino più velocemente e questo non è facile poiché ci sono già client che usano questa applicazione e interagiscono usando le 2 code e dovranno cambiare anche le loro applicazioni.
Chiedo scusa per il post lungo, ma mi piacerebbe sentire gli input di così tante persone creative nella community SO.
Grazie!