Dept. of Computer Science Lab 1: Test Driven Development Matteo Camilli ! [email protected] http://camilli.di.unimi.it Progettazione del Software a.a. 2014/15 1 Matteo Camilli Regole per l’esame L'esame è composto da due parti: 1) parte teoria (max 27 punti, sufficienza 18) 2) parte laboratorio (max 5 punti, sufficienza 0) ! per verbalizzare il voto, le due parti devono essere sufficienti! NOTA: La somma può portare a 32: voti maggiori di 30 corrispondono a 30 e lode ! PARTE TEORIA Orale di un'ora sugli argomenti del corso ! PARTE LABORATORIO (ESERCIZI + PROGETTO) • • • • • Verranno fatti 11 laboratori Primi 5 lab di esercizi (fino ad 1 punto a lab) Seconda parte di Progetto (fino ad 1 punto per “lavoro settimanale”) Il voto peggiore (spesso sarà lo zero di una assenza) verrà scartato Si parte da -5, quindi prendendo sempre il massimo 11 - 5 - 1 (scarto) = 5 punti 2 Matteo Camilli TDD • Test Driven Development (TDD) è una metodologia. ! • TDD è progettazione e sviluppo del software • TDD non è testing ! • Ci permette di pensare al programma attraverso i suoi requisiti. • Prima di implementare una nuova funzionalità scriviamo sempre un test per definirne le specifiche. 3 Matteo Camilli TDD • Mantenere le iterazioni brevi • Ad ogni iterazione, produrre esclusivamente il codice necessario a fare passare il test • Refactoring è importante… da fare sia sul codice del programma sia sui test • Obbiettivi: produrre codice pulito, funzionante, che rispetta i requisiti. • Make it Fail • No code without a failing test • Make it Work • As simply as possible • Make it Better • Refactor 4 Matteo Camilli Refactoring • Modifica di porzioni di codice senza modificare il comportamento esterno del software. Viene applicato per migliorare alcune caratteristiche non funzionali: Leggibilità Riusabilità Manutenibilità Testabilità • Su cosa lavorare durante il refactoring: • nomi di variabili, metodi, classi sensati? • troppi livelli di indentazione? • if-else intricati? • responsabilità alle classi appropriate? • troppe responsabilità ad una singola classe o metodo? • classi/metodi troppo grossi? • … 5 Matteo Camilli Unit testing • Attività di testing di singole unità software. • Per unità si intende il minimo componente di un programma dotato di funzionamento autonomo (singola classe o un singolo metodo nella programmazione a oggetti) • Junit: Framework opensource per scrivere ed eseguire test ripetibili (usiamo versione JUnit 4). 6 Matteo Camilli Esercizio • Scrivere un programma Java per giocare a Tris. • Obbligatorio seguire l’approccio TDD. • I test si trovano nella classe TrisTest.java, partendo dal primo test in alto ! • > bash inizia! prima di iniziare ! • scommento nuovo test • red • > bash salva! • green, • > bash salva! per ogni test • refactoring • > bash salva • > bash consegna prima di consegnare 7
© Copyright 2024 ExpyDoc