Come affrontare i test funzionali in sistemi separati

3

Sto implementando alcuni test funzionali automatici in un ambiente con circa 20 applicazioni che comunicano tra loro utilizzando code e / o interfacce restful.

Il problema che sto affrontando è che ho aggiunto un po 'di test a una delle applicazioni, chiamiamola Pagamenti e sono tutte molto belle e verdi. Una delle modifiche all'applicazione Pagamenti ha aggiunto un campo aggiuntivo in un messaggio che viene inviato a un'altra applicazione chiamiamolo CRM e il CRM ha scartato il messaggio, il che significava che le applicazioni iniziarono a non essere sincronizzate. L'applicazione Pagamenti (come la maggior parte delle altre applicazioni) invia messaggi in modo fire-and-forget, il che significa che il produttore non sa mai se un messaggio viene elaborato o scartato.

Mi chiedo come testare queste dipendenze tra i sistemi. Un'opzione (che non mi piace dal mio intestino, ma non ho idea del perché) è quella di connettersi all'altro sistema e verificare che il record sia stato aggiornato. La maggior parte delle applicazioni ha un'interfaccia riposante e fornisce anche client, quindi non è molto lavoro. Ma ho la strong sensazione che farlo lo farà rendere il test più fragile. Uno dei motivi per cui non mi piace, è che la maggior parte delle applicazioni parla con altre 4-10 altre applicazioni, quindi non è solo controllando un'altra app ... e dal momento che molte cose sono asincrone, aggiunge ancora più incertezza alla prova.

Quindi, come crei test funzionali per questo tipo di ambiente?

    
posta Augusto 02.03.2012 - 14:23
fonte

2 risposte

1

Cerco di testare il più vicino possibile alla fragilità. Se il CRM è il componente che non sta facendo il suo lavoro, è lì che c'è un buco nel test. È la componente che ha risposto male al cambiamento. È il pezzo che ha lasciato cadere il messaggio senza generare un allarme.

Mi sento come se le persone si rivolgessero a grandi test di integrazione quando un modo per testare un singolo sistema non è ovvio. Se trovi un problema di verifica più semplice e non ovvio, scoprirai spesso un modo migliore per progettare ciò che stai facendo.

    
risposta data 02.03.2012 - 15:43
fonte
0

Potrebbe essere una buona idea aggiungere alcune funzionalità di registrazione (o un servizio di registrazione) al sistema di trasmissione dei messaggi. Quando la registrazione è abilitata, ogni applicazione / servizio che invia un messaggio dovrebbe registrarlo. Anche i messaggi in arrivo devono essere registrati e devono essere registrati quando un messaggio è stato elaborato correttamente o quando è stato scartato. Il framework di test dovrebbe avere un facile accesso a tutti i log e il servizio di registrazione dovrebbe essere progettato per essere interrogato da test a livello di programmazione.

Quindi, quando si crea un test dell'applicazione di pagamento, non è necessario connettersi al servizio CRM (e alle altre 4-10 applicazioni) per verificare se è stato ricevuto il messaggio inviato dal pagamento. Dovrai solo collegarti al tuo servizio di registrazione e controllare il registro.

    
risposta data 02.03.2012 - 14:54
fonte

Leggi altre domande sui tag