Testing delle classi. MySQL DBMS
|
|
|
- Elisa Bianchini
- 9 anni fa
- Visualizzazioni
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 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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
JDBC per l accesso Java a DB. Tito Flagella [email protected]
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
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
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
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.
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
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
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
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
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
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
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.
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,
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
Guida introduttiva su Eclipse. Ing. Marco Dell'Unto [email protected]
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ò
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,
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
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,
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
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
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
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
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
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
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
