Informatica. Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven
|
|
|
- Graziano Fadda
- 9 anni fa
- Visualizzazioni
Transcript
1 Tesi di laurea in Informatica Progettazione ed implementazione di un tool per il supporto al debug nella pratica di sviluppo Test Driven Relatore Ch.mo Prof. Giuseppe Trautteur Candidato Gioacchino Del Prete 566/219 Tutor aziendale Ing. Massimo Ficco Azienda ospitante
2 Contesto e Obiettivi Si stima che per fare debugging si spenda il 50% del tempo totale dell'intero sviluppo software. Nel caso del processo TDD(Test Driven Development), esso ha un forte impatto sul costo di sviluppo del sistema. Progettare ed implementare una tecnica di base per uno schema generale per la localizzazione dei fault. Ridurre il costo del processo di Debug nello sviluppo TDD. 1/16
3 Debug Il processo di Debug segue la fase di convalida e verifica di un software e permette di localizzare e correggere gli errori. Test Case Esecuzione Test Case Regressione Bug corretto Bug localizzato Raffinare ipotesi Bug non localizzato Error report Ipotesi verificate Ipotesi non verificate Si inizia dalle ipotesi 2/16
4 Test Driven Development TDD è una pratica agile che ha come obiettivo il design del software e non la sua validazione. TDD può essere riassunto in una sola formula: Test-First Programming+Refactoring 3/16
5 Processo di Debug in TDD Si scrivono singole Unità a basso accoppiamento: Tempo per il Debug di una Unità diminuisce Continua localizzazione e correzione dei bug Think Red Bar Green Bar Refactoring Debug Test failed Think: come dovrebbe comportarsi il codice (Design) Red Bar: focalizza il comportamento dell unità e l interfaccia pubblica (Write test) Green Bar: implementazione della funzionalità (Implementation) Refactoring: semplificazione e miglioramento della funzionalità sviluppata (Rewrite code so Refactoring: semplificazione e miglioramento della funzionalità sviluppata (Rewrite code so elegant) 4/16
6 Modello Comportamentale Per automatizzare la localizzazione degli errori bisogna avere una descrizione formale del sistema: Modello Comportamentale Think Red Bar Green Bar Refactoring Debug Test failed Nella tecnica proposta il modello comportamentale è ottenuto dalle tracce di esecuzioni, con strumenti di analisi dinamica 5/16
7 Daikon Per ricavare il modello comportamentale nella tecnica proposta si è utilizzato Daikon: E un motore inferenziale Produce un insieme di invarianti di I/O Template di invarianti utilizzati da Daikon Siano x,y,z variabili Siano a,b,c costanti Valori cost. x=a x є a; b; c Intervallo a x b Relazioni y=ax+b x y x=fn(y) Equazioni z=ax+by+c 6/16
8 Violazioni Le differenze tra invarianti di un modello comportamentale registrato in versioni successive del sistema software sono dette: Violazioni 7/16
9 La tecnica proposta La tecnica proposta per automatizzare il processo di Debug nel TDD, fa quindi uso delle violazioni ricavate dalla differenza di invarianti ricavati tra la fase di development e la fase di regression del sistema software. Dall insieme delle violazioni risultante con l ausilio di una metrica si cerca di stabilire i possibili FAULT!!! Think Red Bar Green Bar Refactoring Tecnica proposta 8/16
10 Scrematura delle violazioni L insieme delle violazioni rappresentano i possibili fault introdotti ma da esso si devono scremare con l ausilio di una metrica: 1.I possibili falsi positivi (nuovi requisiti) 2.Fault aggiunti 3.Fault già esistenti 9/16
11 Metrica proposta 1/2 Scopo della metrica è quello di rilevare quanti più possibili fault dall insieme delle violazioni. Massimizzare il rapporto di precision 10/16
12 Metrica proposta 2/2 Ecco come la metrica attribuisce la probabilità ad una violazione di essere un fault 11/16
13 Architettura del Tool Per testare, misurare: sperimentare la tecnica proposta è stato progettato ed implementato un tool in linguaggio Java 12/16
14 Flusso di esecuzione del Tool 13/16
15 Sperimentazione 1/2 La tecnica è stata sperimentata con la Fault Injection sul software opensource JFreeChart. La violazione che causa questo tipo di errore iniettato è stato rilevato dalla metrica ed indicato come violazione con la più alta probabilità di essere il fault che porta l applicazione in uno stato di errore. 14/16
16 Sperimentazione 2/2 In generale gli esperimenti condotti hanno dimostrato che la metrica rileva sempre la violazione causa del fault iniettato ma non sempre indica tale violazione come la più probabile causa di errore. Infatti si presentano tre casi: 1.La violazione rilevata ed indicata come la più probabile causa di errore 2.La violazione rilevata ma non risultante la più probabile causa di errore 3.La violazione rilevata ma indicata come la meno probabile causa di errore 15/16
17 Sviluppi futuri di sviluppare un raffinamento successivo della metrica proposta p ed adottata di diminuire la granularità della tecnica arrivando fino ad avere una granularità sulle variabili. si potrebbe sviluppare un meccanismo per analizzare anche le invarianti di interazione ione. Una comunity open-source Un plug-in per gli IDE di sviluppo più utilizzati 16/16
18 Grazie per l attenzione
Sviluppo di un'interfaccia grafica per l'automatizzazione di campagne di software fault injection. relatore Ch.mo prof.
tesi di laurea triennale Sviluppo di un'interfaccia grafica per l'automatizzazione di campagne Anno Accademico 2010/2011 relatore Ch.mo prof. Domenico Cotroneo correlatore Ing. Roberto Natella candidato
Il calcolatore. Architettura di un calcolatore (Hardware)
Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti
Software Testing. Esercizi proposti. Esercizi di Testing 1
Software Testing Esercizi proposti Esercizi di Testing 1 Esercizi proposti Una delle prove obbligatorie per sostenere l esame di Ingegneria del Software 2 è lo svolgimento di un esercizio pratico di testing
14. Verifica e Validazione
14. Verifica e Validazione Come assicurarsi che il software corrisponda alle necessità dell utente? Introdurremo i concetti di verifica e validazione Descriveremo le fasi del processo di testing Parleremo
Strumenti per l automazione del testing di applicazioni web Javascript-based
tesi di laurea Strumenti per l automazione del testing di applicazioni web Javascript-based Anno Accademico 2005/2006 relatore Ch.mo prof. Porfirio Tramontana 1 candidato Salvatore Agnello Matr. 41/2612
Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica
Corso di Laurea in Matematica Seminario C/C++ Costa Università degli Studi di Milano Dipartimento di Matematica 19 Ottobre 2011 Cos'é un'ide IDE = Integrated Development Environment Consiste in: Editor
SIMULAZIONE DISCRETA
SIMULAZIONE DISCRETA Prof. Michele Colajanni Corso di Impianti di Elaborazione Ingegneria Informatica Università di Modena e Reggio Emilia Origini della Simulazione Discreta Nata nell ambito della ricerca
CAPITOLO 1 Introduzione
Douglas C. Montgomery Progettazione e analisi degli esperimenti 2006 McGraw-Hill CAPITOLO 1 Introduzione Metodi statistici e probabilistici per l ingegneria Corso di Laurea in Ingegneria Civile A.A. 2009-10
Valutazione sperimentale di tecniche di testing per software in relazione ai tipi di guasti
tesi di laurea Valutazione sperimentale di tecniche di testing per software Anno Accademico 2008/2009 relatore Ch.mo prof. Stefano Russo correlatore Ing. Roberto Pietrantuono candidato Giuseppe Scafuti
Capitolo I1: Laboratorio con DevC++
1. Introduzione DevC++ è un ambiente di sviluppo integrato (IDE, ovvero Integrated Development Environment) che permette di scrivere e verificare programmi in linguaggio C o C++, sia in modalità Windows
STORIA E CARATTERISTICHE
IL LINGUAGGIO C STORIA E CARATTERISTICHE STORIA E VERSIONI Sviluppato da Dennis Ritchie ai Bell Labs nel 1972 per realizzare il sistema operativo UNIX K&R C: 1978 (prima versione, K&R dal nome degli autori
Il PROCESSO UNIFICATO
Corsi di laurea triennale in Ingegneria Informatica Corso di Ingegneria del software Il PROCESSO UNIFICATO Modellazione ed Implementazione di un Sistema Software per la gestione informatizzata di un ristorante
Sistemi di simulazione cinematica e dinamica per la progettazione meccanica
REL. :PERONI PAOLO DOTTORATO XXI CICLO PRIMO ANNO 23/10/06 Sistemi di simulazione cinematica e dinamica per la progettazione meccanica PROGETTAZIONE DI MACCHINE AUTOMATICHE CARATTERISTICHE DIMENSIONALI
Ingegneria del Software 1: Eclipse
Ingegneria del Software 1: Eclipse Da completare entro Marzo 15, 2016 S. Krstić and M. Scavuzzo and F. Marconi and A. Rizzi and C. Menghi 1 Contents 1 Introduzione 3 1.1 Java (JRE vs JDK)..........................................
Materiale didattico. Sommario
Diploma Universitario in Ingegneria Informatica Corso di Ingegneria del Software Docente: ing. Anna Rita Fasolino Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II
Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 1 Cristian Del Fabbro Reperibilità homepage corso: https://users.dimi.uniud.it/~cristian.delfabbro/teaching.php email: [email protected] telefono: 0432 558676
Mathcad Prime 2.0 Guida al curriculum
Mathcad Prime 2.0 Guida al curriculum Guida al curriculum Corsi in aula tradizionale Mathcad Prime 2.0 - Nozioni fondamentali Mathcad Prime 2.0 - Nozioni fondamentali Panoramica Codice del corso TRN 3431
Nell ambito quindi di un ulteriore potenziamento della propria struttura, Klopotek Software & Technology Services S.r.l.
Frontend Developer Rif. FD All interno di un ambiente internazionale, la risorsa, riportando direttamente al Development Manager, farà parte del team dedicato al disegno ed all implementazione della nuova
Lab 4: Design Patterns
Dept. of Computer Science Lab 4: Design Patterns Matteo Camilli [email protected] http://camilli.di.unimi.it Progettazione del Software a.a. 2014/15 1 La Saga delle Anatre 1) Creiamo interfaccia
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ò
Concetti principale della lezione precedente
Corso di Statistica medica e applicata 9 a Lezione Dott.ssa Donatella Cocca Concetti principale della lezione precedente I concetti principali che sono stati presentati sono: Variabili su scala nominale
Approccio Meccatronico alla progettazione. Ing. Roberto Loce Solution Architect Motion Control Rockwell Automation
Approccio Meccatronico alla progettazione Ing. Roberto Loce Solution Architect Motion Control Rockwell Automation Una moderna macchina automatica è un sistema meccatronico Meccanica Organi di trasmissione
3. Ciclo di Vita e Processi di Sviluppo
3. Ciclo di Vita e Processi di Sviluppo come posso procedere nello sviluppo? Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 3. Ciclo di Vita e Processi di
CAMPIONAMENTO - ALCUNI TERMINI CHIAVE
CAMPIONAMENTO - ALCUNI TERMINI CHIAVE POPOLAZIONE = qualsiasi insieme di oggetti (unità di analisi) di ricerca N = ampiezza della popolazione PARAMETRI = caratteristiche della popolazione [media, proporzione
Laboratorio di Progettazione di Sistemi Software Design Patterns
TITLE Laboratorio di Progettazione di Sistemi Software Design Patterns Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Tipi di Design Patterns Creazionali Strutturali Comportamentali
Tirocinio Esterno - Dipartimento di Informatica
Tirocinio Esterno - Dipartimento di Informatica AZIENDA / ENTE OSPITANTE Prof.ssa Monica Sebillo Legambiente / Dip Architettura Napoli Via Forno Vecchio, Napoli Dott.ssa Emanuela Coppola Basi Dati e Sistemi
Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione
Informatica 3 LEZIONE 1: Introduzione Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Informatica 3 Lezione 1- Modulo 1 Introduzione al corso Introduzione Corso di Informatica 3
Verifica e Validazione del Software
Verifica e Validazione del Software Testing processes Ingegneria del Software 2 Testing Processes 1 Riferimenti Ian Sommerville, Ingegneria del Software, capitoli 22-23-24 (più dettagliato sui processi)
Sviluppo di un applicazione di front-end per il monitoraggio di un Isola Ecologica
Sviluppo di un applicazione di front-end per il monitoraggio di un Isola Ecologica Candidato: Lorenzo D Eri Relatore: Prof. Sergio Carrato Correlatore: Ing. Vojko Croselli 2 dicembre 2015 Università degli
Gestione dello sviluppo software Modelli Base
Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione GESTIONE DEI SISTEMI ICT Paolo Salvaneschi A4_1 V1.0 Gestione dello sviluppo software Modelli Base Il contenuto
Giovanni A. Cignoni 1
Simulazione software di sistemi dinamici Simulazione Lezione n. 2 Corso di Laurea in Informatica Applicata Università di Pisa, sede di La Spezia Giovanni A. Cignoni Simulazione www.di.unipi.it/~giovanni
Progettazione di un cruscotto di analisi dei difetti dei componenti in sistemi software large-scale
tesi di laurea magistrale Progettazione di un cruscotto di analisi dei difetti dei componenti in sistemi Anno Accademico 2013/2014 relatore Ch.mo Prof. Stefano Russo correlatore Ch.mo Prof. Roberto Pietrantuono
Ingegneria del Software
Ingegneria del Software Introduzione e Concetti Fondamentali Porfirio Tramontana, 2009 Corso di Ingegneria del Software Slide 1 Riferimenti Ian Sommerville, Ingegneria del Software, Capitolo 1 Porfirio
