tdd introduzione

Download TDD Introduzione

If you can't read please download the document

Upload: daniele-demichelis

Post on 05-Aug-2015

90 views

Category:

Documents


0 download

TRANSCRIPT

1. AgendaLa strada verso Unit TestChe problemi abbiamo ?Una possibile soluzione 2. Il ContestoIntegrazioneDevA: ...la classe UserDAO funziona correttamente...DevB: ...anche Registration...Cliente: ...nella home page continua ad apparire questaNull qualcosa!... 3. Il ContestoEvoluzione dei requisiti => Evoluzione del SWErrori di regressioneDevA: ...ho solo modificato un metodo di UserDAO 4. LarchetipoUserDAO+findUsers():List Registration List findUsers( ) {+registerUser(User u) List users = new List();while(rs.next()){users.add( new User() );}return users;}registerUser( User u ) {if(dao.findUsers().isEmpty()){grantAdminPrivileges(u);}dao.registerUser(u);} Il primo utente registrato anche amministratore 5. Una Piccola Idea Ridurre loocupazioneUserDAOdi memoria+findUsers():List Registration List findUsers( ) {+registerUser(User u) List users = null;while(rs.next()){if(users == null){ users = new List();}users.add( new User() );RegisterUser( User u ) {}if(dao.findUsers().isEmpty()){return users;grantAdminPrivileges(u);}}Dao.registerUser(u);}Cool!Lazy Initialization! Argh! Il cliente si lamenta! Il contratto saltato! 6. Una Piccola IdeaIDEA: Test dei singoli componenti!Esplicitazione del contrattoContratto non modificato Per gli usi testatiIntegrazione+ Semplice+ Sicura 7. Gli Unit Test Automatico Ripetibile Computabile Isolatohttp://www.natpryce.com/articles/000772.html 8. Esempio di Unit TestHelloWorld test... 9. Un Altra IdeaSe i test sono cos importanti...Prima il testPoi il codiceTDDTestDrivenDevelopment 10. Test Driven Development 11. Test Driven Development 12. Ed infineSe i test hanno successo...limplementazione pu cambiareil contratto non cambiaRefactoring 13. Test Driven Development 14. Esempio di TDD1 Turno: 3 freccette Punteggio:Da 301 (o 501) a 0Settori Double = settore x 2 Triple = settore x 3 Bull = 25 Bulls Eye = 50Arrivo a 0 con un Double o un Bulls EyeAltrimenti lintero turno annullato