Test unitari che riguardano funzioni e oggetti della libreria

0

Sto facendo un progetto usando il framework Laravel.

Ho intenzione di creare test unitari per il mio progetto. Ma sento di non avere davvero idea di cosa testare perché utilizzo principalmente le funzioni di libreria o framework. Anche se creo le mie funzioni, di solito sono composte da funzioni chiamate da Laravel e dalle librerie che uso. Ecco alcuni esempi.

Aggiunta di un utente

La mia applicazione prende input da una richiesta Ajax, convalida i campi e li aggiunge al database.

  • Il recupero dei campi dai dati dei post è gestito da laravel (Request :: all)
  • Le convalide dei campi sono gestite dall'oggetto validatore di laravel.
  • Il metodo di salvataggio da un oggetto Eloquent viene salvato nel database.

Che cosa posso testare qui poiché tutti gli oggetti e le funzioni che ho usato (validatore, eloquente) sono già stati testati dagli autori del framework?

Calcolo delle retribuzioni

L'utente invia un file excel che contiene valori. Quindi farei calcoli su ogni riga e salvare ciascuno nel database.

  • La gestione dei file in Excel e la gestione degli errori sono già gestite dalla libreria phpspreadsheet.
  • Qualsiasi convalida delle date nel file può essere gestita dalla libreria Carbon.
  • I calcoli sono gestiti da me. Conoscete altre funzioni della libreria utilizzate tranne le funzioni integrate di php.
  • Le convalide vengono gestite dall'oggetto validatore di Laravel.
  • Gli inserimenti batch sono gestiti dal generatore di query di Laravel.

L'unica cosa che penso possa essere verificata sono le mie funzioni di calcolo definite dall'utente, perché sono create da me.

Le mie osservazioni sono corrette?

    
posta morbidCode 23.10.2018 - 18:07
fonte

1 risposta

2

no.

Secondo lo stesso ragionamento, potresti sostenere che nessun test unitario è mai necessario dal momento che l'intero codice PHP è stato scritto da persone molto esperte e di talento, che probabilmente hanno testato tutto da soli.

Aggiunta di un utente (7 test)

My application takes inputs from an ajax request, validates the fields and add them to the database.

Test che dovresti fare:

  • Cosa dovrebbe accadere quando una regola di convalida è interrotta? Che tipo di stato HTTP ti aspetti? Quale risposta dovrebbe essere restituita dal controller? (2 test)
  • Assicurarsi che ogni regola di convalida sia stata implementata nel codice di convalida. Puoi inserire un'email che non è un'e-mail valida? Puoi avere una password più breve di 4 caratteri? (X test, diciamo 2 anche se ce ne saranno sicuramente di più)
  • Il database contiene i dati corretti dopo che la richiesta è stata completata con successo? Quale risposta ti aspetti dal controller dopo il successo? Quale codice di stato? (3 test)

Calcolo delle retribuzioni (16 test)

User submits an excel file that contains values. I would then make computations on each row and save each to the database.

Questo è un po 'più complesso dal momento che non hai fornito molti dettagli. Ma è facile assumere ciò che dovresti testare:

  • Convalida dell'input, come sopra, quale risposta aspettarsi, quale codice di stato in caso di errore? (2 test)
  • Che tipo di regola di validazione dovrebbe essere implementata? Il file excel deve essere inferiore o superiore a una determinata dimensione? Dovrebbe avere un certo tipo? (X test, diciamo 2 anche se ce ne saranno sicuramente di più)
  • Quali calcoli dovrebbero essere utilizzati? (1 test)
  • Per tutti questi calcoli, prova che funzionano. (X test, diciamo 10)
  • I dati sono stati inseriti correttamente nel database? Ci sono casi in cui non dovrebbe essere inserito? (1 test)
  • Quale risposta ti aspetti dal controller dopo un successo? (1 test)

Come puoi vedere, c'è un lotto più test di zero, e non so nemmeno a che tipo di progetto stai lavorando o alcun dettaglio specifico. Quindi potresti sicuramente moltiplicare quel numero per 2 o 3.

Quando testate la vostra applicazione, non testate che le librerie che state usando funzionino. Verifica che la tua applicazione funzioni. Questa è una storia completamente diversa.

    
risposta data 25.10.2018 - 14:20
fonte

Leggi altre domande sui tag