SlideShare a Scribd company logo
1 of 9
TDD & Applicazioni Data Driven



Applicazione Data Driven
  Path ben conosciuti per isolare l'accesso ai dati
     DAO, Active Record...
TDD & Applicazioni Data Driven

              <<int>
                >
               DAO

     DAO
DB   Imp
Come testare un DAO ?



Idea
  Unit Test DB+DAO (in realtà Integration Test)


DB in uno stato conosciuto
Esecuzione “Unit Test”
Verifica
  Nuovo stato del DB
  Dati selezionati dal DB
Problemi



Problema: DB in uno stato conosciuto ?


Quando DEV1 fa girare i test DEV2 trova dati
 diversi ?
Ma io sto usando il dump del DB di prod... dovrei
 cancellare tutti i dati per eseguire un test ?
 Come riottengo il DB con i dati di prod ?
Come imposto un set di dati conosciuto ?
Come verifico il contenuto di una tabella prima e
Soluzioni



Conflitto tra sviluppatori: soluzioni
Un DBMS per sviluppatore
  DB Embedded, eseguito in locale
     HSQLDB, SQLITE, Derby DB
  DBMS come in prod anche in locale
     Oracle Express, MySQL, PostgreSQL, …
  DBMS centralizzato con un db per ogni sviluppatore
     MS SQL Server
        prod_db
        john_db, susy_db
Problemi



Accesso concorrente al DB: soluzioni
Un DB per sviluppatore
  DB Embedded, eseguito in locale
    HSQLDB, SQLITE, Derby DB
  DBMS come in prod anche in locale
    Oracle Express, MySQL, PostgreSQL, …
  DBMS centralizzato con un db per ogni sviluppatore
    MS SQL Server
       prod_db
       john_db, susy_db
Problemi



Set up struttura DB: soluzioni
Scenario evolutivo
  Anche gli script SQL fanno parte del sorgente!
     Definire il DB sempre attraverso DDL
     DB può così essere creato automaticamente
Scenario manutentivo
  Dump del DB di prod
     DDL per struttura per la creazione del DB
     DML per dati da eseguire ad ogni test
Problemi



Set up dati db: soluzioni
  SQL puro
     Esecuzione DML sul DB locale
     Esecuzione SQL per estrazione dati di verifca
     Verifica programmatica
  API
     DbUnit
     Dataset iniziale
     Confronto tra dataset
Lezione appresa


                      DBE
                                   =
                                   ?
DB0        DAO        DB1

         Esecuzione
Set Up      Test            Verifica

More Related Content

Similar to TDD DataBase

Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Gian Maria Ricci
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossaGian Maria Ricci
 
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...Codemotion
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps SerieGiulio Vian
 
Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3Martino Bordin
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009Massimiliano Dessì
 
Pomeriggio Entity Framework - Code First
Pomeriggio Entity Framework - Code FirstPomeriggio Entity Framework - Code First
Pomeriggio Entity Framework - Code FirstDomusDotNet
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL DatabaseEmanuele Zanchettin
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeomarcocasario
 
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 SecondiPortofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 SecondiPaolo Predonzani
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
 
Advanced ef code first 5.0 - EF@work
Advanced ef code first 5.0 - EF@workAdvanced ef code first 5.0 - EF@work
Advanced ef code first 5.0 - EF@workDomusDotNet
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Emanuele Zanchettin
 

Similar to TDD DataBase (20)

Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Database project alla riscossa
Database project alla riscossaDatabase project alla riscossa
Database project alla riscossa
 
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
Continuous Delivery Database - Diego Mauricio Lagos Morales - Codemotion Rome...
 
Perché è così difficile il deploy dei database - DevCast DevOps Serie
Perché è così difficile il deploy dei database  - DevCast DevOps SeriePerché è così difficile il deploy dei database  - DevCast DevOps Serie
Perché è così difficile il deploy dei database - DevCast DevOps Serie
 
Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3Entity Framework 4 vs NHibernate 3
Entity Framework 4 vs NHibernate 3
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009
 
