05 unit testing
Click here to load reader
-
Upload
federico-russo -
Category
Documents
-
view
140 -
download
0
Transcript of 05 unit testing
UNIT TESTINGTalk 5
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.
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.
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.
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.
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.
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.
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!
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
• ...
ESEMPIO PRATICO