07/07/2005
Tecnologie di Sviluppo per il Web
Programmazione su Basi di Dati: Conclusioni
versione 3.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
G. Mecca – [email protected] – Università della Basilicata
Programmazione su BD: Conclusioni >> Sommario
Sommario m Test
di Regressione m Operazioni di Costruzione m Gestione delle Date
G. Mecca - Tecnologie di Sviluppo per il Web
2
1
07/07/2005
Programmazione su BD: Conclusioni >> Test di Regressione
Test di Regressione mI
test di regressione ðin un’applicazione client-server la logica applicativa è concentrata nei DAO ðdi conseguenza i test devono essenzialmente verificare i DAO
m Attenzione
ðin questo caso i test devono essere eseguiti utilizzando il DBMS G. Mecca - Tecnologie di Sviluppo per il Web
3
Programmazione su BD: Conclusioni >> Test di Regressione
Test di Regressione m Due
conseguenze
ðdurata dei test e interferenze tra test m Durata
dei test
ðtipicamente i test richiedono più tempo per l’esecuzione (batterie di test molto ricche possono richiedere varie decine di secondi) ðpuò essere opportuno eseguire i test solo al rebuild G. Mecca - Tecnologie di Sviluppo per il Web
4
2
07/07/2005
Programmazione su BD: Conclusioni >> Test di Regressione
Test di Regressione m Interferenze
tra i test
ðper garantire la corretta esecuzione ciascun test deve essere eseguibile in condizioni di “isolamento” ðogni test deve cominciare con la base di dati in uno stato consistente (idealmente vuota) e lasciarla in uno stato consistente ðtutto quello che viene inserito deve essere cancellato alla fine del test e viceversa G. Mecca - Tecnologie di Sviluppo per il Web
5
Programmazione su BD: Conclusioni >> Test di Regressione
Test di Regressione m Inoltre
ðattenzione all’interferenza tra test e sistema in produzione ði test di aggiornamento devono essere eseguiti esclusivamente sulla basi di dati di sviluppo ðnon possono interferire con la base di dati una volta che il sistema è in produzione altrimenti produrrebbero risultati visibili agli utenti G. Mecca - Tecnologie di Sviluppo per il Web
6
3
07/07/2005
Programmazione su BD: Conclusioni >> Test di Regressione
Test di Regressione m Esempi
di test di regressione
ðTestDataSource ðTestDAOProprietario ðTestDAOAutomobile
>> it.unibas.aci.test G. Mecca - Tecnologie di Sviluppo per il Web
7
Programmazione su BD: Conclusioni >> Operazioni di Costruzione
Operazioni di Costruzione m Struttura
della cartella di progetto
ðanaloga a quella di una normale applicazione desktop m Operazioni
di costruzione
ðsostanzialmente invariate, a parte piccole differenze ðcambia il classpath per via del driver ðè utile poter utilizzare ant per le operazioni di inizializzazione della base di dati G. Mecca - Tecnologie di Sviluppo per il Web
8
4
07/07/2005
Programmazione su BD: Conclusioni >> Operazioni di Costruzione
Operazioni di Costruzione m Classpath
ðè necessario il riferimento al driver utilizzato ... G. Mecca - Tecnologie di Sviluppo per il Web
9
Programmazione su BD: Conclusioni >> Operazioni di Costruzione
Operazioni di Costruzione m Operazioni
sul DBMS: il task sql
ðconsente di effettuare transazioni sul dbms create database ${ant.project.name}; ... G. Mecca - Tecnologie di Sviluppo per il Web
10
5
07/07/2005
Programmazione su BD: Conclusioni >> Operazioni di Costruzione
Operazioni di Costruzione m Inizializzazione
della base di dati
ðè possibile utilizzare il task sql per eseguire uno script contenuto in un file m Un
possibile approccio
ðsalvare lo script sql nella cartella varie ðcon il nome {$ant.project.name}.sql ðes: acibase.sql
G. Mecca - Tecnologie di Sviluppo per il Web
11
Programmazione su BD: Conclusioni >> Operazioni di Costruzione
Operazioni di Costruzione
G. Mecca - Tecnologie di Sviluppo per il Web
12
6
07/07/2005
Programmazione su BD: Conclusioni >> Gestione delle Date
Gestione delle Date m Un
aspetto interessante
ðla gestione del tipo data nel DBMS m Tipi
SQL per date e ore
ðDATE ðTIME ðTIMESTAMP
G. Mecca - Tecnologie di Sviluppo per il Web
13
Programmazione su BD: Conclusioni >> Gestione delle Date
Gestione delle Date m Classi
fornite da JDBC
ðjava.sql.Date ðjava.sql.Time ðjava.sql.Timestamp mI
metodi di ResultSet ðDate getDate(String columnName) ðTime getTime(String columnName) ðTimestamp getTimestamp(String columnName)
G. Mecca - Tecnologie di Sviluppo per il Web
14
7
07/07/2005
Programmazione su BD: Conclusioni >> Gestione delle Date
Gestione delle Date m Attenzione
ðnell’applicazione verranno al solito utilizzati oggetti di tipo Calendar ðbasati su oggetti di tipo java.util.Date ði tipi java.sql.Date e java.sql.Time estendono java.util.Date e aggiungono fondamentalmente una funzionalità: la capacità di trasformarsi in una stringa accettabile per il DBMS G. Mecca - Tecnologie di Sviluppo per il Web
15
Programmazione su BD: Conclusioni >> Gestione delle Date
Gestione delle Date m Tipiche
esigenze applicative con le date
ðnel modello c’è un oggetto Calendar da inserire in una ennupla come valore DATE >> da Calendar a java.sql.Date ðda una ennupla viene prelevato un valore di tipo java.sql.Date da trasformare in un oggetto di tipo Calendar da mantenere nel modello >> da java.sql.Date a Calendar G. Mecca - Tecnologie di Sviluppo per il Web
16
8
07/07/2005
Programmazione su BD: Conclusioni >> Gestione delle Date
Gestione delle Date m Da
Calendar a java.sql.Date
ðCalendar calendar = new GregorianCalendar(2005, Calendar.MAY, 4); ðjava.sql.Date data = new java.sql.Date(calendar.getTimeInMillis()); ðString query = “insert into ... values“ + ... + “’” + data.toString() + “’,” + ...; ‘2005-05-01’
G. Mecca - Tecnologie di Sviluppo per il Web
17
Programmazione su BD: Conclusioni >> Gestione delle Date
Gestione delle Date m Da
java.sql.Date a Calendar
ðjava.sql.Date data1 = resultSet.getDate(“datanascita”); ðCalendar calendar1 = new GregorianCalendar(); ðcalendar1.setTime(data1);
G. Mecca - Tecnologie di Sviluppo per il Web
18
9
07/07/2005
Programmazione su BD: Conclusioni >> Sommario
Riassumendo m Test
di Regressione m Operazioni di Costruzione m Gestione delle Date
G. Mecca - Tecnologie di Sviluppo per il Web
19
Termini della Licenza
Termini della Licenza m
This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
m
Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
G. Mecca - Tecnologie di Sviluppo per il Web
20
10