Testing delle classi. MySQL DBMS

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Testing delle classi. MySQL DBMS"

Transcript

1 Testing delle classi Corso di Principi di Progettazione del Software, a.a. 2015/16 17 novembre 2015 Ing. Roberto Vergallo 1 MySQL DBMS MySQL Community Server MySQL Workbench 2 1

2 Java Database Connectivity (JDBC) An interface to communicate with a relational database Allows database agnostic Java code Treat database tables/rows/columns as Java objects JDBC driver An implementation of the JDBC interface Communicates with a particular database Java app JDBC calls JDBC JDBC driver driver Database commands Database Database Install driver Eclipse JDBC setup Download MySQL JDBC driver from Unzip mysql-connector-xxx.jar Add mysql-connector-xxx.jar to Eclipse project Project à Properties à Java Build Path à Libraries à Add External JARs 2

3 JDBC steps 1. Connect to database 2. Query database (or insert/update/delete) 3. Process results 4. Close connection to database 1. Connect to database Load JDBC driver Class.forName("com.mysql.jdbc.Driver").newInstance(); Make connection Connection conn = DriverManager.getConnection(url); URL Format: jdbc:<subprotocol>:<subname> jdbc:mysql:// /mydb?user=user&password=password 3

4 2. Query database a. Create statement Statement stmt = conn.createstatement(); stmt object sends SQL commands to database Methods executequery() for SELECT statements executeupdate() for INSERT, UPDATE, DELETE, statements b. Send SQL statements stmt.executequery( SELECT ); stmt.executeupdate( INSERT ); 3. Process results Result of a SELECT statement (rows/columns) returned as a ResultSet object ResultSet rs = stmt.executequery("select * FROM users"); Step through each row in the result rs.next() Get column values in a row String userid = rs.getstring( userid ); int type = rs.getint( type ); users table userid firstname lastname password type Bob Bob King cat 0 John John Smith pass 1 4

5 Print the users table ResultSet rs = stmt.executequery("select * FROM users"); while (rs.next()) { String userid = rs.getstring(1); String firstname = rs.getstring( firstname ); String lastname = rs.getstring( lastname ); String password = rs.getstring(4); int type = rs.getint( type ); System.out.println(userid + + firstname + + lastname + + password + + type); } users table userid firstname lastname password type Bob Bob King cat 0 John John Smith pass 1 Add a row to the users table String str = "INSERT INTO users VALUES('Bob', 'Bob', 'King', 'cat', 0) ; // Returns number of rows in table int rows = stmt.executeupdate(str); users table userid firstname lastname password type Bob Bob King cat 0 5

6 4. Close connection to database Close the ResultSet object rs.close(); Close the Statement object stmt.close(); Close the connection conn.close(); JDBC API Documentation References getstart/gettingstartedtoc.fm.html 6

7 Testing del software Tradizionalmente, prima fase del testing a mano System.out.println( Valore di a = + a); poi, test funzionali 13 Suite Test Necessità di test automatici: tutti i Test sono raggruppati in una Suite che deve poter essere eseguita automaticamente e che cresce man mano che il sistema viene sviluppato, aggiungendo sempre nuovi Test. Perché? Il poterli eseguire tutti in un tempo ragionevole premendo un pulsante è importante per ottenere tutte le volte che è necessario un feedback sull integrità del sistema. 14 7

8 Testing automatico Per ottenere il massimo vantaggio dai Test, questi ultimi devono essere eseguiti in modo automatico. Un Test automatico deve essere in grado di: 1. eseguire senza intervento manuale le operazioni di generazione dei dati di Test (Fixture) 2. l elaborazione dei dati 3. la verifica dei risultati ottenuti 4. Eventualmente, la registrazione dei risultati Garanzia della ripetibilità dei test Se le classi coinvolte nel Test non vengono modificate, gli stessi Test ripetuti anche diverse volte producono sempre gli stessi risultati. Questo non è garantito con altri tipi di test 15 Test di Unità I Test di Unità vengono definiti e scritti dai programmatori durante lo sviluppo del codice Consentono di verificare il corretto funzionamento di ogni singolo elemento del quale è costituito il sistema. Tali unità corrispondono di solito ad una classe oppure ad un modulo più complesso, per esempio un Package. 16 8

9 Junit - Introduzione Framework Java per esecuzione di Test di Unità e Regressione Il Test di Regressione ha come obiettivo quello di verificare che una nuova versione di un programma non fallisca nessun test di quelli già effettuati su versioni precedenti dello stesso Fornisce strumenti per verificare la validità di asserzioni Permette di eseguire più casi di test per un singolo metodo Permette di eseguire test in modo semplice e veloce (uso di test Suite) Download JUnit: 17 Junit Guida all Uso JUnit rappresenta il Framework di Test più diffuso in ambiente Java. Le classi che compongono il Framework sono contenute nella libreria junit.jar. Per poter eseguire dei Test con JUnit è necessario scrivere le classi di Test seguendo alcune regole. I metodi di Test, per essere riconosciuti come tali da JUnit, devono avere un nome che inizia con test, ossia devono essere del tipo testxxx. 18 9

