05 unit testing

10

Click here to load reader

Transcript of 05 unit testing

Page 1: 05 unit testing

UNIT TESTINGTalk 5

Page 2: 05 unit testing

WIKIPEDIA

• Lo unit testing è una procedura usata per verificare (testing) singole parti di un codice sorgente (unit).

• Semplifica le modifiche.

• Semplifica l'integrazione.

• Fornisce documentazione.

• Separa l'implementazione dall'interfaccia.

Page 3: 05 unit testing

SEMPLIFICA LE MODIFICHE

• Test "polaroid": verifica la stato corrente del codice e permette di capire se una modifica al codice introduce bug: refactoring.

• Unit test continuo (Ruby, Javascript): i test vengono eseguiti ad ogni modifica.

Page 4: 05 unit testing

SEMPLIFICA L'INTEGRAZIONE

• Verificando il funzionamento di ogni singola unità, nell'integrazione tra più unità non ci si preoccupa del funzionamento delle altre.

• Si controlla meglio la propagazione dei bug.

Page 5: 05 unit testing

FORNISCE DOCUMENTAZIONE

• Lo Unit Test è la documentazione viva dell'unità in test.

• Il Test usa il codice secondo le specifiche e le verifica continuamente.

• Il Test è l'implementazione della specifica.

Page 6: 05 unit testing

SEPARA L'INTERFACCIA DALL'IMPLEMENTAZIONE

• Poiché le classi vanno testate in modo isolato, le collaborazioni vanno "falsificate" (mock).

• Quindi, la classe in test usa le collaboratrici solo tramite la loro interfaccia.

• Altrimenti, sto testando anche le collaboratrici.

Page 7: 05 unit testing

NON È UNIT TEST SE:

• Accede al database.

• Parla con la rete.

• Tocca il filesystem.

• Non può essere eseguito in contemporanea ad altri test.

• Bisogna preparare l'ambiente.

Page 8: 05 unit testing

NIENTE SCUSE!

• Non ho tempo.

• Non è codice di produzione.

• Se cambio le classi devo cambiare i test.

• Il mio codice non ha bisogno di test!

Page 9: 05 unit testing

IN QUALUNQUE LINGUAGGIO

• Java: JUnit, TestNG, Jtest, JExample,

• Delphi: DUnit

• C#:csUnit, MbUnit, NUnit

• Ruby: RSpec

• Javascript: JSUnit,

• Python: unittest, Nose, py.test

• C++: CppUnit, CPUnit, QtTest

• ...

Page 10: 05 unit testing

ESEMPIO PRATICO