Domanda

Sono uno sviluppatore web che lavora in PHP.Ho un'esperienza limitata nell'utilizzo dello sviluppo basato su test nelle applicazioni desktop C#.In quel caso abbiamo utilizzato nUnit per il framework di unit test.

Vorrei iniziare a utilizzare TDD in nuovi progetti ma non so davvero da dove cominciare.

Quali consigli hai per un framework di unit test basato su PHP e quali sono alcune buone risorse per qualcuno che è abbastanza nuovo nel concetto di TDD?

È stato utile?

Soluzione

Ho usato sia PHPUnit che Test semplice e ho trovato Test semplice per essere più facile da usare.

Per quanto riguarda TDD, non ho avuto molta fortuna nel senso più puro.Penso che sia principalmente una questione di tempo/disciplina da parte mia.

Aggiungere test a posteriori è stato piuttosto utile, ma la mia cosa preferita da fare è usare scrivere test SimpleTest per verificare bug specifici che devo correggere.Ciò rende molto semplice verificare che le cose siano effettivamente sistemate e rimangano tali.

Altri suggerimenti

Consiglio vivamente Sviluppo basato sui test di Kent Beck (ISBN-10:0321146530).Non è stato scritto specificatamente per PHP, ma i concetti sono presenti e dovrebbero essere facilmente traducibili in PHP.

PHPUnit è uno standard, ma a volte è anche travolgente, quindi se lo trovi troppo complesso, dai un'occhiata php per iniziare.È molto, molto facile scriverci dei test.Un gioco da ragazzi per qualsiasi programmatore.

E per rispondere alla tua domanda su TDD: non sono sicuro che TDD sia ampiamente utilizzato nello spazio PHP.Vedo che il rapido sviluppo di applicazioni e TDD si scontrano in qualche modo (rigorosamente IMHO).TDD richiede che tu abbia un quadro completo di ciò che costruisci e che tu scriva i tuoi test in anticipo e quindi implementi il ​​codice per far passare il test.

Quindi, ad esempio, ciò che facciamo invece è scrivere molti test quando abbiamo finito.Questo non è sempre l'approccio migliore perché a volte ti ritrovi con test fasulli che passano, ma non sono realmente utili ma almeno è qualcosa su cui puoi espandere.Internamente continuiamo con i test e sostanzialmente scriviamo un test per ogni bug che troviamo.In questo modo diventa più solido.

Personalmente preferisco SimpleTest.C'è un test runner da riga di comando e un test runner basato sul web, e c'è persino un Eclipse collegare per consentirti di eseguire test unitari dall'IDE stesso.Ho trovato molto più difficile far funzionare la connessione da Zend a PHPUnit, soprattutto con il debugger.

Il modo in cui utilizziamo SimpleTest internamente è con a integrazione continua sceneggiatura che abbiamo scritto noi stessi.Ogni volta che effettuiamo il check-in di una funzionalità in SVN includiamo i test unitari.Ogni ora circa, lo script CI viene eseguito e chiama uno script PHP da riga di comando che esegue tutti i nostri test unitari.In caso di interruzione, ricevo un'e-mail.È stato un ottimo modo per ridurre i bug nei nostri sistemi.

Tuttavia, puoi usare altrettanto facilmente qualcosa di simile Ph per eseguire i test automaticamente, su un lavoro cron o con un hook di check-in SVN.

Infatti, se vuoi contattarmi direttamente per ulteriore aiuto, puoi contattarmi tramite le informazioni del mio profilo su SO.Mi piacerebbe aiutarti.

SimpleTest è un ottimo sistema.Ho iniziato a usarlo circa 5 mesi fa, non avendo mai sentito parlare di TDD, e SimpleTest è facile da imparare ma comunque potente.Per quanto riguarda le risorse, attualmente sto leggendo TDD con l'esempio di Kent Beck, ed è bello.

Dovresti esaminare PHPUnit, assomiglia molto a nUnit.

Un altro strumento moderno a cui dovresti guardare è Codecezione.È molto più semplice di PHPUnit e incorpora un approccio basato su scenari, che è molto utile per generare documentazione dai test.

Lo sviluppo basato sui test è un approccio in cui i test vengono sempre scritti prima del codice.Dovresti imparare a farlo PHPUNIT prima per avviare lo sviluppo TDD.Quindi mentre crei la tua funzione dovresti sempre pensare a come la funzione può fallire e scrivere un caso di test in phpunit e alla fine dovresti scrivere il codice per superare il test.Sarà un nuovo approccio, quindi sarà un po' difficile all'inizio, ma una volta che ti sarai abituato, lo troverai molto utile soprattutto per i bug successivi allo sviluppo e per lo stile di codifica.Puoi affrontare tutto questo Passo dopo passo guida per comprendere questo concetto.

Ricorda sempre che se i test vengono scritti dopo lo sviluppo sono inutili.Quindi TDD è obbligatorio se stai pensando di scrivere unit test

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