Quali test sono appropriati per un codice di backend REST?

2

Sto guardando i casi di test di scrittura (qualcosa che non ho ancora fatto / insegnato prima). Sto creando un'app Web con un backend REST Api basato su Java che utilizza Spring Boot.

Per quanto riguarda vari tipi di test (unit test, test di integrazione, ecc.), sono confuso su cosa applicare dove.

Il codice della mia domanda è diviso in 3 tipi di classi che seguono i picchietti di MVC. 1. Modello 2. Archivi 3. Controller

Da quello che ho letto finora, questo è quello che sento.

  1. Le classi modello e i repository non hanno bisogno di test, in quanto non hanno alcun codice aziendale. Tutto ciò che fanno è aiutare primavera a convertire i dati da un formato all'altro e a conservare i dati.

  2. Nei controller, dovrei scrivere test unitari e test di integrazione per metodi che eseguono attività non banali. I metodi che non hanno istruzioni / cicli condizionali devono essere saltati.

  3. Test di integrazione per tutti gli endpoint REST (non banali?)

  4. Una volta che il front-end Web è in corso, dovrei scrivere test end-to-end per verificare che l'UI / UX funzioni come previsto.

Sono sulla buona strada?

    
posta Registered User 14.10.2017 - 17:22
fonte

2 risposte

4

Hai ragione che probabilmente i Modelli e i Repositi non necessitano di test unitari, poiché i tuoi Modelli e Repository non sono logici. Se hanno una logica, dovrebbero essere testati, ma è meglio che provare che la logica lo stia spostando altrove nel tuo progetto (ad esempio, con ViewModels, per esempio).

Potresti considerare di spostare la logica dai controllori e in servizi separati. I test per i controller saranno quindi molto più piccoli (principalmente solo per garantire che la risposta alla richiesta abbia il codice di stato HTTP corretto, quel genere di cose) ei tuoi servizi avranno quindi la maggior parte della logica testabile.

I test di integrazione sono una buona idea, ma non ne hai bisogno in abbondanza - idealmente, vuoi più test unitari di test di integrazione e più test di integrazione che test end-to-end. Potresti anche essere in grado di scrivere alcuni test di unità frontend, se hai molta logica sul frontend che non può essere spostato nel back-end.

    
risposta data 17.10.2017 - 18:58
fonte
2

Il tuo approccio è simile a quello che ho visto in progetti simili.

Fondamentalmente qualsiasi codice non banale dovrebbe essere testato unitamente. Inoltre abbiamo utilizzato RestAssured per testare i servizi REST (test di integrazione) e Selenium / WebDriver per i test end-to-end dell'intera applicazione.

    
risposta data 17.10.2017 - 10:01
fonte

Leggi altre domande sui tag