MongoDB
MongoDBMongoDB
MongoDB
 
Pomeriggio Entity Framework - Code First
Pomeriggio Entity Framework - Code FirstPomeriggio Entity Framework - Code First
Pomeriggio Entity Framework - Code First
 
Ado net (versione 1 e 2)
Ado net (versione 1 e 2)Ado net (versione 1 e 2)
Ado net (versione 1 e 2)
 
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database2014.11.14 Implementare e mantenere un progetto Azure SQL Database
2014.11.14 Implementare e mantenere un progetto Azure SQL Database
 
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore RomeoHTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
HTML5 Italy: Mai più CSS, fogli di stile moderni con LESS - Salvatore Romeo
 
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 SecondiPortofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
DotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql ServerDotNetCampus - Continuous Integration con Sql Server
DotNetCampus - Continuous Integration con Sql Server
 
Advanced ef code first 5.0 - EF@work
Advanced ef code first 5.0 - EF@workAdvanced ef code first 5.0 - EF@work
Advanced ef code first 5.0 - EF@work
 
Data flow
Data flowData flow
Data flow
 
Easy Driver
Easy DriverEasy Driver
Easy Driver
 
Visual basic: odbc su MySql
Visual basic: odbc su MySqlVisual basic: odbc su MySql
Visual basic: odbc su MySql
 
Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2Implementare e mantenere un progetto azure sql database v.2
Implementare e mantenere un progetto azure sql database v.2
 

TDD DataBase

  • 1. TDD & Applicazioni Data Driven Applicazione Data Driven Path ben conosciuti per isolare l'accesso ai dati DAO, Active Record...
  • 2. TDD & Applicazioni Data Driven <<int> > DAO DAO DB Imp
  • 3. Come testare un DAO ? Idea Unit Test DB+DAO (in realtà Integration Test) DB in uno stato conosciuto Esecuzione “Unit Test” Verifica Nuovo stato del DB Dati selezionati dal DB
  • 4. Problemi Problema: DB in uno stato conosciuto ? Quando DEV1 fa girare i test DEV2 trova dati diversi ? Ma io sto usando il dump del DB di prod... dovrei cancellare tutti i dati per eseguire un test ? Come riottengo il DB con i dati di prod ? Come imposto un set di dati conosciuto ? Come verifico il contenuto di una tabella prima e
  • 5. Soluzioni Conflitto tra sviluppatori: soluzioni Un DBMS per sviluppatore DB Embedded, eseguito in locale HSQLDB, SQLITE, Derby DB DBMS come in prod anche in locale Oracle Express, MySQL, PostgreSQL, … DBMS centralizzato con un db per ogni sviluppatore MS SQL Server prod_db john_db, susy_db
  • 6. Problemi Accesso concorrente al DB: soluzioni Un DB per sviluppatore DB Embedded, eseguito in locale HSQLDB, SQLITE, Derby DB DBMS come in prod anche in locale Oracle Express, MySQL, PostgreSQL, … DBMS centralizzato con un db per ogni sviluppatore MS SQL Server prod_db john_db, susy_db
  • 7. Problemi Set up struttura DB: soluzioni Scenario evolutivo Anche gli script SQL fanno parte del sorgente! Definire il DB sempre attraverso DDL DB può così essere creato automaticamente Scenario manutentivo Dump del DB di prod DDL per struttura per la creazione del DB DML per dati da eseguire ad ogni test
  • 8. Problemi Set up dati db: soluzioni SQL puro Esecuzione DML sul DB locale Esecuzione SQL per estrazione dati di verifca Verifica programmatica API DbUnit Dataset iniziale Confronto tra dataset
  • 9. Lezione appresa DBE = ? DB0 DAO DB1 Esecuzione Set Up Test Verifica