10 Junit Guida all Uso (cont.) Per creare test in JUnit bisogna definire un metodo pubblico per ogni metodo da testare, facendolo precedere dalla Test definiti tramite l uso della famiglia di ASSERTXXX() asserttrue(<condizione>) assertfalse(<condizione>) assertequals(<obj1>,<obj2>) fail(<message>) Esempio classe di Test Una semplice classe di Test si presenta nel seguente modo: public class ProvaTest public void testmiometodo() { fail("not yet implemented"); } } 20 10

11 Suite Test Un altra caratteristica di JUnit è la possibilità di raggruppare i Test in Suite e di eseguire tali Suite singolarmente o tutte insieme. Questa funzionalità è molto utile quando si deve verificare la funzionalità dell intero sistema, per esempio nella fase di integrazione giornaliera. istanziare un oggetto di tipo TestSuite; aggiungere i test alla suite invocando il metodo addtest(test) sull'oggetto istanziato 21 setup() I dati sui quali vengono effettuate le elaborazioni all interno di un metodo di Test al fine di verificare il corretto funzionamento di una certa parte del sistema, devono essere opportunamente definiti e inizializzati. Se si individua un insieme di variabili comuni a tutti i metodi di una classe di Test, queste vengono inizializzate all interno del metodo setup(). Tali variabili sono dette la Fixture del Test. Il metodo setup() viene richiamato da JUnit prima dell esecuzione di ciascun metodo di Test. In questo modo, eventuali modifiche dei dati all interno di un metodo non avranno nessuna influenza sugli altri metodi di Test. Ovviamente non si può fare affidamento su setup() nei casi in cui non esista una Fixture comune a tutti i metodi di Test

12 teardown() Il metodo setup() ha anche una controparte che è il metodo teardown(). Quest ultimo viene richiamato da JUnit dopo l esecuzione di un qualunque metodo di Test, allo scopo di consentire al programmatore il rilascio di eventuali risorse allocate nel metodo setup(). Per esempio, se all interno del metodo setup() viene aperta una connessione a un Database, sarebbe conveniente chiuderla all interno del metodo teardown() prima di ricrearne un altra per un altro metodo di Test. 23 Errori JUnit JUnit prevede due tipi di errori: gli errori e i fallimenti. I primi sono problemi gravi che bloccherebbero il funzionamento del sistema, come l Overflow di memoria o il lancio di un eccezione dovuta per esempio ad un File non trovato, mentre i secondi derivano dal non soddisfacimento di condizioni richieste nel Test, come l uguaglianza tra due variabili

13 Verifiche dei risultati JUnit non richiede verifiche manuali dei risultati. Dalla classe TestCase vengono ereditati per esempio i metodi assertequals() per la verifica dell uguaglianza di diversi tipi di dati. Il Test si riconduce alla verifica dell uguaglianza tra il dato atteso e quello calcolato. Se i due dati differiscono, verrà segnalato un fallimento con la descrizione del problema e l indicazione del punto in cui si è verificato. 25 Metodi assertx static void asserttrue(boolean test) static void assertfalse(boolean test) assertequals(expected, actual) assertsame(object expected, Object actual) assertnotsame(object expected, Object actual) assertnull(object object) assertnotnull(object object) fail() 26 13

Esempio di architettura software

Esempio di architettura software Esempio di architettura software Corso di Principi di Progettazione del Software, a.a. 2012/13 29 novembre 2016 Ing. Roberto Vergallo 1 Esempio di architettura software View (GUI) Action Listener Business

Dettagli

Esercitazione su JDBC

Esercitazione su JDBC Esercitazione su JDBC Basi di Dati L Ingegneria dei Processi Gestionali (Ilaria Bartolini - Roberto Cabras) come usare SQL (1) Le istruzioni SQL possono essere eseguite interattivamente Ese JDBC 2 come

Dettagli

Basi di Dati Esercitazione JDBC

Basi di Dati Esercitazione JDBC Basi di Dati Esercitazione JDBC 30 Maggio 2006 Ing. Paolo Papotti Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello)

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Laboratorio di reti II: Gestione di database lato server

Laboratorio di reti II: Gestione di database lato server Laboratorio di reti II: Gestione di database lato server Stefano Brocchi [email protected] 23 marzo, 2009 Stefano Brocchi Laboratorio di reti II: Database 23 marzo, 2009 1 / 32 Uso di database lato

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

