Mantenere gli stub nella sincronizzazione?

1

Se voglio testare il codice di frontend (es. react SPA) che interroga il backend e cancello le risposte dal back-end usando sinon fake server / fake XHR, allora cosa succede se il codice di backend cambia?

Se il backend cambia, i test frontend continueranno a passare, ma la funzionalità potrebbe essere interrotta. È possibile che questi stub vengano aggiornati quando il back-end cambia, ma è anche possibile che questo possa essere perso.

Quali sono le migliori pratiche relative a questo problema?

Nota: mi scuso se questa domanda ha già avuto una risposta esauriente, cosa che sospetto che abbia. Non riesco a capire i termini giusti per cercare se esiste.

    
posta Adam Thompson 05.06.2018 - 22:59
fonte

1 risposta

2

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.

    
risposta data 09.06.2018 - 12:45
fonte