Quando si verifica l'interfaccia tra due parti, il modo più semplice è testarle insieme, cioè eseguire test di integrazione. Se si desidera testare ciascuna parte in isolamento (ad esempio, eseguire test di componenti / unità), i test conterranno una descrizione duplicata di questa interfaccia, che potrebbe discostarsi dall'interfaccia reale.
Una possibile soluzione è strutturare questi test in modo che questi test possano essere verificati rispetto all'interfaccia reale. Per esempio. registrando le interazioni reali e riproducendole durante i test. Quando acquisisci un'interazione per un'API Web, hai una richiesta e una risposta HTTP. È fantastico, perché è facile riprodurli con un server o client falso.
- Testare il client contro un server falso. Questo server verifica che la richiesta del cliente corrisponda alla richiesta registrata e risponde con la risposta registrata.
- Inoltre, prova queste risposte contro il server reale. Esegui le richieste registrate contro il server reale e verifica che la risposta reale corrisponda alla risposta registrata.
Se questi test falliscono, l'interfaccia è cambiata in modo imprevisto. È quindi necessario correggere il client o il server e registrare nuovamente le interazioni non riuscite.
Il vantaggio di utilizzare le interazioni registrate su test di integrazione puri è che le registrazioni possono essere riprodotte più velocemente e possono essere più facili da eseguire il debug. La suite di registrazioni è condivisa tra server e client, ma entrambe possono essere sviluppate in modo indipendente - non è necessario eseguire i test del client quando si cambia il server, purché le registrazioni continuino a corrispondere.
Se questo dovrebbe funzionare bene, dovrai impostare un po 'di automazione per catturare le interazioni. Idealmente, è possibile eseguire la suite di test client in una modalità di registrazione che salva la risposta quando viene eseguita contro il back-end reale. Ciò non deve necessariamente essere supportato dal framework di test, poiché questa registrazione può essere eseguita in un server HTTP proxy. Dovrai anche eliminare dettagli non pertinenti come i timestamp, quindi non salvare le richieste non elaborate. Spesso, l'eliminazione di varie intestazioni e il filtraggio del corpo attraverso alcune espressioni regolari è tutto ciò che è necessario.