Tecnologia e Applicazioni Internet 2011/12

Tecnologia e Applicazioni Internet 2011/12 Tecnologia e Applicazioni Internet 2011/12 Lezione 4 - Persistenza Matteo Vaccari http://matteo.vaccari.name/ [email protected] Perché usare un DB relazionale? Per l accesso concorrente ai dati

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca [email protected] Laboratorio N 4 Cos è JDBC 2 JDBC significa Java Database Connectivity Standard definito da Sun MicroSystems per connettere programmi

Dettagli

Capitolo 5. Soluzione: Soluzione in C:

Capitolo 5. Soluzione: Soluzione in C: Capitolo 5 Esercizio 5.1 Realizzare una procedura in un linguaggio di programmazione di alto livello che tramite SQL Embedded elimina dalla tabella DIPARTIMENTO l'elemento che ha il nome che viene fornito

Dettagli

JDBC. A. Bechini 2004. Accesso a DataD con Java

JDBC. A. Bechini 2004. Accesso a DataD con Java JDBC Accesso a DataD atabase ase con Java Utilizzo di DB da applicazioni esterne Un DB contiene e gestisce dati, importanti per varie operazioni supportate da applicazioni software Come può un applicazione

Dettagli

Accesso ad un db con JDBC da java

Accesso ad un db con JDBC da java Per accedere al database MySql abbiamo utilizzato l interfaccia mysqli messa a disposizione dal linguaggio php specificatamente per tale linguaggio, che fornisce tutte le funzioni per accedere ai dati

Dettagli

JDBC Driver Manager. JDBC Architettura generale. JDBC - Tipi di dato. JDBC - Flusso applicativo. JDBC - Tipi di dato. ODBC Driver. Livello di gestione

JDBC Driver Manager. JDBC Architettura generale. JDBC - Tipi di dato. JDBC - Flusso applicativo. JDBC - Tipi di dato. ODBC Driver. Livello di gestione Interfacce DBMS in breve Corso di BD1 Ripasso comandi applicazione JDBC Manipolazione estensioni OR in JDBC Interfacce per DBMS Problema: Far accedere un applicazione ad una base di dati Soluzione: Librerie

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna [email protected] Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Domande utili alla preparazione dell orale di Informatica all Esame di Stato Domande utili alla preparazione dell orale di Informatica all Esame di Stato 1.Al livello fisico un database si appoggia ai files per contenere i suoi dati? 2.Esistono altri modelli di organizzazione oltre

Dettagli

Introduzione JDBC interfaccia java.sql driver caricare i driver

Introduzione JDBC interfaccia java.sql driver caricare i driver J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene

Dettagli

JDBC per l accesso Java a DB. Tito Flagella [email protected]

JDBC per l accesso Java a DB. Tito Flagella tito@link.it JDBC per l accesso Java a DB Tito Flagella [email protected] JDBC fornisce una libreria standard per l accesso a database relazionali Non è un acronimo ufficiale ma è comunemente interpretato come Java DataBase

Dettagli

JDBC: SQL nei linguaggi di programmazione

JDBC: SQL nei linguaggi di programmazione JDBC: SQL nei linguaggi di programmazione Matteo Cannaviccio [email protected] Basi di Dati I 2016/17 Panoramica 1. Dialogare con un DBMS Applicazioni software DBMS 2. Introduzione a JDBC Scopo

Dettagli

Corso di Informatica Modulo T3 B2 - Database in rete

Corso di Informatica Modulo T3 B2 - Database in rete Corso di Informatica Modulo T3 B2 - Database in rete 1 Prerequisiti Programmazione web Applicazione web Modello OSI Architettura client/server Conoscenze generali sui database Tecnologia ADO in Visual

Dettagli

Come trattare il risultato di un comando SQL (relazioni) che

Come trattare il risultato di un comando SQL (relazioni) che USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Applet anatomia di un applet cenni di html La libreria JDBC per l accesso ai database il package java.sql 213 Applet Un applet è una applicazione Java che ha una forma particolare

Dettagli

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi. Introduzione a JDBC JDBC (Java Database Connectivity) è la parte delle API di J2SE che fornisce le primitive per la connessione a basi di dati relazionali: si inviano comandi SQL; si recuperano i risultati

Dettagli

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement JDBC Programmazione in Ambienti Distribuiti V 1.4 Marco Torchiano 2006 Uso di JDBC Caricamento della classe driver Class.forName() Apertura della connessione DriverManager.getConnection() Creazione di

Dettagli

ASP e Database. A cura di Michele Cavalieri

