Come può un programmatore principiante iniziare a imparare e applicare le migliori pratiche di test nello sviluppo del software? [duplicare]

0

Mentre imparavo a sviluppare in PHP è stato abbastanza facile che i miei brevi script di una pagina, di 20 righe potrei aggiungere "codice di prova" direttamente alle mie funzioni per capire dove sono o avvicinarmi all'area nel codice in cui è stato trovato il problema (ad esempio, "print_r ($ var)," "var_dump ($ var)," "print 'sei qui') digita roba.

Ora che le mie basi di codice sono in crescita linee e linee in profondità e attraverso più file, sta diventando un problema passare e decommentare tutto il mio codice di test, e quindi tornare indietro e ripubblicarlo di nuovo una volta risolto un problema.

Recentemente ho scoperto git nella gestione delle mie applicazioni più grandi. Mi sono agganciato alle filiali e ho un ramo di test e un ramo di produzione che passo da una all'altra durante il debug. Il ramo testing ha ovviamente il mio 'print this or that' testing code.

Tuttavia, questo non è ancora corretto.

Man mano che il codice cresce, quali sono i modi in cui posso testarlo e debuggarlo? Quali sono le migliori pratiche per testare e eseguire il debug del codice mentre le applicazioni diventano più grandi e complesse? L'espressione "Test unitario" attira il mio sguardo di tanto in tanto, ma non mi è ancora familiare. È qualcosa a cui dovrei prestare attenzione di più? I progetti di grandi dimensioni hanno basi di test e di produzione diverse e il sistema di controllo delle versioni rappresenta il modo corretto di approcciare la gestione?

    
posta user658182 22.04.2013 - 07:20
fonte

2 risposte

6

Sì, dovresti assolutamente prestare attenzione ai test unitari. Dovresti suddividere il tuo codice in unità (funzioni, classi), che puoi testare individualmente. E lo fai scrivendo un codice che esegue quelle unità con input noti e verifica il ritorno per gli output previsti.

"Testare" inserendo le dichiarazioni print non è in realtà un test, è debugging . Ed è un'utile tecnica di debug, ma tu non lascia quelle dichiarazioni print nel tuo codice. Dovresti solo inserirli come necessario per una breve prova di prova o due per darti un suggerimento su quale sia il problema di cui stai eseguendo il debug, quindi li rimuovi. Naturalmente, con un vero debugger collegato al codice è possibile eseguire il debug dei valori senza dover modificare il codice.

Dovresti anche prendere l'abitudine di loggarti. Potresti e dovresti avere il tuo codice intercalato con istruzioni log di vari livelli che puoi attivare e disattivare a seconda delle necessità.

Inizia a leggere qui: link
Quindi controlla il debug remoto: link
E poi nel logging: link

Questo probabilmente ti metterà in marcia su "come posso suddividere il mio codice in unità?" , per il quale dovresti imparare l'uso corretto delle funzioni, seguito da classi e oggetti. E questo molto rapidamente ti porta nel regno dei modelli, discussioni infinite e un'architettura applicativa adeguata.

    
risposta data 22.04.2013 - 07:28
fonte
0

La metà dei test sta avendo la giusta prospettiva; un modo per vederlo è che stai usando il tuo codice come un modo per determinare se il tuo codice è adatto per la produzione. Cioè, se stai correggendo una classe EmailSanitizer , scrivi alcuni script di test che esercitano EmailSanitizer , e se tutti quei test passano, allora questo crea fiducia che lo stesso codice che hai scritto per i test sia di produzione -worthy.

Sento che una volta che inizierai a lavorare da quella prospettiva, presto otterrai organicamente un buon feeling su ciò che è e non è appropriato prendere in considerazione quando scrivi un codice di test.

    
risposta data 22.04.2013 - 08:37
fonte

Leggi altre domande sui tag