Importanza dei test di unità PHP relativi alle classi base

0

Per 3 mesi, ho lavorato a un progetto web utilizzando PHP per creare una piattaforma per gestire luci e sensori remoti. Al momento sto lavorando quasi da solo su di esso, ma ne avremo 2 nei prossimi mesi.

Mentre sviluppiamo il nostro business, abbiamo deciso di provare a lavorare usando un modo di lavorare agile. Quasi ogni mese, abbiamo un incontro con il nostro cliente e dovrei consegnare una versione funzionante. Ma ho capito che non potevo testare il mio progetto in modo efficiente a causa di molte ragioni:

  • Ho bisogno di gestire i miei 2 database (quello locale e quello online) e non posso mettere quello locale online ad ogni sprint perché abbiamo una grande quantità di online dati che non vogliamo eliminare.

  • Accade che i file PHP non siano correttamente trasferiti online, quindi alcune funzionalità sono solo parzialmente aggiunte.

  • Non abbiamo ancora casi d'uso diversi , creando bug quando nuove funzionalità sono implementate e testate con altre. Devo testare la lastra da solo ed è difficile testarla in modo obiettivo.

Quindi mi chiedevo se dovessi usare i test delle unità PHP per aiutarmi a gestire parte del lavoro di test. Poiché lavoro principalmente sugli oggetti con funzioni di aggiunta / aggiornamento / salvataggio che comunicano direttamente con il nostro DB MySQL , non so se questo è pertinente e / o necessario per usarlo.

Pensi che dovrei prendere tempo per creare un sistema di unit test in questo progetto o è completamente una perdita di tempo? Hai qualche altra idea per aiutarmi a testare il mio progetto? Mi sembra che perderei così tanto tempo per implementarlo e non so nemmeno se sia un modo rilevante per testare il mio progetto.

    
posta Victor Gerfaud 16.06.2017 - 11:35
fonte

1 risposta

2

I need to handle my 2 databases (the local one and the online one) and I can't put the local one online at each sprint because we have big amount of online data that we don't want to delete.

Sembra che tu abbia due ambienti: la tua casella Sviluppo e quella Live del cliente. Non abbastanza. È necessario [almeno] un altro per test delle applicazioni, dimostrazioni e test di implementazione.

it happens that php files aren't correctly transferred online, so some features are just partially added.

Sicuramente deve avere canali affidabili e resilienti attraverso i quali distribuire l'applicazione. Senza questi, rilasciare il tuo duro lavoro è ridotto a pura supposizione.

we still don't have different cases of use, creating bugs when new features are implemented and tested with other ones. I must try the plateform by myself and it's difficult to test it in an objective way.

È qui che entra in gioco l'ambiente di test [separato].

So I was wondering if I should use php unit tests to help me to handle part of the test work.

Dovresti prendere in considerazione tutto ciò che può aiutarti a filtrare i bug prima che colpiscano i tuoi clienti.

As I'm mostly working on objects with add/update/save functions directly communicating with our MYSQL DB, I don't know if this is relevant and/our necessary to use it.

Domanda: importa se i dati vengono archiviati correttamente nel tuo database? (Risposta: Sì!)

Se lo fa allora dovresti avere test che dimostrano che fa.

Do you think I should take time to create a system of unit tests in this project or is that completely a waste of time?

Hai molti problemi in cui la semplice modifica del codice introduce nuovi bug? I test eliminerebbero molti di questi.

Puoi provare che il tuo ultimo cambiamento non ha influenzato nessun'altra parte dell'applicazione? I test possono raggiungere questo obiettivo.

Si noti che non ho detto "Test Unità ". Ci sono molti diversi livelli di test e devi decidere quale sia il più appropriato; I test unitari sono, forse, i più facili da scrivere e salvaguardare il tuo codice da modifiche "inaspettate", ma i test di integrazione coprono una gamma molto più ampia di cose, che potrebbe essere più economica.

Se non hai alcun di questi, inizia con Test unitari e procedi.

It seems to me that I would be loosing so much time to implement it ...

I test non dimostrano la correttezza del tuo codice oggi .
Lo fai scrivendo il codice per fare ciò che deve fare ed è per questo che sembra uno sforzo "sprecato" per fare il lavoro due volte; una volta per programmare e di nuovo per scrivere i test.

I test dimostrano la continua correttezza del tuo codice nel tempo . farai apportare modifiche al codice nei mesi e negli anni che seguono e i tuoi test ti garantiranno di non rompere nulla (che non intendi).

    
risposta data 16.06.2017 - 13:05
fonte

Leggi altre domande sui tag