SlideShare a Scribd company logo
UNIT TESTING
    Talk 5
WIKIPEDIA

• Lounit 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

More Related Content

PPT
Unit Testing Mockito
PPTX
Unit Testing
PDF
Lezione 01 - Singleton
PPT
Continuous Deployment - Agile Day 2010
PDF
03 - Ricorsione
PDF
06 Refactoring
PDF
08 Workflow e strumenti web
PDF
07 Design Patterns
Unit Testing Mockito
Unit Testing
Lezione 01 - Singleton
Continuous Deployment - Agile Day 2010
03 - Ricorsione
06 Refactoring
08 Workflow e strumenti web
07 Design Patterns

Similar to 05 unit testing (20)

PDF
Delphi & Dintorni Webinar - Diventa un mago del Testing
PDF
Agileday2013 pratiche agili applicate all'infrastruttura
PDF
Software Testing e TDD
PDF
Software Testing & Test Driven Development
PPTX
Unit Test di Gabriele Seroni
PPTX
Unit testing 2014
PDF
Java Unit Testing - JUnit (1)
PPTX
Dependency injection: the good parts
PDF
Java Unit Testing - Introduction
ODP
Unit testing 101
ODP
PPTX
L'Occhio di Ra sul Testing
PPTX
Introduzione al Testing
PDF
Tanti "piccoli rilasci" con Symfony2
PPTX
Introduzione ai Coded UI Tests
PPTX
PowerMock TDD User Group Milano
PDF
Unit Testing
PDF
Corso Java 1 - BASE
PDF
Lezione 3: Sviluppo in Extreme Programming
PPTX
Xamarin Test Cloud
Delphi & Dintorni Webinar - Diventa un mago del Testing
Agileday2013 pratiche agili applicate all'infrastruttura
Software Testing e TDD
Software Testing & Test Driven Development
Unit Test di Gabriele Seroni
Unit testing 2014
Java Unit Testing - JUnit (1)
Dependency injection: the good parts
Java Unit Testing - Introduction
Unit testing 101
L'Occhio di Ra sul Testing
Introduzione al Testing
Tanti "piccoli rilasci" con Symfony2
Introduzione ai Coded UI Tests
PowerMock TDD User Group Milano
Unit Testing
Corso Java 1 - BASE
Lezione 3: Sviluppo in Extreme Programming
Xamarin Test Cloud
Ad

More from Federico Russo (20)

PDF
23 Sicurezza in BBox
PDF
21 Buzzwords
PDF
18 - InfluxDB
PDF
19 - The Highlander Project
PDF
22 - Better Coding
PDF
20 - Ottimizzare le query
PDF
17 - Web Application Threats
PDF
16 - Project Lombok
PDF
15 - Java 8
PDF
14 - Atom
PDF
Slides functionalities 0.26-r16
PDF
BBox e vaadin7
PDF
Box Functionalities 0.20
PDF
Tile server
PDF
PDF
12 java modifiers
PDF
10 Data caching
PDF
11 Java 7
PDF
09 Transactions
PDF
23 Sicurezza in BBox
21 Buzzwords
18 - InfluxDB
19 - The Highlander Project
22 - Better Coding
20 - Ottimizzare le query
17 - Web Application Threats
16 - Project Lombok
15 - Java 8
14 - Atom
Slides functionalities 0.26-r16
BBox e vaadin7
Box Functionalities 0.20
Tile server
12 java modifiers
10 Data caching
11 Java 7
09 Transactions
Ad

05 unit testing

  • 1. UNIT TESTING Talk 5
  • 2. WIKIPEDIA • Lounit 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.
  • 3. 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.
  • 4. 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.
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 8. 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!
  • 9. 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 • ...