ASP e Database. A cura di Michele Cavalieri ASP e Database A cura di Michele Cavalieri (fonte http://www.aspitalia.com/articoli/db/introduzione.aspx ) Un aspetto fondamentale di ASP è l'utilizzo dei componenti, che non sono altro che ActiveX come

Dettagli

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO 8- Programmazione di una base di dati attraverso JDBC Introduzione ai differenti approcci - JDBC: Architettura e Programmazione Introduzione Nella pratica gli utenti finali accedono al contenuto di una

Dettagli

Connessione con MySQL

Connessione con MySQL Connessione con MySQL Architettura Server-Side Eventuali parametri cookie sessioni Elaborazione SELECT... DATABASE Quando i dati sono molti e la persistenza deve andare altre la sessione o la durata

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm Dott.ssa Francesca A. Lisi dott.ssa Francesca A.

Dettagli

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MYSQL E PHP Per poter interagire con un database in rete mediante uno script php bisogna innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione MySQL_connect(nome del host, nome utente,

Dettagli

Connesione ad un Database Access con PHP. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Connesione ad un Database Access con PHP. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Connesione ad un Database Access con PHP Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni La connessione al Database Access L accesso ai dati di Access da PHP può avvenire

Dettagli

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto [email protected]

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto marco.dellunto@iet.unipi.it Guida introduttiva su Eclipse Ing. Marco Dell'Unto [email protected] Introduzione Eclipse è un ambiente di sviluppo (IDE) multilinguaggio e multipiattaforma scritto in Java. E Open Source. Può

Dettagli

Eccezioni ed asserzioni

Eccezioni ed asserzioni Eccezioni ed asserzioni I concetti relativi ad eccezioni, errori ed asserzioni e le relative gestioni, permettono allo sviluppatore di scrivere del software robusto, ovvero che riesca a funzionare correttamente,

Dettagli

2011 Politecnico di Torino 1

2011 Politecnico di Torino 1 SQL per le applicazioni Esercitazione PHP e MySQL Svolgimento D B M G Passi di risoluzione creazione e popolamento della base di dati Creazione di un script SQL Passo 2 creazione di una query d interrogazione

Dettagli

MySQL Server e Workbench.

MySQL Server e Workbench. MySQL Server e Workbench [email protected] MySQL MySQL o Oracle MySQL è un Relational database management system (RDBMS) Multisessione Multiutente MySQL viene sviluppato e gestito come software open-source,

Dettagli

Scheda 15 Accedere ai DataBase con JDBC

Scheda 15 Accedere ai DataBase con JDBC Scheda 15 Accedere ai DataBase con JDBC G IOVANNI PULITI Panoramica: che cosa è JDBC La API JDBC, introdotta per la prima volta con il JDK 1.0, è una API che permette di accedere a database relazionali

Dettagli

La connessione ai database MySQL tramite script PHP versione 5.5

La connessione ai database MySQL tramite script PHP versione 5.5 La connessione ai database MySQL tramite script PHP versione 5.5 Php è un linguaggio di scripting che estende le funzionalità del server Web, mentre MySQL è un programma server che si occupa della gestione

Dettagli

Connessione con MySQL

Connessione con MySQL Connessione con MySQL Architettura Server-Side Eventuali parametri cookie sessioni Elaborazione SELECT... DATABASE Quando i dati sono molti e la persistenza deve andare altre la sessione o la durata

Dettagli

Indice. Java. JDBC è l interfaccia di base standard di Java ai database relaionali

Indice. Java. JDBC è l interfaccia di base standard di Java ai database relaionali Java java database connectivity -- jdbc G. Prencipe [email protected] Indice JDBC: Java Data Base Connectivity connessioni a basi di dati esecuzione di statement SQL accesso ai result set JDBC: Java

Dettagli

PL/SQL e PLpgSQL. Audiolezione 28b. Necessità. Soluzioni. Embedded SQL. Alfio Ferrara - Stefano Montanelli. Estensioni procedurali di SQL

PL/SQL e PLpgSQL. Audiolezione 28b. Necessità. Soluzioni. Embedded SQL. Alfio Ferrara - Stefano Montanelli. Estensioni procedurali di SQL Audiolezione 28b Corso di Basi di Dati e Laboratorio PL/SQL e PLpgSQL Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Estensioni procedurali di SQL Necessità Disporre di

Dettagli

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017 Laboratorio Progettazione Web PHP e MySQL Andrea Marchetti IIT-CNR 2016/2017 Architettura di una applicazione Web Browser Web HTTP Server Web Dati Presentation Application Storage PHP e DataBase Quando

Dettagli

DATABASE PER IL WEB. Programmazione Web 1

DATABASE PER IL WEB. Programmazione Web 1 DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca

Dettagli