Sono un programmatore PHP che si converte in Python. Si prega di spiegare l'importanza (o la non importanza) dei test unitari. Non ho mai testato unità con PHP! [Chiuso

StackOverflow https://stackoverflow.com/questions/5864019

Domanda

Sono a un certo punto nel mio apprendimento su solido sviluppo software in cui mi rendo conto che il codice "pedal-to-the-medal a velocità leggera e prego per buoni risultati senza piano reale" non funziona.

Sto cercando di sostituire i miei vecchi (e certamente non esattamente grandi) modi con pratiche solide. Non ho mai usato i test unitari prima, e ora oltre a provare a imparare la piramide (che sta andando bene grazie alla documentazione approfondita) sto anche cercando di vedere come i test unitari in generale possono avvantaggiarmi (anche in futuro aggiungi test di integrazione , test di regressione, ecc.). Ho letto questa introduzione a NoseTest http://ivory.idyll.org/articles/nose-intro.html, e (non essere irriverenti) vedo che puoi usare i test unitari per testare espressioni regolari e vedere if a=1; b=1; now does a == b. Questo è tutto ciò che posso vedere a questo punto. Non ho bisogno di un framework per questo. Posso usare un tester di espressione regolare e un buon senso per "testare". Se ho intenzione di utilizzare i test unitari per vedere se due variabili sono uguali, allora non dovrei creare un test ogni volta che creo una variabile e imposto uguale a qualcosa? Gli esempi dell'articolo sembrano solo un po 'arbitrari.

La mia mente è aperta all'apprendimento dei vantaggi dei test unitari, ma voglio sapere quali sono alcune applicazioni pratiche dei test unitari.

In conclusione: non ho mai usato i test unitari prima, quindi per favore dimmi perché sbaglio e dovrei iniziare a usare i test.

Saluti!!

È stato utile?

Soluzione

Il test unitario ti dà un po 'di certezza che il codice soddisfa le tue aspettative. Il test unitario non è un santo graal, è semplicemente uno degli strumenti che puoi usare per raggiungere un buon livello di accuratezza e modularità con il tuo codice.

Il test dell'unità è la tua aspettativa. In altre parole, il test chiamerà o invocherà il pezzo di codice che è in fase di prova, quindi misurerà i risultati (valori di ritorno, ecc.) Rispetto a ciò che si aspettava che accada (o restituisca). Se i risultati non corrispondono a ciò che ti aspettavi, allora hai un test difettoso (la tua aspettativa era sbagliata) o il codice in esame non funziona come pensavi.

Il test unitario è particolarmente utile quando arriva il momento di refactoring o mantenimento del codice. È possibile modificare il codice, eseguire i test unitari e verificare se le modifiche hanno rotto i test.

Per tenerlo breve, anche i test unitari hanno altri vantaggi. Normalmente dovresti essere in grado di eseguirli in modo automatizzato, quindi puoi farli funzionare se fai una build notturna, allora puoi controllare i risultati al mattino. Ciò è particolarmente utile nei team più grandi quando più persone possono cambiare o aggiungere codice. La costruzione del codice in modo adatto ai test unitari porta anche a un approccio più disaccoppiato quando si costruisce l'app, questo riduce l'odore del codice e aiuta con la futura manutenibilità e estensibilità di esso.

Modificare:

Con il test did_earn, ho un codice difficile nei casi di test. Ad esempio, passerei manualmente User5 come param (User5 ha registrato 400 volte) e mi assicurerei che non ottengano il badge, ma User6 (500 accessi) ottiene il badge?

Sì, è esattamente quello che farai. Ciò significa che se si cambia l'implementazione interna di did_earn Quindi i tuoi test possono dirti immediatamente se soddisfa ancora le tue aspettative (che ritorna solo VERO da 500 accessi in poi). Se stai testando un codice che non è fortemente digitato (come un linguaggio di scripting), dovresti anche considerare il test per ciò che accade se si passa una stringa alla funzione anziché a un numero intero, ecc.

Anche se al momento potrebbe non applicarti beffardo, IOC e Iniezione di dipendenza, che sono tutte tecniche utilizzate pesantemente nei test unitari.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top