Come introdurre test nel ciclo di sviluppo

2

Nella nostra azienda, siamo solo due dipendenti IT e io sono l'unico sviluppatore. Sto sviluppando applicazioni intranet ricche usando plain php ed extjs come framework javascript.

Il nostro ciclo di sviluppo è in genere molto veloce, tanto che spesso le persone utilizzano domani ciò che sviluppo oggi. Questo è possibile tramite uno script di build automatico.

Ora il problema:

Succede, che nonostante tutte le cure, le cose si rompono. E io o gli utenti finali lo noteremo una volta che l'aggiornamento dell'applicazione sarà pubblicato. Ovviamente una soluzione di test (o mabe due, una per php e una per js) sarebbe la soluzione. Ma questo mi sembra un ostacolo insormontabile, a causa di questi punti:

  • Non ho mai usato un framework di test e non ho le conoscenze necessarie
  • Un framework di test pone dei vincoli sul modo in cui il codice viene scritto (e non posso giudicare per ora, se il mio codice si adatta a un particolare framework). Temo quindi di dover refactoring il mio codice per poter utilizzare un framework di test.
  • Temo che scrivere i test richieda più tempo rispetto alla scrittura del codice.
  • Gran parte del codice dipende dai dati presenti in diversi database. Come creare dati falsi che possono essere utilizzati per il test.

Qualcuno può darmi consigli su come introdurre una struttura di test in un contesto in cui competenza e tempo sono scarsi? So che questa domanda è davvero ampia, ma spero di ricevere comunque preziosi consigli.

Modifica

Mi ci sono voluti diversi mesi prima che avessi il coraggio di immergermi nei test dell'Unità, e mi ci è voluta solo un'ora per alzarmi e testare. Ci vorranno alcune ore in più per includerlo definitivamente nel processo di creazione.

Ho davvero temuto troppo !!

Il test delle unità non è più un lavoro (o solo leggermente più) del test con echo e var_dump . Il vantaggio è che è permanente. Una volta modificato il codice, il test funziona ancora. Non è più necessario ripetere il test manualmente.

    
posta Lorenz Meyer 13.03.2014 - 11:00
fonte

1 risposta

3

Sono d'accordo sul fatto che la domanda sia ampia, ma la considererei borderline. Quindi, ecco la mia versione.

  • Fare qualcosa per la prima volta richiede più tempo di una cosa ben conosciuta, ma per un professionista, il tempo per migliorare il tuo modo efficiente in modo duraturo è quasi sempre la pena. Non è necessario più di un giorno per acquisire una quantità sufficiente di un framework di test per automatizzare alcune delle cose che ti servono, e questo probabilmente si ripagherà prima piuttosto che dopo.
  • I framework di test possono imporre restrizioni sulla struttura del codice, ma di solito fanno di tutto per minimizzarlo. Le condizioni che creano sono solitamente cose che sono comunque una buona idea per codice sano e gestibile (piccole funzioni, singola responsabilità, ortogonalità, ecc.)
  • Trascorrere più tempo sui test che sul codice di produzione può accadere - in effetti, alcune persone sostengono che questo è il modo normale e atteso di programmazione - ma non è quello che dovresti misurare. Il valore da ottimizzare è il tempo totale di consegna delle caratteristiche richieste con una qualità accettabile; il fatto che gli strumenti di automazione del test abbiano molti utenti soddisfatti, persino entusiasti, è almeno una prova delicata che questo può essere tirato fuori.
  • Questo è meno facilmente comprensibile senza contesto. La tendenza generale di opinione è che tutto ciò che interagisce con un database non è un test unitario, ma un test di integrazione. Il test del codice che è accoppiato ai database pone un problema con diversi tipi di soluzioni: inventa il tuo database mock primitivo; sfruttare i database simulati offerti dai framework di test; usa un database in memoria o mettine uno su un disco veramente veloce, ecc.
risposta data 13.03.2014 - 11:17
fonte