Sviluppo software guidato dal testing. metodologie e strumenti



Documenti analoghi
Test di unità con JUnit4

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

Poca documentazione: uso di Story Card e CRC (Class Responsibility Collabor) Collaborazione con il cliente rispetto alla negoziazione dei contratti

tesi di laurea Anno Accademico 2009/2010 relatore Ch.mo prof. Porfirio Tramontana candidato Pasquale Ludi Matr. 534\000438

The Hitchhiker's Guide to testable code

Programmazione a Oggetti Lezione 10. Ereditarieta

Sviluppo di processi per l automatizzazione del testing per applicazioni Android

Organizzazione della lezione. Extreme Programming (XP) Lezione 19 Extreme Programming e JUnit. JUnit. JUnit. Test-Driven Development

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Programmazione Java Avanzata Spring - JDBC

La strada per sviluppare più rapidamente: Unit Test & Continuous Integration

Oggetti Lezione 3. aspetti generali e definizione di classi I

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

ACCESSO AL PORTALE VPN

DESIGN PATTERNS Parte 6. State Proxy

DBMS (Data Base Management System)

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

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

Java: Compilatore e Interprete

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Guida all Installazione del ProxyFatturaPA

Indice. Ingegneria dei requisiti e gestione agile. User-Centered Development Esempi di artefatti. Domain Driven Design. Design for Testability

Object Oriented Programming

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

Unit Testing. Giovanni Lagorio

Riepilogo delle modifiche di PA-DSS dalla versione 2.0 alla 3.0

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

13. Chain of Responsibility

Metodologie Agili per lo sviluppo di applicazioni Internet Distribuite. Agile Group DIEE, Università di Cagliari

introduzione al corso di ingegneria del software

Eclipse. Avviare un progetto e compilare un semplice programma

InfoWeb - Manuale d utilizzo per utente DIPENDENTE

Diagrammi dei package

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:

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Strumenti per il testing di applicazioni in ambiente Android

Protezione. Protezione. Protezione. Obiettivi della protezione

Raggruppamenti Conti Movimenti

AXWIN6 QUICK INSTALL v.3.0

Creare client statici

Programmazione in Java Parte I: Fondamenti

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Eventuali applicazioni future

dall argomento argomento della malloc()

JDBC versione base. Le classi/interfacce principali di JDBC

Eclipse e Subversion

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Algoritmi per suddividere il testo in righe in un editor di testo

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

Attivazione mailbox Procedura di configurazione

Guida alla. Gestione del Catalogo. per le Imprese

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

GovPay 2.0. Manuale Installazione

Corso Eclipse. Prerequisiti. 1 Introduzione

Guida alla configurazione

Strumenti di gestione del ciclo di vita del software

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Ingegneria del Software. Introduzione al pattern

Access. P a r t e p r i m a

Progetto di Informatica III. Introduzione al corso

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/

Realizzazione di una classe con un associazione

Manuale di Aggiornamento BOLLETTINO. Rel D1. DATALOG Soluzioni Integrate a 32 Bit

Sharpdesk V3.3. Guida all installazione Versione

Configurazione Client di posta Rev. 1 del 16/05/2009

GESTIONE DEI PROCESSI

Teleassistenza mediante PCHelpware

Manuale gestione Porta di Dominio OpenSPCoop 1.1

Analisi e sviluppo di un componente per un ESB open source

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

B.P.S. Business Process Server ALLEGATO C10

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

Java Virtual Machine

Anagrafe dei Rapporti Finanziari

Applicazione JobScheduler su DB SQL Milano, lì 14/09/2009

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

1.1 Installare un nuovo Client di Concept ed eseguire il primo avvio

Guida alla configurazione della posta elettronica. bassanonet.com

Gestione Automatizzata delle RDL

Contenuto del pacchetto

Programmazione Java Avanzata

WINDOWS XP. Aprire la finestra che contiene tutte le connessioni di rete in uno dei seguenti modi:

Programmazione a Oggetti Modulo B

Gestione delle tabelle

4.1 FAX Sollecito consegne via (Nuova funzione)

GUIDA UTENTE BILLIARDS COUNTER (Vers )

Tale attività non è descritta in questa dispensa

Piazza Multicanale. Caso di Studio: Progetto di sistema. Realizzato da: Addante Michele Daddario Fabio De Vito Francesco Cania Lagrotta Piero

Virtualizzazione VirtualBox su Host Windows

Object Oriented Software Design

Esercitazione n 4. Obiettivi

Assessorato alla Sanità ARCA Archivio Regionale Centri di costo Aziendali Linee guida

mondoesa;emilia Comunicazione delle operazioni rilevanti ai fini IVA (Spesometro) anno 2012: Note di installazione e/fiscali rel. 4.1.

Progettazione ed implementazione di un tool per lo sviluppo di applicazioni in Esperanto

Progetto di Ingegneria del Software 2. SWIMv2

Progetto di Ingegneria del Software 2. SWIMv2

Transcript:

Sviluppo software guidato dal testing metodologie e strumenti

Sommario Testing, software a oggetti Metodologie di sviluppo Test-Driven Development Customer Test-Driven Development Strumenti Open-Source: Java e.net xunit Mock Objects FIT Demo! 2

