SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 05 unit testing

Similaire à 05 unit testing (20)

Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del Testing
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Software Testing & Test Driven Development
Software Testing & Test Driven DevelopmentSoftware Testing & Test Driven Development
Software Testing & Test Driven Development
 
Unit Test di Gabriele Seroni
Unit Test di Gabriele SeroniUnit Test di Gabriele Seroni
Unit Test di Gabriele Seroni
 
Unit testing 2014
Unit testing 2014Unit testing 2014
Unit testing 2014
 
Java Unit Testing - JUnit (1)
Java Unit Testing - JUnit (1)Java Unit Testing - JUnit (1)
Java Unit Testing - JUnit (1)
 
Dependency injection: the good parts
Dependency injection:  the good partsDependency injection:  the good parts
Dependency injection: the good parts
 
Java Unit Testing - Introduction
Java Unit Testing - IntroductionJava Unit Testing - Introduction
Java Unit Testing - Introduction
 
Unit testing 101
Unit testing 101Unit testing 101
Unit testing 101
 
Testing
TestingTesting
Testing
 
L'Occhio di Ra sul Testing
L'Occhio di Ra sul TestingL'Occhio di Ra sul Testing
L'Occhio di Ra sul Testing
 
Introduzione al Testing
Introduzione al TestingIntroduzione al Testing
Introduzione al Testing
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2
 
Introduzione ai Coded UI Tests
Introduzione ai Coded UI TestsIntroduzione ai Coded UI Tests
Introduzione ai Coded UI Tests
 
PowerMock TDD User Group Milano
PowerMock TDD User Group MilanoPowerMock TDD User Group Milano
PowerMock TDD User Group Milano
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 
Lezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingLezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme Programming
 
Xamarin Test Cloud
Xamarin Test CloudXamarin Test Cloud
Xamarin Test Cloud
 

Plus de Federico Russo

Slides functionalities 0.26-r16
Slides   functionalities 0.26-r16Slides   functionalities 0.26-r16
Slides functionalities 0.26-r16
Federico Russo
 

Plus de Federico Russo (20)

23 Sicurezza in BBox
23 Sicurezza in BBox23 Sicurezza in BBox
23 Sicurezza in BBox
 
21 Buzzwords
21 Buzzwords21 Buzzwords
21 Buzzwords
 
18 - InfluxDB
18 - InfluxDB18 - InfluxDB
18 - InfluxDB
 
19 - The Highlander Project
19 - The Highlander Project19 - The Highlander Project
19 - The Highlander Project
 
22 - Better Coding
22 - Better Coding22 - Better Coding
22 - Better Coding
 
20 - Ottimizzare le query
20 - Ottimizzare le query20 - Ottimizzare le query
20 - Ottimizzare le query
 
17 - Web Application Threats
17 - Web Application Threats17 - Web Application Threats
17 - Web Application Threats
 
16 - Project Lombok
16 - Project Lombok16 - Project Lombok
16 - Project Lombok
 
15 - Java 8
15 - Java 815 - Java 8
15 - Java 8
 
14 - Atom
14 - Atom14 - Atom
14 - Atom
 
Slides functionalities 0.26-r16
Slides   functionalities 0.26-r16Slides   functionalities 0.26-r16
Slides functionalities 0.26-r16
 
BBox e vaadin7
BBox e vaadin7BBox e vaadin7
BBox e vaadin7
 
Box Functionalities 0.20
Box Functionalities 0.20Box Functionalities 0.20
Box Functionalities 0.20
 
Tile server
Tile serverTile server
Tile server
 
Vaadin7
Vaadin7Vaadin7
Vaadin7
 
12 java modifiers
12 java modifiers12 java modifiers
12 java modifiers
 
10 Data caching
10 Data caching10 Data caching
10 Data caching
 
11 Java 7
11 Java 711 Java 7
11 Java 7
 
09 Transactions
09 Transactions09 Transactions
09 Transactions
 
04-JVM
04-JVM04-JVM
04-JVM
 

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