Testing. Esempio. Esempio. Soluzione 1. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009. Come fare???

Documenti analoghi
Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Programmazione con Java

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Programmazione ad Oggetti. Programmazione ad Oggetti. JUnit è un ambiente di test per programmi Java. Sviluppato da Kent Beck

Test di unità con JUnit4

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

JUNIT. Angelo Gargantini Info 3 B 2011

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Insieme.java. Printed by Paolo. Feb 24, 04 16:44 Page 1/1 class Insieme { private int[] elementi; Tuesday February 24, /10

Metodi statici. Dichiarazione e chiamata di metodi statici

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Esercitazione n 2. Obiettivi

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Java: Compilatore e Interprete

Fondamenti di Informatica I

Esercizi della lezione 5 di Java

Esempio: Costruttori ed ereditarietà

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2016/ Giugno 2017

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Esercitazione 15. Il problema dello Sleeping Barber

Università degli Studi di Roma La Sapienza, Facoltà di Ingegneria. Corso di INGEGNERIA DEL SOFTWARE (Ing. Informatica, Nuovo Ordinamento)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Richiami di Fondamenti di Informatica - 1

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Passaggio di parametri

Algoritmi di Ricerca. Esempi di programmi Java

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a febbraio 2013

Array mono- e bi-dimensionali Cicli while e do-while

Alberi Binario in Java

Uguaglianza e copia di oggetti

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Esempi di Problemi Iterativi

Laboratorio di Programmazione Ottobre. Simone Zaccaria

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015

/***************************** FILE: Quiz.java *****************************/ public class Quiz { private String text; private int score;

Programmazione con Java

Le basi del linguaggio Java

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002. Sistemi Operativi Corsi A e B. Esercitazioni 7 e 8

5 - Istruzioni condizionali

Laboratorio di Programmazione 1 [Java]

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Esonero di Informatica I. Ingegneria Medica

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a gennaio 2012

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

Costrutti iterativi. Utilizzo dei costrutti iterativi

Oggetti Composti (1) Oggetti Composti (2)

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Decomposizione per scelta

Programmazione orientata agli oggetti Oggetti Composti. Oggetti composti

Iterazioni. L istruzione while. while (condition) istruzione

Laboratorio di Programmazione 1 [Java]

Esempio 2: Subtyping

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Esempi di Problemi Iterativi

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Laboratorio di Programmazione. Programmini più complessi

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Agenda

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione 1 A.A. 2015/2016

Esempio: L EURO-CONVERTITORE (1) Scopo

Calcolare x n = x x x (n volte)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Le Stringhe. Usare la classe java.lang.string

Esercizio 1 - Componente Matrice (1/3) Esercizio 1 - Componente Matrice (3/3) Esercizio 1 - Componente Matrice (2/3)

Esempio: Interfacce. Gioco Interfacce

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

MVC: esempio in java. views e controllers in javax.swing

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Esempio: Interfacce. Gioco Interfacce

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Il linguaggio Java Istruzioni di Controllo

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Riferimenti e risorse

Esempi. Esempio utilizzo di classi

Transcript:

Università degli Studi di Bologna Facoltà di Ingegneria Testing Prima di rilasciare una qualsiasi applicazione/librerie è buona norma effettuare una serie di test opportuni Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Ogni parte di codice distribuita andrebbe testata in modo da verificarne il corretto funzionamento Il testing può essere realizzato in due modi: Realizzando applicazioni di test specifiche Utilizzando framework di supporto per la realizzazione di test da far girare in modo automatico 2 Esempio Esempio public class Counter private int value; public Counter() value = 0; public int getvalue() return value; public void inc() value++; public void reset() value = 0; class Counter Metodi da testare! Counter - value: int + getvalue() : int + inc() : void + reset() : void Si vogliono testare i metodi inc() e reset() in modo tale il comportamento del contatore risulti coerente con quanto ci si aspetta Come fare??? 3 4 Soluzione 1 public static void main(string[] args) System.out.println( Initial: + counter.getvalue()); System.out.println( Current: + counter.getvalue()); System.out.println( Current: + counter.getvalue()); Initial: 0 Current: 2 Current: 0 Soluzione 1 Il funzionamento è stato testato, il contatore funziona!!!! Il test si basa su un controllo manuale del comportamento analizzando l output dell applicazione di test stessa Codice inutilmente replicato per le stampe ed i controlli Praticamente ingestibile con componenti complessi. Difficile testare tutto! 5 6

Soluzione 2 Soluzione 2 public static boolean CheckCounter() boolean ok = true; if (counter.getvalue()!= 0) System.out.println( Error in Initialization. ); if (counter.getvalue()!= 2) System.out.println( inc() not working. );... if (counter.getvalue()!= 0) System.out.println( reset() not working ); return ok; public static void main(string[] args) if(checkcounter()) System.out.println( OK! ); else System.out.println( FAILED! ); OK! 7 8 Soluzione 2 Il funzionamento è stato testato, il contatore funziona!!!! Il controllo è effettuato dall applicazione di test che ritorna successo o insuccesso. Codice inutilmente replicato per le stampe e i controlli Non integrabile con gli ambienti di sviluppo JUnit Cos è? Un piccolo framework di test scritto in Java composto da una serie di classi che compiono il lavoro più ripetitivo (es: contare e riportare gli errori e i test falliti, far girare i test in batch, ecc.). Com è? Consente di effettuare il cosiddetto Unit Testing (da cui il nome) ovvero di effettuare verifiche di funzionamento di piccole porzioni, o unità, di codice (un metodo, una classe, max un componente tipicamente una classe). Non automatizzabile esecuzione automatica dei test Dov è? E integrato all interno dei principali ambienti di sviluppo, Eclipse compreso ma funziona anche a linea di comando! 9 10 JUnit Definiamo una Test Fixture, un entità che contiene un insieme di casi di test volti a verificare il funzionamento di un unità di codice (una classe che contiene i test) Una Fixture è realizzata tramite una classe i cui metodi possono essere i casi di test di cui sopra JUnit Test Runner Ogni metodo di test è riconosciuto tramite annotation e NON per nome. È così possibile dare nomi significativi ai metodi di test! L ordine di esecuzione dei metodi di test è NON DETERMINISTICO. D ora in avanti Test Fixture e Classe di Test saranno considerati sinonimi 11 12

Assert Sono i metodi di verifica Metodo assertequals(expected, current) asserttrue(condition) assertfalse(condition) assertnull(value) assertnotnull(value) assertsame(expected, current) assertnotsame(expecte d, current) fail Descrizione Verifica che valore sia uguale al valore che ci si aspetta. (Utilizza il metodo equals per il confronto) Verifica che la condizione sia vera Verifica che la condizione sia false Verifica che il valore sia nullo Verifica che il valore sia nullo Verifica che il riferimento sia uguale al riferimento che ci si aspetta Verifica che il riferimento non sia uguale al riferimento che ci si aspetta Fa fallire il test 13 Eclipse facilita la creazione dei test tramite wizard Tasto destro sulla classe che si intende testare New Junit Test Case 14 Il Wizard permette la selezione dei metodi della classe da testare così da creare lo scheletro della Fixture di test. Selezione dei metodi di cui si vogliono effettuare i test IMPORTANTE!!!!! Impostare JUnit 4 altrimenti la sintassi per i test è DIVERSA!!! Per creare i metodi di After, Before, AfterClass, BeforeClass Viene creato lo scheletro dei test, uno per ogni metodo selezionato da testare 15 16 Esecuzione in Eclipse import static org.junit.assert.*; import org.junit.*; import core.counter; Pulsante run as ->Junit Test sulla Fixture che si intende Eseguire Verde per i test passati Rosso per i falliti Metodo di test riconosciuto public class CounterTest tramite Annotation public void inittest() Verifica che il valore sia quello atteso 17 18

public void inctest() int expected = 2; public void resettest() 19 20 Il funzionamento è stato testato, il contatore funziona!!!! Il controllo è effettuato dall applicazione di test che ritorna successo o insuccesso. Integrazione con IDE (Es. Eclipse) Automatizzazione dei test Fattorizzazione dei test È possibile eseguire alcune operazioni comuni: Prima e dopo l esecuzione di tutti i test di una classe di test Prima e dopo l esecuzione di un test singolo Tali operazioni sono identificabili sempre tramite annotation che vengono identificate dal motore di test: Class: marca un metodo statico che viene eseguito PRIMA di tutti i test contenuti in una classe di test : marca un metodo che viene eseguito PRIMA di ogni metodo di test @After: marca un metodo che viene eseguito DOPO ogni metodo di test @AfterClass: marca un metodo statico che viene eseguito DOPO tutti i test contenuti in una classe di test 21 22 import static org.junit.assert.*; import org.junit.*; private Counter counter; public void setup() counter = new Counter(); Viene Eseguito prima di ogni metodo di test fattorizza codice comune a tutti i test public void inittest()... 23... public void inctest() int expected = 2; public void resettest() 24

Class @After @After @AfterClass Esecuzione dei Test Codice non replicato sfruttando sapientemente Class,, @After, @AfterClass Test Test 25 26