Testing In piccolo Testing di unità: classe e singoli metodi In grande Testing di integrazione (insieme di classi) Testing di accettazione (intero sistema o sottosistema)... nuovo significato Guida alla progettazione e specifica requisiti Attività svolta presto e spesso Coinvolti gli sviluppatori 3

Test-Driven Development [K.Beck, 1999 K.Beck, 2003] Attività di progettazione: scrivere test di unità prima del codice red: definire comportamento atteso, con asserzioni green: rendere eseguibili con successo i test, le asserzioni sono verificate refactor: effettuare refactoring mantenendo verificate le asserzioni, introduzione design pattern driver xunit oracle asserzioni sul comportamento atteso avvia l esecuzione unit stub isolamento dal resto del sistema 4

xunit: esempi junit 3.x public class TestMyMath extends TestCase { private MyMath fixture; protected void setup() { fixture = new MyMath(); public void testsum() { int result = fixture.sum(1, 2); assertequals(3, result); driver: estendere TestCase test: nomi metodi iniziano con test oracolo: metodi assertxx NUnit 2.2.x [TestFixture] public class TestMyMath { private MyMath fixture; [SetUp] public void setup() { fixture = new MyMath(); [Test] public void Sum() { int result = fixture.sum(1, 2); Assert.Equals(3, result); driver: attributo TestFixture test: attributo Test oracolo: classe Assert Struttura dei test: build, operate, check ( elenco strumenti su http://www.xprogramming.com/software.htm ) 5

Isolamento Sostituire dipendenze con istanze fittizie accesso a DBMS risorse file-system (locale, di rete, ecc...)... collaborazioni con altri oggetti Tipi di classi fittizie classi fake classi stub classi mock Testing basato sullo stato valore degli attributi valore di ritorno dei metodi Testing basato sulle interazioni invocazione metodi di altri oggetti (collaboratori) ordine, parametri, quante volte, ecc... 6

Mock Objects (dinamici): es. EasyMock 2.x (con junit) import static org.easymock.easymock.*;... public void testalchoolprohibitedunder18() { Seller fixture = new Seller(); Person teen = createmock(person.class); expect(teen.getage()).andreturn(14); replay(teen); boolean candrink = fixture.givealchoolto(teen); assertfalse(candrink); verify(teen); gestione mock e expectations: import statico classe EasyMock (Java 5) Rhino.Mocks 2.x (con NUnit) [Test] public void AlchoolProhibitedUnder18() { MockRepository mocks = new MockRepository(); Seller fixture = new Seller(); Person teen = mocks.createmock<person>(); Expect.Call(teen.Age).Return(14); mocks.replayall(); bool candrink = fixture.givealchoolto(teen); Assert.IsFalse(canDrink); mocks.verifyall(); gestione mock: oggetto MockRepository expectations: classe Expect Struttura dei test: build, expect, operate, check, verify ( elenco strumenti e articoli su http://www.mockobjects.com ) 7

Customer TDD [W.Cunningham, 1999 - L.Crispin, 2001 - J.Kerievsky, 2004] Attività di specifica dei requisiti Esempi di utilizzo del sistema (Specification by Examples) Regole del dominio (Domain) Sistema di interazione (UI e Presentation) Svolta con il cliente Serve un linguaggio semplice (non di programmazione) strumenti specifici FIT classi ponte verso il sistema 8

FIT+FitLibrary: principali fixture ColumnFixture, a colonne Ogni riga calcola valori su dati forniti Es: username, password, message? RowFixture, a righe Elenca insieme di dati Es: elenco utenti, username ActionFixture, con azioni Simula interazione con l utente Es: inserisci username e password, clicca login DoFixture, la più generale Sintassi flessibile, vicina al linguaggio naturale Es: crea un nuovo utente, con username e password 9

DEMO: SimpleLogin Sistema di autenticazione utenti registrati ad un servizio (es: web, intranet, ecc...) Fornisce una pagina di Login Credenziali: username e password (!!) UI gestisce le azioni dell utente Domain Controller Model View rappresentazione a video regole del dominio (autenticazione) 10

SimpleLogin: sviluppo CTDD: test di accettazione presentazione ( controller o presenter ) regole di dominio (servizio autenticazione, tipi di errori) Fixture di FIT (per eseguire i test) TDD: test di unità di ogni classe stub e mock per le dipendenze Strumenti, Open-Source in Java FIT, FitLibrary, FitNesse junit e EasyMock Eclipse 11

DEMO!! 12

Cosa manca? TDD delle View UI tool specifici (AWT/Swing,.NET, web) TDD del DAL persistenza (DMBS/SQL, XML/XPath/XQuery)... testing di integrazione Efficacia dei test misura copertura istruzioni (EMMA, NCover) analisi mutazionale (Jester, Nester) Processo di sviluppo extreme Programming (XP), Scrum, Agile UP 13

Riferimenti TDD by example TDD a pratical guide Agile software development Refactoring to patterns FIT for developing software XP explained, 2ed. http://www.testdriven.com (notizie, articoli e recensioni strumenti) http://www.objectmentor.com/resources/ (articoli, esempi e capitoli di ASD)... e quelli citati per xunit e Mock Objects alcuni blog: http://codebetter.com/blogs/jeremy.miller/ (US) http://www.ayende.com/blog/ (Israele) http://www.jpboodhoo.com/blog/ (UK-Canada) Chiarimenti? Mi trovate qui: jacopo.franzoi@gmail.com http://blogs.ugidotnet.org/papo 14